android - 06 - gradle

25
Gradle Степанов Павел Android Internship 2014

Upload: noveo

Post on 23-Jun-2015

313 views

Category:

Technology


0 download

DESCRIPTION

Gradle for Android developers

TRANSCRIPT

Page 1: Android - 06 - Gradle

Gradle

Степанов Павел

Android Internship 2014

Page 2: Android - 06 - Gradle

Система автоматической сборки Gradle

Системы автоматической сборки

• Сборка на разных платформах– Windows– Linux

• Ускорение сборки• Управление зависимостями проекта• Автоматическое создание:

– JavaDoc– Web-страниц проекта– Отчетов о тестировании

• Непрерывная интеграция– Автоматизация сборки– Автоматизированное тестирование

Page 3: Android - 06 - Gradle

Система автоматической сборки Gradle

Apache Ant

• XML-сценарий сборки build.xml• Императивная настройка сборки• Проект состоит из целей (target)• Цели могут зависеть друг от друга• Цели состоят из вызовов задач (task)

Page 4: Android - 06 - Gradle

Система автоматической сборки Gradle

Apache Ant

Page 5: Android - 06 - Gradle

Система автоматической сборки Gradle

Apache Maven

• XML-сценарий сборки pom.xml• Декларативная настройка сборки проекта• Стандартная структура директорий• Maven-репозиторий• Управление зависимостями• Жизненный цикл проекта (clean, compile,

test, package, install, deploy)• Плагины для сборки проекта

Page 6: Android - 06 - Gradle

Система автоматической сборки Gradle

Apache Maven

Page 7: Android - 06 - Gradle

Система автоматической сборки Gradle

Системы автоматической сборки

Ant Maven Gradle

Page 8: Android - 06 - Gradle

Система автоматической сборки Gradle

Gradle• Основан на языке Groovy

– Статическая и динамическая типизация– Замыкания– Перегрузка операций– Улучшенный синтаксис Java

• Полноценный DSL• Направленный ациклический граф задач• Встроенная поддержка задач Apache Ant• Императивное описание задачи• Интеграция с Maven-репозиторием• Стандартная структура директорий• Плагины для сборки проекта, настраиваемые декларативно• Gradle Daemon, Wrapper

Page 9: Android - 06 - Gradle

Система автоматической сборки Gradle

Gradle

Page 10: Android - 06 - Gradle

Система автоматической сборки Gradle

Структура директорий

build/

src/ main/

java/

resources/

build.gradle

Page 11: Android - 06 - 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

Page 12: Android - 06 - Gradle

Система автоматической сборки 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 – список модулей проекта

Page 13: Android - 06 - 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

Page 14: Android - 06 - Gradle

Система автоматической сборки 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.

Page 15: Android - 06 - Gradle

Система автоматической сборки Gradle

./build.gradle

buildscript {repositories { jcenter() }dependencies {

classpath 'com.android.tools.build:gradle:0.12.+'}

}

allprojects {repositories {

jcenter()}

}

Page 16: Android - 06 - Gradle

Система автоматической сборки Gradle

./build.gradle

• buildscript – настройка build-скрипта Gradle– repositories – откуда нужно качать зависимости.– dependencies – какие зависимости нужны. В данном случае

нужен только Gradle-плагин для сборки Android-проектов.– Этот плагин для сборки регистрируется как зависимость

build-скрипта. Для этого указывается его группа – ‘com.android.tools.build’, идентификатор в группе – ‘gradle’ и желаемая версия – ‘0.12.+’.

• allprojects – настройки для всех проектов (т.е. для каждого модуля)– repositories – чтобы не указывать в каждом модуле, что его

зависимости можно скачивать из стандартного репозитория jCentral.

Page 17: Android - 06 - Gradle

Система автоматической сборки Gradle

./settings.gradle

include ‘:app’

Page 18: Android - 06 - Gradle

Система автоматической сборки 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’])

}

Page 19: Android - 06 - Gradle

Система автоматической сборки Gradle

./app/build.gradle

• apply – применяет к проекту заданный плагин для сборки. Этот плагин добавляет задачи для сборки, такие как clean, assemble, build, install и другие. В данном случае применяется плагин ‘com.android.application’.

• android – эта секция содержит настройки для плагина Android.– compileSdkVersion – версия SDK для компиляции– buildToolsVersion – версия утилит для сборки APK– defaultConfig – дополнительные параметры: ID, версия,

minSdkVersion, targetSdkVersion и т. д.• dependencies – список зависимостей проекта-модуля.

Page 20: Android - 06 - Gradle

Система автоматической сборки 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’])

}

Page 21: Android - 06 - Gradle

Система автоматической сборки Gradle

Dependencies

• compile fileTree(dir: ‘libs’, include: [‘*.jar’])• compile project(‘:mylibrary’)• compile ‘com.squareup.picasso:picasso:2.3.2’

Page 22: Android - 06 - Gradle

Система автоматической сборки Gradle

Build variants

Build type Product flavor

Build variant

Page 23: Android - 06 - Gradle

Система автоматической сборки Gradle

Build variants

• src/main• src/<buildType>

– src/debug– src/release

• src/<flavorName>– src/demo– src/full

Page 24: Android - 06 - Gradle

Система автоматической сборки Gradle

Build variantsandroid {

defaultConfig { … }buildTypes { … }productFlavors {

demo {applicationId ‘com.application.demo’versionName ‘1.0-demo’

}full {

applicationId ‘com.application.full’versionName ‘1.0-full’

}}

}

Page 25: Android - 06 - Gradle

Конец

Система автоматической сборки Gradle