SlideShare a Scribd company logo
Сборка Android-приложений с помощью Gradle 
Любовь Поволоцкая lyubov.povolotskaya@dataart.com
Собираем android приложение 
•IDE (Eclipse, IntelliJ IDEA/Android Studio) 
•Ant 
•Maven 
•Gradle
Что нам дает Gradle для Android? 
•Groovy vs. XML 
•Возможность кастомизации процесса сборки 
•Build variants 
•Управление зависимостями 
•Поддержка Maven Central и Ivy 
•Конфигурация Manifest-файла для различных сборок 
•Android Signing Configuration 
•ProGuard 
•Тестирование
Android Plugin 
•Текущая версия 0.12.1 
•Поддержка Gradle 1.12
Подключаем android plugin 
buildscript { 
repositories { 
mavenCentral() 
} 
dependencies { 
classpath 'com.android.tools.build:gradle:0.12.+' 
} 
} 
apply plugin: 'com.android.application'
Структура проекта 
Source sets 
•src/main/ 
•src/androidTest/ 
Код и ресурсы 
•java/ 
•resources/ 
•AndroidManifest.xml 
•res/ 
•assets/ 
•aidl/ 
•rs/ 
•jni/
Dependencies 
•Зависимости от локальных библиотек 
compile fileTree(dir: 'libs', include: ['*.jar']) 
•Артефакты Maven и Ivy 
compile 'com.google.code.gson:gson:2.2.+ 
•Library projects 
compile project(':ViewPagerIndicator')
Build Types 
•debug 
•release 
•Кастомные типы сборок
Product Flavors 
defaultConfig { 
minSdkVersion 8 
versionCode 10 
} 
productFlavors { 
flavor1 { 
applicationId "com.example.flavor1" 
versionCode 20 
} 
flavor2 { 
applicationId "com.example.flavor2" 
minSdkVersion 14 
} 
}
Что мы можем настроить для различных типов сборок и flavors? 
•Поля класса BuildConfig 
flavour1{ 
applicationId "com.example.package" 
buildConfigField "String", "NAMESPACE", 
""$applicationId "" 
buildConfigField "String", "PROVIDER_AUTHORITY", "NAMESPACE" 
} 
•Конфигурация AndroidManifest (версия SDK, номер и имя версии приложения, пакет) 
defaultConfig { 
minSdkVersion 16 
targetSdkVersion 19 
versionCode 1 
versionName "0.9" 
}
Что мы можем настроить для различных типов сборок и flavors? 
•Настройка параметров подписи (keystore, alias, password) 
signingConfigs { 
debug { 
storeFile file('../debug.keystore') 
} 
release { 
storeFile file('../release.keystore') 
storePassword 'android' 
keyAlias 'releasekey' 
keyPassword 'android' 
} 
}
Что мы можем настроить для различных типов сборок и flavors? 
•Использование кастомных placeholders в AndroidManifest: 
defaultConfig { 
manifestPlaceholders = [activityLabel:"defaultName"] 
} 
<activity android:name=".MainActivity" android:label="${activityLabel}" > 
•Полный список можно посмотреть в классах DefaultBuildType и DefaultProductFlavor, а также BaseConfigImpl
Build Type + Product Flavor = Build Variant
Примеры использования нескольких сборок 
•Free/Paid версия 
•Брендирование приложения 
•Демо и продакшн версия
Задача из практики 
•Необходима возможность сборки нескольких apk приложения, которые будут отличаться UI, а также иметь несущественные отличия в функционале 
•Обязательна возможность установки нескольких версий приложения на одно устройство
Шаг 1 
•Для каждого варианта приложения создаем отдельный flavor 
productFlavors { 
flavor1 { 
packageName "com.example.flavor1" 
} 
flavor2 { 
packageName "com.example.flavor2" 
} 
}
Шаг 2 
•Для каждого flavor создается своя папка со специфическими ресурсами, манифестом и исходниками (по необходимости) 
src/{flavor name}/java 
src/{flavor name}/res 
src/{flavor name}/AndroidManifest.xml
Шаг 3 
•Общие исходники и ресурсы помещаем в src/main
Android Studio + Gradle 
•Полная поддерка и регулярное обновление для новых версий Gradle Android plugin 
•Возможность работы с различными BuildVariants 
•Единая система сборки в IDE и command line 
•Gradle wrapper
GradleWrapper 
•Не нужно качать и устанавливать Gradle на локальной машине 
•Поставка используемой версии Gradle вместе с проектом 
•Shell скрипты для Windows, Mac, Linux для простого и быстрого запуска комманд для сборки
Заключение 
•Gradle активно продвигается Google 
•Фактически принудительный переход на Gradle в новых проектах при условии использования Android Studio 
•Подавляющее большинство современных библиотек поддерживает Gradle 
•Android Plugin активно развивается, но пока не очень хорошо документирован
Источники 
•http://developer.android.com/sdk/installing/studio-build.html 
•http://www.gradleware.com/android/gradle- the-new-android-build-system/ 
•http://tools.android.com/tech-docs/new- build-system/user-guide
Спасибо Любовь Поволоцкая Email: lyubov.povolotskaya@dataart.com Skype: t_ulip

More Related Content

What's hot

Тестируем мобильное приложение в суровых реалиях Интернета
Тестируем мобильное приложение в суровых реалиях ИнтернетаТестируем мобильное приложение в суровых реалиях Интернета
Тестируем мобильное приложение в суровых реалиях Интернета
SQALab
 
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous Integration
SQALab
 
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...
Badoo Development
 
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir WebdriverТестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Alex Mikitenko
 
Javaone 2013 moscow gradle
Javaone 2013 moscow gradleJavaone 2013 moscow gradle
Javaone 2013 moscow gradleEvgeny Borisov
 
Разработка веб-приложений с помощью TypeScript
Разработка веб-приложений с помощью TypeScriptРазработка веб-приложений с помощью TypeScript
Разработка веб-приложений с помощью TypeScript
Stas Vyschepan
 
Введение в maven
Введение в mavenВведение в maven
Введение в maven
Dmitry Zinushin
 
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
IT Event
 
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
SQALab
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
MoscowJS
 
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеДенис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеYandex
 
Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)
Кафедра высокопроизводительных компьютерных технологий ИМКН УрФУ
 
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
Fwdays
 
UICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестамиUICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестами
SQALab
 
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...
РИФ-Воронеж
 
03 - Android 6. Gradle
03 - Android 6. Gradle03 - Android 6. Gradle
03 - Android 6. Gradle
Roman Brovko
 
Альтернативные способы изучения программирования с нуля
Альтернативные способы изучения программирования с нуляАльтернативные способы изучения программирования с нуля
Альтернативные способы изучения программирования с нуля
COMAQA.BY
 
Денис Паясь
Денис ПаясьДенис Паясь
Денис Паясь
CodeFest
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"
Fwdays
 

What's hot (20)

Тестируем мобильное приложение в суровых реалиях Интернета
Тестируем мобильное приложение в суровых реалиях ИнтернетаТестируем мобильное приложение в суровых реалиях Интернета
Тестируем мобильное приложение в суровых реалиях Интернета
 
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous Integration
 
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...
 
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir WebdriverТестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
 
Javaone 2013 moscow gradle
Javaone 2013 moscow gradleJavaone 2013 moscow gradle
Javaone 2013 moscow gradle
 
Разработка веб-приложений с помощью TypeScript
Разработка веб-приложений с помощью TypeScriptРазработка веб-приложений с помощью TypeScript
Разработка веб-приложений с помощью TypeScript
 
Введение в maven
Введение в mavenВведение в maven
Введение в maven
 
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
 
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
 
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеДенис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в Яндексе
 
Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)
 
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
 
UICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестамиUICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестами
 
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...
 
03 - Android 6. Gradle
03 - Android 6. Gradle03 - Android 6. Gradle
03 - Android 6. Gradle
 
Непрерывная интеграция (Марина Пестова)
Непрерывная интеграция (Марина Пестова)Непрерывная интеграция (Марина Пестова)
Непрерывная интеграция (Марина Пестова)
 
Альтернативные способы изучения программирования с нуля
Альтернативные способы изучения программирования с нуляАльтернативные способы изучения программирования с нуля
Альтернативные способы изучения программирования с нуля
 
Денис Паясь
Денис ПаясьДенис Паясь
Денис Паясь
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"
 

Similar to Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle

Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Kuban Dzhakipov
 
Protrarctor and Angular
Protrarctor and AngularProtrarctor and Angular
Protrarctor and Angular
SQALab
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
JSib
 
Unity: "Очевидное-невероятное” или хитрости разработки на Unity Android
Unity: "Очевидное-невероятное” или хитрости разработки на Unity AndroidUnity: "Очевидное-невероятное” или хитрости разработки на Unity Android
Unity: "Очевидное-невероятное” или хитрости разработки на Unity Android
DevGAMM Conference
 
Корпоративное приложение на Rails
Корпоративное приложение на RailsКорпоративное приложение на Rails
Корпоративное приложение на Rails
Andrei Kaleshka
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"
Fwdays
 
Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)
Noveo
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
Yandex
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
Yandex
 
Apache maven in java projects
Apache maven in java projectsApache maven in java projects
Apache maven in java projects
Asya Dudnik
 
Android IOT, Eugene Dubovik
Android IOT,  Eugene DubovikAndroid IOT,  Eugene Dubovik
Android IOT, Eugene Dubovik
DataArt
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
Timur Shemsedinov
 
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
sandy97
 
#2 Введение в Android Studio Основные аспекты.pdf
#2  Введение в Android Studio Основные аспекты.pdf#2  Введение в Android Studio Основные аспекты.pdf
#2 Введение в Android Studio Основные аспекты.pdf
SergeyAn2
 
Workflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеWorkflow: работа над проектом в Яндексе
Workflow: работа над проектом в Яндексе
Denis Chistyakov
 
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
MoscowJS
 
Android - 13 - Database
Android - 13 - DatabaseAndroid - 13 - Database
Android - 13 - Database
Noveo
 
Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)
Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)
Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)
Ontico
 
Конвейерное производство приложений
Конвейерное производство приложенийКонвейерное производство приложений
Конвейерное производство приложений
Rambler Android
 
Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”
GlobalLogic Ukraine
 

Similar to Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle (20)

Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?
 
Protrarctor and Angular
Protrarctor and AngularProtrarctor and Angular
Protrarctor and Angular
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 
Unity: "Очевидное-невероятное” или хитрости разработки на Unity Android
Unity: "Очевидное-невероятное” или хитрости разработки на Unity AndroidUnity: "Очевидное-невероятное” или хитрости разработки на Unity Android
Unity: "Очевидное-невероятное” или хитрости разработки на Unity Android
 
Корпоративное приложение на Rails
Корпоративное приложение на RailsКорпоративное приложение на Rails
Корпоративное приложение на Rails
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"
 
Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Apache maven in java projects
Apache maven in java projectsApache maven in java projects
Apache maven in java projects
 
Android IOT, Eugene Dubovik
Android IOT,  Eugene DubovikAndroid IOT,  Eugene Dubovik
Android IOT, Eugene Dubovik
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
 
#2 Введение в Android Studio Основные аспекты.pdf
#2  Введение в Android Studio Основные аспекты.pdf#2  Введение в Android Studio Основные аспекты.pdf
#2 Введение в Android Studio Основные аспекты.pdf
 
Workflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеWorkflow: работа над проектом в Яндексе
Workflow: работа над проектом в Яндексе
 
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
 
Android - 13 - Database
Android - 13 - DatabaseAndroid - 13 - Database
Android - 13 - Database
 
Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)
Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)
Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)
 
Конвейерное производство приложений
Конвейерное производство приложенийКонвейерное производство приложений
Конвейерное производство приложений
 
Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”
 

More from GeeksLab Odessa

DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
GeeksLab Odessa
 
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
GeeksLab Odessa
 
DataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский ВикторDataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский Виктор
GeeksLab Odessa
 
DataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображениеDataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображение
GeeksLab Odessa
 
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
GeeksLab Odessa
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
GeeksLab Odessa
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
GeeksLab Odessa
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
GeeksLab Odessa
 
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
GeeksLab Odessa
 
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
GeeksLab Odessa
 
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
GeeksLab Odessa
 
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
GeeksLab Odessa
 
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
GeeksLab Odessa
 
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
GeeksLab Odessa
 
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
GeeksLab Odessa
 
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
GeeksLab Odessa
 
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
GeeksLab Odessa
 
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
GeeksLab Odessa
 
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
GeeksLab Odessa
 
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
GeeksLab Odessa
 

More from GeeksLab Odessa (20)

DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
 
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
 
DataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский ВикторDataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский Виктор
 
DataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображениеDataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображение
 
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
 
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
 
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
 
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
 
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
 
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
 
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
 
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
 
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
 
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
 
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
 
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
 

Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle

  • 1. Сборка Android-приложений с помощью Gradle Любовь Поволоцкая lyubov.povolotskaya@dataart.com
  • 2. Собираем android приложение •IDE (Eclipse, IntelliJ IDEA/Android Studio) •Ant •Maven •Gradle
  • 3. Что нам дает Gradle для Android? •Groovy vs. XML •Возможность кастомизации процесса сборки •Build variants •Управление зависимостями •Поддержка Maven Central и Ivy •Конфигурация Manifest-файла для различных сборок •Android Signing Configuration •ProGuard •Тестирование
  • 4. Android Plugin •Текущая версия 0.12.1 •Поддержка Gradle 1.12
  • 5. Подключаем android plugin buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.12.+' } } apply plugin: 'com.android.application'
  • 6. Структура проекта Source sets •src/main/ •src/androidTest/ Код и ресурсы •java/ •resources/ •AndroidManifest.xml •res/ •assets/ •aidl/ •rs/ •jni/
  • 7. Dependencies •Зависимости от локальных библиотек compile fileTree(dir: 'libs', include: ['*.jar']) •Артефакты Maven и Ivy compile 'com.google.code.gson:gson:2.2.+ •Library projects compile project(':ViewPagerIndicator')
  • 8. Build Types •debug •release •Кастомные типы сборок
  • 9. Product Flavors defaultConfig { minSdkVersion 8 versionCode 10 } productFlavors { flavor1 { applicationId "com.example.flavor1" versionCode 20 } flavor2 { applicationId "com.example.flavor2" minSdkVersion 14 } }
  • 10. Что мы можем настроить для различных типов сборок и flavors? •Поля класса BuildConfig flavour1{ applicationId "com.example.package" buildConfigField "String", "NAMESPACE", ""$applicationId "" buildConfigField "String", "PROVIDER_AUTHORITY", "NAMESPACE" } •Конфигурация AndroidManifest (версия SDK, номер и имя версии приложения, пакет) defaultConfig { minSdkVersion 16 targetSdkVersion 19 versionCode 1 versionName "0.9" }
  • 11. Что мы можем настроить для различных типов сборок и flavors? •Настройка параметров подписи (keystore, alias, password) signingConfigs { debug { storeFile file('../debug.keystore') } release { storeFile file('../release.keystore') storePassword 'android' keyAlias 'releasekey' keyPassword 'android' } }
  • 12. Что мы можем настроить для различных типов сборок и flavors? •Использование кастомных placeholders в AndroidManifest: defaultConfig { manifestPlaceholders = [activityLabel:"defaultName"] } <activity android:name=".MainActivity" android:label="${activityLabel}" > •Полный список можно посмотреть в классах DefaultBuildType и DefaultProductFlavor, а также BaseConfigImpl
  • 13. Build Type + Product Flavor = Build Variant
  • 14. Примеры использования нескольких сборок •Free/Paid версия •Брендирование приложения •Демо и продакшн версия
  • 15. Задача из практики •Необходима возможность сборки нескольких apk приложения, которые будут отличаться UI, а также иметь несущественные отличия в функционале •Обязательна возможность установки нескольких версий приложения на одно устройство
  • 16. Шаг 1 •Для каждого варианта приложения создаем отдельный flavor productFlavors { flavor1 { packageName "com.example.flavor1" } flavor2 { packageName "com.example.flavor2" } }
  • 17. Шаг 2 •Для каждого flavor создается своя папка со специфическими ресурсами, манифестом и исходниками (по необходимости) src/{flavor name}/java src/{flavor name}/res src/{flavor name}/AndroidManifest.xml
  • 18. Шаг 3 •Общие исходники и ресурсы помещаем в src/main
  • 19. Android Studio + Gradle •Полная поддерка и регулярное обновление для новых версий Gradle Android plugin •Возможность работы с различными BuildVariants •Единая система сборки в IDE и command line •Gradle wrapper
  • 20. GradleWrapper •Не нужно качать и устанавливать Gradle на локальной машине •Поставка используемой версии Gradle вместе с проектом •Shell скрипты для Windows, Mac, Linux для простого и быстрого запуска комманд для сборки
  • 21. Заключение •Gradle активно продвигается Google •Фактически принудительный переход на Gradle в новых проектах при условии использования Android Studio •Подавляющее большинство современных библиотек поддерживает Gradle •Android Plugin активно развивается, но пока не очень хорошо документирован
  • 22. Источники •http://developer.android.com/sdk/installing/studio-build.html •http://www.gradleware.com/android/gradle- the-new-android-build-system/ •http://tools.android.com/tech-docs/new- build-system/user-guide
  • 23. Спасибо Любовь Поволоцкая Email: lyubov.povolotskaya@dataart.com Skype: t_ulip