Android Gradle Plugin 2.2.0 (сентябрь 2016 г.)
- Зависимости:
- Новый:
- Использует Gradle 2.14.1, который включает в себя улучшенную производительность и новые функции, а также устраняет уязвимость безопасности, допускающую локальное повышение привилегий при использовании демона Gradle. Подробнее см. в заметках о выпуске Gradle .
- Используя внешний DSL-пакет
externalNativeBuild {}
, Gradle теперь позволяет вам подключаться к исходным кодам нативных приложений и компилировать нативные библиотеки с помощью CMake или ndk-build. После сборки нативных библиотек Gradle упаковывает их в ваш APK-файл. Чтобы узнать больше об использовании CMake и ndk-build с Gradle, прочтите статью «Добавление кода C и C++ в ваш проект» . - При запуске сборки из командной строки Gradle теперь пытается автоматически загрузить все отсутствующие компоненты SDK или обновления, от которых зависит ваш проект. Подробнее см. в статье «Автоматическая загрузка отсутствующих пакетов с помощью Gradle» .
- Новая экспериментальная функция кэширования позволяет Gradle ускорить сборку за счёт предексирования, хранения и повторного использования предексированных версий ваших библиотек. Подробнее об использовании этой экспериментальной функции см. в руководстве по кэшированию сборки .
- Повышает производительность сборки за счёт внедрения нового конвейера упаковки по умолчанию, который выполняет сжатие, подписание и выравнивание в рамках одной задачи. Вы можете вернуться к использованию старых инструментов упаковки, добавив
android.useOldPackaging=true
в файлgradle.properties
. При использовании нового инструмента упаковки задачаzipalignDebug
недоступна. Однако вы можете создать её самостоятельно, вызвав методcreateZipAlignTask(String taskName, File inputFile, File outputFile)
. - Подпись APK теперь использует схему подписи APK v2 в дополнение к традиционной подписи JAR. Все платформы Android принимают полученные APK. Любое изменение этих APK после подписания делает их подписи v2 недействительными и предотвращает установку на устройство. Чтобы отключить эту функцию, добавьте следующее в файл
build.gradle
на уровне модуля:Круто
android { ... signingConfigs { config { ... v2SigningEnabled false } } }
Котлин
android { ... signingConfigs { create("config") { ... v2SigningEnabled = false } } }
- Для сборок Multidex теперь можно использовать правила ProGuard, чтобы определить, какие классы Gradle следует скомпилировать в основной DEX-файл вашего приложения. Поскольку система Android загружает основной DEX-файл первым при запуске приложения, вы можете задать приоритет определённых классов при запуске, скомпилировав их в основной DEX-файл. После создания файла конфигурации ProGuard специально для основного DEX-файла передайте путь к нему в Gradle с помощью
buildTypes.multiDexKeepProguard
. Использование этого DSL отличается от использованияbuildTypes.proguardFiles
, который задаёт общие правила ProGuard для вашего приложения и не определяет классы для основного DEX-файла. - Добавляет поддержку флага
android:extractNativeLibs
, который может уменьшить размер вашего приложения при установке на устройство. Если установить этот флаг в значениеfalse
в элементе<application>
манифеста приложения, Gradle упаковывает несжатые и выровненные версии ваших нативных библиотек вместе с вашим APK. Это предотвращает копирование нативных библиотек из APK в файловую систему устройства во время установкиPackageManager
и обеспечивает дополнительное преимущество: уменьшает размер дельта-обновлений вашего приложения. - Теперь вы можете указать
versionNameSuffix
иapplicationIdSuffix
для разновидностей продукта. ( Проблема 59614 )
- Изменения:
-
getDefaultProguardFile
теперь возвращает файлы ProGuard по умолчанию, предоставляемые плагином Android для Gradle, и больше не использует файлы из Android SDK. - Улучшена производительность и функции компилятора Jack:
- Теперь Jack поддерживает тестовое покрытие Jacoco при установке
testCoverageEnabled
вtrue
. - Улучшенная поддержка обработчиков аннотаций. Обработчики аннотаций в вашем classpath, такие как любые зависимости
compile
, автоматически применяются к вашей сборке. Вы также можете указать обработчик аннотаций в аргументах сборки и передачи, используя DSL-операциюjavaCompileOptions.annotationProcessorOptions {}
в файлеbuild.gradle
на уровне модуля:Круто
android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { className 'com.example.MyProcessor' // Arguments are optional. arguments = [ foo : 'bar' ] } } } }
Котлин
android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { className = "com.example.MyProcessor" // Arguments are optional. arguments(mapOf(foo to "bar")) } } } }
Если вы хотите применить процессор аннотаций во время компиляции, но не включать его в свой APK, используйте область зависимости
annotationProcessor
:Круто
dependencies { compile 'com.google.dagger:dagger:2.0' annotationProcessor 'com.google.dagger:dagger-compiler:2.0' // or use buildVariantAnnotationProcessor to target a specific build variant }
Котлин
dependencies { implementation("com.google.dagger:dagger:2.0") annotationProcessor("com.google.dagger:dagger-compiler:2.0") // or use buildVariantAnnotationProcessor to target a specific build variant }
- По умолчанию, если размер кучи демона Gradle составляет не менее 1,5 ГБ, Jack запускается в том же процессе, что и Gradle. Чтобы изменить размер кучи демона, добавьте в файл
gradle.properties
следующее:# This sets the daemon heap size to 1.5GB. org.gradle.jvmargs=-Xmx1536M
Чтобы получить список параметров, которые можно установить, выполните следующую команду из командной строки:
java -jar /build-tools/jack.jar --help-properties
- Теперь Jack поддерживает тестовое покрытие Jacoco при установке
-
Минимальная версия | Версия по умолчанию | Примечания | |
---|---|---|---|
Грейдл | 2.14.1 | 2.14.1 | Более подробную информацию см. в разделе Обновление Gradle . |
Инструменты сборки SDK | 23.0.2 | 23.0.2 | Установите или настройте инструменты сборки SDK. |