android - 06 - gradle

Post on 23-Jun-2015

313 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Gradle for Android developers

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