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

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

Upload: anton-rutkevich

Post on 12-May-2015

392 views

Category:

Documents


0 download

TRANSCRIPT

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

Gradle

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

Android

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

Обо мне

• Антон Руткевич

• Android developer

• Яндекс

• Google Developer Group Minsk

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

Проблемы сборки (до Gradle)

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

Несколько слабо совместимых вариантов сборки

• Eclipse

• IntelliJ IDEA

• Ant

• Maven

• Свой велосипед

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

Сложное управление зависимостями

• Jar

• Library project

• Apklib

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

Тяжело сгенерировать несколько вариантов приложения

• С логами / без логов

• Тестовые / продакшн переменные

• Несколько похожих apk

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

Что такое Gradle?

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

Система автоматизации

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

Основной функционал – в плагинах

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

Основные идеи

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

Скрипт сборки – это код

• Язык – Groovy• Java +

• Динамическая типизация• Замыкания• Встроенные в язык коллекции• Много синтаксического сахара• ….

• Файл – build.gradle

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

Задачи (Tasks)

• Конфигурируются

• Состоят из действий

• Выстраиваются в цепочки зависимостей

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

Задачи сборки Android

• assemble

• check

• build = assemble + check

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

Hello world!

task hello << { println 'Hello world!'

}

> gradle hello

Hello world!

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

Управление зависимостями

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

Основы

• Maven, Ivy – артефакты• Удаленные и локальные

• Локальные файлы• Jar• Другие gradle-проекты

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

Android-style

+ aar

• Android – проект с ресурсами

• Только как артефакт, но

можно установить локально

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

Hello dependency!

repositories { mavenCentral() }

dependencies { compile 'com.google.code.gson:gson:2.2.4' compile files('libs') compile project(':libraryProjectName')}

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

Hello Android dependency!

repositories { mavenCentral() }

dependencies { compile 'com.actionbarcherlock:actionbarsherlock:4.4.0@aar'}

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

Варианты сборки

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

Конфигурации сборки

• Пример: debug / release

• Могут иметь свои • Зависимости• Особые шаги• Наборы ресурсов• Особые настройки

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

Типы сборки (Build types)

• По умолчанию• debug• release

• Что можно настроить• packageNameSuffix• BuildConfig.java• Свои ресурсы/код• Другие параметры

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

Особенности сборки(Build flavors)

• Способ легко генерировать несколько похожих apk

• Примеры использования• Платное / бесплатное• Видеокарты - Tegra / Qualcomm / PowerVR• Другие особенности приложений, для

которых был введен multiple apk

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

Варианты сборки (Build variants)

Особенность

Тип

Free

Paid

ReleaseDebug

PaidDebug

FreeDebug FreeRelease

PaidRelease

Вариант

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

Наборы ресурсов (Source sets)

src/main/

java/

resources/

config1/

config2/

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

Структура Android проекта

src/main/

java/

res/

AndroidManifest.xml

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

Наборы ресурсов для типов и вариантов сборки

src/

main/

release/

debug/

free/

paid/

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

Построение варианта сборки

main

free

debug

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

Особенности использования

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

Ant

• Отличная интеграция

• Возможность поэтапного перехода с Ant на Gradle

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

Дополнительные плагины

• Стандартные• Плагины дистрибуции• Вспомогательные плагины

• 3rd-party• Плагины конкретных библиотек

• Custom plugins• плагины для автоматизации внутренних

процессов в компании

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

Использование с системами непрерывной интеграции

• Передача параметров для сборки из CI в build.gradle

• Дополнительные действия при сборке с помощью CI

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

Недостатки

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

Сложность

• Groovy не всегда очевиден

• Иногда сложно найти, как достучаться до определенного параметра сборки

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

Отсутствие поддержки NDK

Отсутствует в версии 0.63

Решение:

a) ждать интеграции (базовая версия будет в 0.70)

b) сделать самому

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

Ограниченность библиотечных проектов

• Нет возможности реализовывать flavors

• При подключении к другим проектам всегда собираются в release версии библиотек

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

Версия начинается с 0

• Все еще бета (альфа?)

• Не все еще реализовано

• Баги

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

Когда стоит использовать Gradle?

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

Когда …

• … проекты небольшие

• … проекты большие, и есть возможность выделить время

• … процесс сборки сложный

• … нужно собирать несколько apk

• … используются системы CI

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

Ресурсы

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

Код

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-gradl

e-sample

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

Информация

• 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

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

Спасибо за внимание!

Вопросы?

[email protected]

http://www.linkedin.com/in/antonrutkevich

https://plus.google.com/u/1/communities/112573540938850912460

GDG Minsk BY