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

5,352 views

Published on

Доклад Антон Руткевича на конференции Application Developer Days-4. г.Минск 13 декабря 2013

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,352
On SlideShare
0
From Embeds
0
Number of Embeds
225
Actions
Shares
0
Downloads
28
Comments
0
Likes
2
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. Управление зависимостями • Maven, Ivy – артефакты • Удаленные и локальные • Локальные файлы • • Jar Другие gradle-проекты
  16. 16. Управление зависимостями + aar • Android – проект с ресурсами • Только как артефакт, но можно установить локально
  17. 17. Hello dependency! repositories { mavenCentral() } dependencies { compile 'com.google.code.gson:gson:2.2.4' compile files('libs') compile project(':libraryProjectName') }
  18. 18. Hello Android dependency! repositories { mavenCentral() } dependencies { compile 'com.actionbarcherlock:actionbarsherlock:4.4.0@aar' }
  19. 19. Конфигурации сборки • Пример: debug / release • Могут иметь свои • • • • Зависимости Особые шаги Наборы ресурсов Особые настройки
  20. 20. Типы сборки (Build types) • По умолчанию • • debug release • Что можно настроить • • • • packageNameSuffix BuildConfig.java Свои ресурсы/код Другие параметры
  21. 21. Особенности сборки (Build flavors) • Способ легко генерировать несколько похожих apk • Примеры использования • • • Платное / бесплатное Видеокарты - Tegra / Qualcomm / PowerVR Другие особенности приложений, для которых был введен multiple apk
  22. 22. Варианты сборки (Build variants) Особенность Вариант Free FreeDebug FreeRelease Paid PaidDebug PaidRelease Тип Debug Release
  23. 23. Наборы ресурсов (Source sets) src/ main/ java/ resources/ … config1/ config2/
  24. 24. Структура Android проекта src/ main/ java/ res/ … AndroidManifest.xml
  25. 25. Наборы ресурсов для типов и вариантов сборки src/ main/ release/ debug/ free/ paid/
  26. 26. Построение варианта сборки main free debug
  27. 27. Особенности использования
  28. 28. Ant • Отличная интеграция • Возможность поэтапного перехода с Ant на Gradle
  29. 29. Дополнительные плагины • Стандартные • • Плагины дистрибуции Вспомогательные плагины • 3rd-party • Плагины конкретных библиотек • Custom plugins • плагины для автоматизации внутренних процессов в компании
  30. 30. Использование с системами непрерывной интеграции • Передача параметров для сборки из CI в build.gradle • Дополнительные действия при сборке с помощью CI
  31. 31. Недостатки
  32. 32. Сложность • Groovy не всегда очевиден • Иногда сложно найти, как достучаться до определенного параметра сборки
  33. 33. Отсутствие поддержки NDK Отсутствует в версии 0.63 Решение: a) ждать интеграции (базовая версия будет в 0.70) b) сделать самому
  34. 34. Ограниченность библиотечных проектов • Нет возможности реализовывать flavors • При подключении к другим проектам всегда собираются в release версии библиотек
  35. 35. Версия начинается с 0 • Все еще бета (альфа?) • Не все еще реализовано • Баги
  36. 36. Когда стоит использовать Gradle?
  37. 37. Когда … • … проекты небольшие • … проекты большие, и есть возможность выделить время • … процесс сборки сложный • … нужно унифицировать сборку • … используются системы CI
  38. 38. Ресурсы
  39. 39. Код 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
  40. 40. Информация • 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
  41. 41. Спасибо за внимание! Вопросы? anton.rutkevich@gmail.com http://www.linkedin.com/in/antonrutkevich GDG Minsk BY https://plus.google.com/u/1/communities/ 112573540938850912460

×