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

Post on 12-May-2015

393 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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-проекты

Android-style

+ 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

Paid

ReleaseDebug

PaidDebug

FreeDebug FreeRelease

PaidRelease

Вариант

Наборы ресурсов (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?

Когда …

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

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

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

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

• … используются системы 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-minsk-gradl

e-sample

Информация

• 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

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

Вопросы?

anton.rutkevich@gmail.com

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

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

GDG Minsk BY

top related