SlideShare 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-проекты
Управление зависимостями
+ 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?
Когда …
• … проекты небольшие
• … проекты большие, и есть
возможность выделить время

• … процесс сборки сложный
• … нужно унифицировать сборку
• … используются системы 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

PDF
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
GeeksLab Odessa
 
PDF
Иван Крутов - Автоматизация сборки Java-проекта
Yandex
 
PPTX
Gradle. Новый уровень автоматизации для Android
Anton Rutkevich
 
PPTX
Мастер класс- Maven + Jenkins
Valentin Fedoskin
 
PDF
Android - 06 - Gradle
Noveo
 
PDF
Введение в maven
Dmitry Zinushin
 
PPTX
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
SQALab
 
PPTX
Cистемы автоматической сборки проектов (Полина Фоминых)
Кафедра высокопроизводительных компьютерных технологий ИМКН УрФУ
 
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
GeeksLab Odessa
 
Иван Крутов - Автоматизация сборки Java-проекта
Yandex
 
Gradle. Новый уровень автоматизации для Android
Anton Rutkevich
 
Мастер класс- Maven + Jenkins
Valentin Fedoskin
 
Android - 06 - Gradle
Noveo
 
Введение в maven
Dmitry Zinushin
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
SQALab
 
Cистемы автоматической сборки проектов (Полина Фоминых)
Кафедра высокопроизводительных компьютерных технологий ИМКН УрФУ
 

What's hot (20)

PPTX
Docker + Selenium Webdriver в рамках Continuous Integration
SQALab
 
PDF
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
SQALab
 
PDF
Winium — это как Selenium, только под Windows
SQALab
 
PDF
Тестируем мобильное приложение в суровых реалиях Интернета
SQALab
 
PDF
Javaone 2013 moscow gradle
Evgeny Borisov
 
PPTX
Maven 3 : уличная магия
Aleksey Solntsev
 
PDF
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
IT Event
 
PDF
JavaScript завтра / Сергей Рубанов (Exante Limited)
Ontico
 
PDF
UICov - инструмент анализа покрытия UI-тестами
SQALab
 
PPTX
Разработка веб-приложений с помощью TypeScript
Stas Vyschepan
 
PPTX
Codeception + Docker + Robo и что из этого вышло
COMAQA.BY
 
PDF
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Alex Mikitenko
 
PDF
Денис Паясь
CodeFest
 
PDF
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
MoscowJS
 
PPTX
Никита Галкин "Testing in Node.js World"
Fwdays
 
PPTX
WebdriverIO + Puppeteer. Double gun – double fun
Alexandr Khotemskoy
 
PPTX
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
Fwdays
 
PDF
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
Fwdays
 
PDF
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
CEE-SEC(R)
 
Docker + Selenium Webdriver в рамках Continuous Integration
SQALab
 
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
SQALab
 
Winium — это как Selenium, только под Windows
SQALab
 
Тестируем мобильное приложение в суровых реалиях Интернета
SQALab
 
Javaone 2013 moscow gradle
Evgeny Borisov
 
Maven 3 : уличная магия
Aleksey Solntsev
 
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
IT Event
 
JavaScript завтра / Сергей Рубанов (Exante Limited)
Ontico
 
UICov - инструмент анализа покрытия UI-тестами
SQALab
 
Разработка веб-приложений с помощью TypeScript
Stas Vyschepan
 
Codeception + Docker + Robo и что из этого вышло
COMAQA.BY
 
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Alex Mikitenko
 
Денис Паясь
CodeFest
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
MoscowJS
 
Никита Галкин "Testing in Node.js World"
Fwdays
 
WebdriverIO + Puppeteer. Double gun – double fun
Alexandr Khotemskoy
 
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
Fwdays
 
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
Fwdays
 
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
CEE-SEC(R)
 
Ad

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

PDF
Юрий Василевский "Автоматизация в XCode"
Yandex
 
PDF
Юрий Василевский «Автоматизация в XCode»
Yandex
 
PPTX
Gitlab devconf
Andrey Kumanyaev
 
PDF
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
Provectus
 
PDF
Unity: "Очевидное-невероятное” или хитрости разработки на Unity Android
DevGAMM Conference
 
PPTX
Кирилл Комлев. О реализации continuous integration для web проектов
Olesya_V
 
PDF
Корпоративное приложение на Rails
Andrei Kaleshka
 
PPTX
Go для веба глазами PHP-разработчика
UP2IT
 
PDF
"Девопс - это не только для программистов. Практические примеры из жизни одно...
it-people
 
PPTX
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Ontico
 
PDF
Java cloud platforms. jee conf 2012
Yuriy Ryashko
 
PDF
Java cloud platforms. jee conf 2012
Yuriy Ryashko
 
PPTX
Test Driven Development in .NET Applications
Anton Vidishchev
 
PPTX
Лучшие практики на практике
Denis Tuchin
 
PPTX
Типовая сборка и деплой продуктов в Positive Technologies
Positive Hack Days
 
PDF
Тестирование весна 2013 лекция 5
Technopark
 
PPT
Инструменты разработки ПО в *nix
Alexander Gerasiov
 
PPTX
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
DevGAMM Conference
 
PPT
Владимир Никонов "Вызовы при разработке enterprise продукта"
Fwdays
 
PDF
DevOps guide for awesome quality assurance
Анастасия Асеева
 
Юрий Василевский "Автоматизация в XCode"
Yandex
 
Юрий Василевский «Автоматизация в XCode»
Yandex
 
Gitlab devconf
Andrey Kumanyaev
 
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
Provectus
 
Unity: "Очевидное-невероятное” или хитрости разработки на Unity Android
DevGAMM Conference
 
Кирилл Комлев. О реализации continuous integration для web проектов
Olesya_V
 
Корпоративное приложение на Rails
Andrei Kaleshka
 
Go для веба глазами PHP-разработчика
UP2IT
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
it-people
 
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Ontico
 
Java cloud platforms. jee conf 2012
Yuriy Ryashko
 
Java cloud platforms. jee conf 2012
Yuriy Ryashko
 
Test Driven Development in .NET Applications
Anton Vidishchev
 
Лучшие практики на практике
Denis Tuchin
 
Типовая сборка и деплой продуктов в Positive Technologies
Positive Hack Days
 
Тестирование весна 2013 лекция 5
Technopark
 
Инструменты разработки ПО в *nix
Alexander Gerasiov
 
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
DevGAMM Conference
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Fwdays
 
DevOps guide for awesome quality assurance
Анастасия Асеева
 
Ad

More from SQALab (20)

PDF
Готовим стажировку
SQALab
 
PPTX
Куда приводят мечты? или Искусство развития тестировщика
SQALab
 
PPT
Оптимизация Selenium тестов и ускорение их поддержки
SQALab
 
PPT
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
SQALab
 
PPTX
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
SQALab
 
PPTX
Continuous performance testing
SQALab
 
PDF
Конфиги вместо костылей. Pytestconfig и зачем он нужен
SQALab
 
PPT
Команда чемпионов в ИТ стихии
SQALab
 
PPTX
API. Серебряная пуля в магазине советов
SQALab
 
PPTX
Добиваемся эффективности каждого из 9000+ UI-тестов
SQALab
 
PPT
Делаем автоматизацию проектных KPIs
SQALab
 
PDF
Вредные привычки в тест-менеджменте
SQALab
 
PPTX
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
SQALab
 
PPT
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
SQALab
 
PPTX
Стили лидерства и тестирование
SQALab
 
PPT
"Давайте не будем про качество"
SQALab
 
PDF
Apache.JMeter для .NET-проектов
SQALab
 
PPTX
Тестирование геолокационных систем
SQALab
 
PPTX
Лидер или босс? Вот в чем вопрос
SQALab
 
PPTX
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
SQALab
 
Готовим стажировку
SQALab
 
Куда приводят мечты? или Искусство развития тестировщика
SQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
SQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
SQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
SQALab
 
Continuous performance testing
SQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
SQALab
 
Команда чемпионов в ИТ стихии
SQALab
 
API. Серебряная пуля в магазине советов
SQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
SQALab
 
Делаем автоматизацию проектных KPIs
SQALab
 
Вредные привычки в тест-менеджменте
SQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
SQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
SQALab
 
Стили лидерства и тестирование
SQALab
 
"Давайте не будем про качество"
SQALab
 
Apache.JMeter для .NET-проектов
SQALab
 
Тестирование геолокационных систем
SQALab
 
Лидер или босс? Вот в чем вопрос
SQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
SQALab
 

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