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

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

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

Java +
•
•
•
•
•

Динамическая типизация
Замыкания
Встроенные в язык коллекции
...
Задачи (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('...
Hello Android dependency!
repositories {
mavenCentral()
}
dependencies {
compile
'com.actionbarcherlock:actionbarsherlock:...
Варианты сборки
Конфигурации сборки
• Пример: debug / release
• Могут иметь свои
•
•
•
•

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

debug
release

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

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

Платно...
Варианты сборки
(Build variants)
Особенность

Вариант

Free

FreeDebug

FreeRelease

Paid

PaidDebug

PaidRelease

Тип
Deb...
Наборы ресурсов (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
•

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

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

• … процесс сборки сложный
• … нужно...
Ресурсы
Код
Open source
• Gradle
•

https://github.com/gradle/gradle

• Gradle-android-plugin
•

http://tools.android.com/build/gr...
Информация
• gradle.org
•

http://www.gradle.org

• Gradle Plugin User Guide
•

http://tools.android.com/tech-docs/newbuil...
Спасибо за внимание!
Вопросы?
anton.rutkevich@gmail.com
http://www.linkedin.com/in/antonrutkevich

GDG Minsk BY
https://pl...
Upcoming SlideShare
Loading in...5
×

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

375

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
375
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Gradle Новый уровень автоматизации для Android
  2. 2. Обо мне • Антон Руткевич • Android developer • Яндекс • Google Developer Group Minsk
  3. 3. Проблемы сборки (до Gradle)
  4. 4. Несколько слабо совместимых вариантов сборки • Eclipse • IntelliJ IDEA • Ant • Maven • Свой велосипед
  5. 5. Сложное управление зависимостями • Jar • Library project • Apklib
  6. 6. Тяжело сгенерировать несколько вариантов приложения • С логами / без логов • Тестовые / продакшн переменные • Несколько похожих apk
  7. 7. Что такое Gradle?
  8. 8. Система автоматизации
  9. 9. Основной функционал – в плагинах
  10. 10. Основные идеи
  11. 11. Скрипт сборки – это код • Язык – Groovy • Java + • • • • • Динамическая типизация Замыкания Встроенные в язык коллекции Много синтаксического сахара …. • Файл – build.gradle
  12. 12. Задачи (Tasks) • Конфигурируются • Состоят из действий • Выстраиваются в цепочки зависимостей
  13. 13. Задачи сборки Android • assemble • check • build = assemble + check
  14. 14. Hello world! task hello << { println 'Hello world!' } > gradle hello Hello world!
  15. 15. Управление зависимостями
  16. 16. Основы • Maven, Ivy – артефакты • Удаленные и локальные • Локальные файлы • • Jar Другие gradle-проекты
  17. 17. Android-style + aar • Android – проект с ресурсами • Только как артефакт, но можно установить локально
  18. 18. Hello dependency! repositories { mavenCentral() } dependencies { compile 'com.google.code.gson:gson:2.2.4' compile files('libs') compile project(':libraryProjectName') }
  19. 19. Hello Android dependency! repositories { mavenCentral() } dependencies { compile 'com.actionbarcherlock:actionbarsherlock:4.4.0@aar' }
  20. 20. Варианты сборки
  21. 21. Конфигурации сборки • Пример: debug / release • Могут иметь свои • • • • Зависимости Особые шаги Наборы ресурсов Особые настройки
  22. 22. Типы сборки (Build types) • По умолчанию • • debug release • Что можно настроить • • • • packageNameSuffix BuildConfig.java Свои ресурсы/код Другие параметры
  23. 23. Особенности сборки (Build flavors) • Способ легко генерировать несколько похожих apk • Примеры использования • • • Платное / бесплатное Видеокарты - Tegra / Qualcomm / PowerVR Другие особенности приложений, для которых был введен multiple apk
  24. 24. Варианты сборки (Build variants) Особенность Вариант Free FreeDebug FreeRelease Paid PaidDebug PaidRelease Тип Debug Release
  25. 25. Наборы ресурсов (Source sets) src/ main/ java/ resources/ … config1/ config2/
  26. 26. Структура Android проекта src/ main/ java/ res/ … AndroidManifest.xml
  27. 27. Наборы ресурсов для типов и вариантов сборки src/ main/ release/ debug/ free/ paid/
  28. 28. Построение варианта сборки main free debug
  29. 29. Особенности использования
  30. 30. Ant • Отличная интеграция • Возможность поэтапного перехода с Ant на Gradle
  31. 31. Дополнительные плагины • Стандартные • • Плагины дистрибуции Вспомогательные плагины • 3rd-party • Плагины конкретных библиотек • Custom plugins • плагины для автоматизации внутренних процессов в компании
  32. 32. Использование с системами непрерывной интеграции • Передача параметров для сборки из CI в build.gradle • Дополнительные действия при сборке с помощью CI
  33. 33. Недостатки
  34. 34. Сложность • Groovy не всегда очевиден • Иногда сложно найти, как достучаться до определенного параметра сборки
  35. 35. Отсутствие поддержки NDK Отсутствует в версии 0.63 Решение: a) ждать интеграции (базовая версия будет в 0.70) b) сделать самому
  36. 36. Ограниченность библиотечных проектов • Нет возможности реализовывать flavors • При подключении к другим проектам всегда собираются в release версии библиотек
  37. 37. Версия начинается с 0 • Все еще бета (альфа?) • Не все еще реализовано • Баги
  38. 38. Когда стоит использовать Gradle?
  39. 39. Когда … • … проекты небольшие • … проекты большие, и есть возможность выделить время • … процесс сборки сложный • … нужно собирать несколько apk • … используются системы CI
  40. 40. Ресурсы
  41. 41. Код 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
  42. 42. Информация • 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
  43. 43. Спасибо за внимание! Вопросы? anton.rutkevich@gmail.com http://www.linkedin.com/in/antonrutkevich GDG Minsk BY https://plus.google.com/u/1/communities/ 112573540938850912460
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×