Заметки о Gradle

Так как в сферу моих рабочих обязанностей и увлечений входит разработка нативных приложений под андроид, мне приходится взаимодействовать с Gradle. Решил написать несколько заметок для себя.




Настройка Android Studio

Прежде чем начать работу, следует увеличить доступную оперативную память для Android Studio

Help → Edit Custom VM options →
-Xms1024m
-Xmx12288m
-XX:MaxPermSize=1024m
-XX:ReservedCodeCacheSize=440m
-XX:+UseCompressedOops
-XX:-HeapDumpOnOutOfMemoryError
-Dfile.encoding=UTF-8

Из неочевидного в интерфейсе, список задач для гредла находится на панели справа. Список вариантов сборки можно найти на панели справа.

Особенности Gradle

Конфигурации сборки записываются в файлах build.gradle и могут подключать к себе другие файлы типа common.gradle. Используется скриптовый язык Groovy, тесно связанный и совместимый с java. Большое количество функций находится в плагинах, подключаемых к файлам конфигурации. Выходит так, что вся конфигурация - это вызов функций плагина. Для андроида используется соответствующий плагин. 
Гредл можно запускать из консоли через враппер, который фиксирует версию гредла и зачем-то там нужен. Настройки враппера вроде лежат в папке gradle/wrapper. Там же можно записать требуемую версию гредла. 
Вариант сборки гредла состоит из имени задачи, набора flavor'ов и типа сборки (обычно debug/release) assembleAmazonArmDebug


Версия плагина лежит в build.gradle в корне проекта, записывается как: classpath 'com.android.tools.build:gradle:2.3.3'

Версия градла прописана в gradle/wrapper/gradle-wrapper.properties

Подключение CMake

В разделе android.cmake можно задать путь к CMake файлу, передать аргументы cmake, аргументы компилятору и линковщику. Список исходников, разумеется, задается внутри cmake файлов. Любопытно что при синхронизации проекта Android Studio должен сгенерировать проекты для всех вариантов сборки (комбинаций флаворов и типа сборки) Таким образом, при большом их количестве, синхронизация проекта может длиться часами. Для избежания такой неприятности следует настроить variantFilter  в build.gradle https://developer.android.com/studio/build/build-variants
В целом, вся система работает довольно гладко и понятно. 

Комментарии

Популярные сообщения из этого блога

Siege Up! Editor (beta)

STM32F4 и программный выход в DFU

Git и Yandex.Disk