ݺߣ

ݺߣShare a Scribd company logo
Gradle
Новый уровень
автоматизации для
Android
Обо мне
• Антон Руткевич
• Android developer
• Яндекс

• Google Developer Group Minsk
Проблемы сборки
(до Gradle)
Несколько слабо совместимых
вариантов сборки
• Eclipse
• IntelliJ IDEA
• Ant

• Maven
• Свой велосипед
Сложное управление
зависимостями
• Jar
• Library project
• Apklib
Тяжело сгенерировать несколько
вариантов приложения
• С логами / без логов
• Тестовые / продакшн переменные
• Несколько похожих apk
Что такое Gradle?
Система автоматизации
Основной функционал –
в плагинах
Основные идеи
Скрипт сборки – это код
• Язык – Groovy
•

Java +
•
•
•
•
•

Динамическая типизация
Замыкания
Встроенные в язык коллекции
Много синтаксического сахара
….

• Файл – build.gradle
Задачи (Tasks)
• Конфигурируются
• Состоят из действий
• Выстраиваются в цепочки
зависимостей
Задачи сборки Android
• assemble
• check
• build = assemble + check
Hello world!
task hello << {
println 'Hello world!'
}
> gradle hello
Hello world!
Управление зависимостями
Основы
• Maven, Ivy – артефакты
•

Удаленные и локальные

• Локальные файлы
•
•

Jar
Другие gradle-проекты
Android-style
+ aar
• Android – проект с ресурсами
• Только как артефакт, но

можно установить локально
Hello dependency!
repositories {
mavenCentral()
}
dependencies {
compile 'com.google.code.gson:gson:2.2.4'
compile files('libs')
compile project(':libraryProjectName')
}
Hello Android dependency!
repositories {
mavenCentral()
}
dependencies {
compile
'com.actionbarcherlock:actionbarsherlock:4.4.0@aar'
}
Варианты сборки
Конфигурации сборки
• Пример: debug / release
• Могут иметь свои
•
•
•
•

Зависимости
Особые шаги
Наборы ресурсов
Особые настройки
Типы сборки (Build types)
• По умолчанию
•
•

debug
release

• Что можно настроить
•
•
•
•

packageNameSuffix
BuildConfig.java
Свои ресурсы/код
Другие параметры
Особенности сборки
(Build flavors)
• Способ легко генерировать
несколько похожих apk
• Примеры использования
•
•
•

Платное / бесплатное
Видеокарты - Tegra / Qualcomm / PowerVR
Другие особенности приложений, для
которых был введен multiple apk
Варианты сборки
(Build variants)
Особенность

Вариант

Free

FreeDebug

FreeRelease

Paid

PaidDebug

PaidRelease

Тип
Debug

Release
Наборы ресурсов (Source sets)
src/

main/
java/
resources/
…
config1/
config2/
Структура Android проекта
src/

main/
java/
res/
…
AndroidManifest.xml
Наборы ресурсов для типов и
вариантов сборки
src/
main/
release/
debug/
free/
paid/
Построение варианта сборки

main

free

debug
Особенности
использования
Ant
• Отличная интеграция
• Возможность поэтапного
перехода с Ant на Gradle
Дополнительные плагины
• Стандартные
•
•

Плагины дистрибуции
Вспомогательные плагины

• 3rd-party
•

Плагины конкретных библиотек

• Custom plugins
•

плагины для автоматизации внутренних
процессов в компании
Использование с системами
непрерывной интеграции
• Передача параметров для сборки
из CI в build.gradle
• Дополнительные действия при
сборке с помощью CI
Недостатки
Сложность
• Groovy не всегда очевиден
• Иногда сложно найти, как
достучаться до определенного
параметра сборки
Отсутствие поддержки NDK
Отсутствует в версии 0.63
Решение:

a) ждать интеграции (базовая
версия будет в 0.70)
b) сделать самому
Ограниченность библиотечных
проектов
• Нет возможности реализовывать
flavors
• При подключении к другим
проектам всегда собираются в
release версии библиотек
Версия начинается с 0
• Все еще бета (альфа?)
• Не все еще реализовано
• Баги
Когда стоит
использовать
Gradle?
Когда …
• … проекты небольшие
• … проекты большие, и есть
возможность выделить время

• … процесс сборки сложный
• … нужно собирать несколько apk
• … используются системы CI
Ресурсы
Код
Open source
• Gradle
•

https://github.com/gradle/gradle

• Gradle-android-plugin
•

http://tools.android.com/build/gradleplugin

• Sample project
•

https://github.com/roottony/gdg-minskgradle-sample
Информация
• gradle.org
•

http://www.gradle.org

• Gradle Plugin User Guide
•

http://tools.android.com/tech-docs/newbuild-system/user-guide

• adt-dev – Google Groups
•

https://groups.google.com/forum/#!forum/ad
t-dev
Спасибо за внимание!
Вопросы?
anton.rutkevich@gmail.com
http://www.linkedin.com/in/antonrutkevich

GDG Minsk BY
https://plus.google.com/u/1/communities/
112573540938850912460

More Related Content

Gradle. Новый уровень автоматизации для Android