android - 06 - gradle
Post on 23-Jun-2015
330 Views
Preview:
DESCRIPTION
TRANSCRIPT
Gradle
Степанов Павел
Android Internship 2014
Система автоматической сборки Gradle
Системы автоматической сборки
• Сборка на разных платформах– Windows– Linux
• Ускорение сборки• Управление зависимостями проекта• Автоматическое создание:
– JavaDoc– Web-страниц проекта– Отчетов о тестировании
• Непрерывная интеграция– Автоматизация сборки– Автоматизированное тестирование
Система автоматической сборки Gradle
Apache Ant
• XML-сценарий сборки build.xml• Императивная настройка сборки• Проект состоит из целей (target)• Цели могут зависеть друг от друга• Цели состоят из вызовов задач (task)
Система автоматической сборки Gradle
Apache Ant
Система автоматической сборки Gradle
Apache Maven
• XML-сценарий сборки pom.xml• Декларативная настройка сборки проекта• Стандартная структура директорий• Maven-репозиторий• Управление зависимостями• Жизненный цикл проекта (clean, compile,
test, package, install, deploy)• Плагины для сборки проекта
Система автоматической сборки Gradle
Apache Maven
Система автоматической сборки Gradle
Системы автоматической сборки
Ant Maven Gradle
Система автоматической сборки Gradle
Gradle• Основан на языке Groovy
– Статическая и динамическая типизация– Замыкания– Перегрузка операций– Улучшенный синтаксис Java
• Полноценный DSL• Направленный ациклический граф задач• Встроенная поддержка задач Apache Ant• Императивное описание задачи• Интеграция с Maven-репозиторием• Стандартная структура директорий• Плагины для сборки проекта, настраиваемые декларативно• Gradle Daemon, Wrapper
Система автоматической сборки Gradle
Gradle
Система автоматической сборки Gradle
Структура директорий
build/
src/ main/
java/
resources/
build.gradle
Система автоматической сборки Gradle
Структура директорий Android
• app/• gradle/
– wrapper/• gradle-wrapper.jar• gradle-wrapper.properties
– .gitignore– build.gradle– gradlew– gradlew.bat– local.properties– settings.gradle
• app/– build/– libs/– src/
• main/– java/– res/– AndroidManifest.xml
– .gitignore– build.gradle– proguard.pro
Система автоматической сборки Gradle
Структура директорий Android
• app/ – директория модуля• gradle/ – вспомогательная директория Gradle• gradle/wrapper/ – файлы Gradle Wrapper• .gitignore –список файлов, игнорируемых Git• build.gradle – build-скрипт Gradle• gradlew, gradlew.bat – файлы Gradle Wrapper• local.properties – путь до Android SDK• settings.gradle – список модулей проекта
Система автоматической сборки Gradle
Структура директорий Android
• app/build/ - директория для хранения результатов сборки
• app/libs/ – библиотеки• app/src/ – исходный код проекта• app/src/main/java – Java-классы• app/src/main/res – ресурсы• app/src/main/AndroidManifest.xml – файл Android
Manifest• app/.gitignore –список файлов, игнорируемых Git• app/build.gradle – build-скрипт Gradle• app/proguard.pro – файл настройки ProGuard
Система автоматической сборки Gradle
Build Script
• allprojects {}– Configures this project and each of its sub-projects.
• buildscript {}– Configures the build script classpath for this
project.
• repositories {}– Configures the repositories for this project.
• dependencies {}– Configures the dependencies for this project.
Система автоматической сборки Gradle
./build.gradle
buildscript {repositories { jcenter() }dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'}
}
allprojects {repositories {
jcenter()}
}
Система автоматической сборки Gradle
./build.gradle
• buildscript – настройка build-скрипта Gradle– repositories – откуда нужно качать зависимости.– dependencies – какие зависимости нужны. В данном случае
нужен только Gradle-плагин для сборки Android-проектов.– Этот плагин для сборки регистрируется как зависимость
build-скрипта. Для этого указывается его группа – ‘com.android.tools.build’, идентификатор в группе – ‘gradle’ и желаемая версия – ‘0.12.+’.
• allprojects – настройки для всех проектов (т.е. для каждого модуля)– repositories – чтобы не указывать в каждом модуле, что его
зависимости можно скачивать из стандартного репозитория jCentral.
Система автоматической сборки Gradle
./settings.gradle
include ‘:app’
Система автоматической сборки Gradle
./app/build.gradle
apply plugin: ‘com.android.application’
android {compileSdkVersion 19buildToolsVersion ’20.0.0’
defaultConfig {applicationId ‘com.example.myapplication’minSdkVersion 14targetSdkVersion 19versionCode 1versionName ‘1.0’
}}
dependencies {compile fileTree(dir: ‘libs’, include: [‘*.jar’])
}
Система автоматической сборки Gradle
./app/build.gradle
• apply – применяет к проекту заданный плагин для сборки. Этот плагин добавляет задачи для сборки, такие как clean, assemble, build, install и другие. В данном случае применяется плагин ‘com.android.application’.
• android – эта секция содержит настройки для плагина Android.– compileSdkVersion – версия SDK для компиляции– buildToolsVersion – версия утилит для сборки APK– defaultConfig – дополнительные параметры: ID, версия,
minSdkVersion, targetSdkVersion и т. д.• dependencies – список зависимостей проекта-модуля.
Система автоматической сборки Gradle
Android Library Build
apply plugin: ‘com.android.library’
android {compileSdkVersion 19buildToolsVersion ’20.0.0’
defaultConfig {applicationId ‘com.mylibrary’minSdkVersion 14targetSdkVersion 19versionCode 1versionName ‘1.0’
}}
dependencies {compile fileTree(dir: ‘libs’, include: [‘*.jar’])
}
Система автоматической сборки Gradle
Dependencies
• compile fileTree(dir: ‘libs’, include: [‘*.jar’])• compile project(‘:mylibrary’)• compile ‘com.squareup.picasso:picasso:2.3.2’
Система автоматической сборки Gradle
Build variants
Build type Product flavor
Build variant
Система автоматической сборки Gradle
Build variants
• src/main• src/<buildType>
– src/debug– src/release
• src/<flavorName>– src/demo– src/full
Система автоматической сборки Gradle
Build variantsandroid {
defaultConfig { … }buildTypes { … }productFlavors {
demo {applicationId ‘com.application.demo’versionName ‘1.0-demo’
}full {
applicationId ‘com.application.full’versionName ‘1.0-full’
}}
}
Конец
Система автоматической сборки Gradle
top related