Gradle. Новый уровень автоматизации для Android
description
Transcript of Gradle. Новый уровень автоматизации для Android
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-проекты
Управление зависимостями
+ 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
Paid
ReleaseDebug
PaidDebug
FreeDebug FreeRelease
PaidRelease
Вариант
Наборы ресурсов (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?
Когда …
• … проекты небольшие
• … проекты большие, и есть
возможность выделить время
• … процесс сборки сложный
• … нужно унифицировать сборку
• … используются системы 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-minsk-
gradle-sample
Информация
• gradle.org
• http://www.gradle.org
• Gradle Plugin User Guide
• http://tools.android.com/tech-docs/new-
build-system/user-guide
• adt-dev – Google Groups
• https://groups.google.com/forum/#!forum/ad
t-dev
Спасибо за внимание!
Вопросы?
http://www.linkedin.com/in/antonrutkevich
https://plus.google.com/u/1/communities/
112573540938850912460
GDG Minsk BY