Android Gradle Plugin 3.3.0 (январь 2019 г.)
Для этой версии плагина для Android требуется следующее:
Минимальная версия | Версия по умолчанию | Примечания | |
---|---|---|---|
Грейдл | 4.10.1 | 4.10.1 | Подробнее см. в разделе «Обновление Gradle» . При использовании Gradle 5.0 и более поздних версий размер кучи памяти демона Gradle по умолчанию уменьшается с 1 ГБ до 512 МБ. Это может привести к снижению производительности сборки. Чтобы переопределить этот параметр по умолчанию, укажите размер кучи памяти демона Gradle в файле gradle.properties вашего проекта. |
Инструменты сборки SDK | 28.0.3 | 28.0.3 | Установите или настройте инструменты сборки SDK. |
3.3.3 (июль 2020 г.)
Это небольшое обновление поддерживает совместимость с новыми настройками по умолчанию и функциями видимости пакетов в Android 11 .
Подробную информацию см. в примечаниях к выпуску 4.0.1 .
3.3.2 (март 2019 г.)
This minor update supports Android Studio 3.3.2 and includes various bug fixes and performance improvements. To see a list of noteable bug fixes, read the related post on the Release Updates blog .
3.3.1 (февраль 2019 г.)
Это небольшое обновление поддерживает Android Studio 3.3.1 и включает в себя различные исправления ошибок и улучшения производительности.
Новые функции
Улучшенная синхронизация путей к классам: при разрешении зависимостей в путях к классам времени выполнения и времени компиляции плагин Android Gradle пытается исправить определенные конфликты версий нижестоящих версий для зависимостей, которые появляются в нескольких путях к классам.
Например, если путь к классам времени выполнения включает библиотеку A версии 2.0, а путь к классам компиляции включает библиотеку A версии 1.0, плагин автоматически обновляет зависимость пути к классам компиляции до библиотеки A версии 2.0, чтобы избежать ошибок.
However, if the runtime classpath includes Library A version 1.0 and the compile includes Library A version 2.0, the plugin does not downgrade the dependency on the compile classpath to Library A version 1.0, and you will get an error. To learn more, see Fix conflicts between classpaths .
Улучшенная инкрементная компиляция Java при использовании процессоров аннотаций: это обновление сокращает время сборки за счет улучшения поддержки инкрементной компиляции Java при использовании процессоров аннотаций.
Примечание: эта функция совместима с Gradle 4.10.1 и выше, за исключением Gradle 5.1 из-за проблемы Gradle 8194 .
Для проектов, использующих Kapt (большинство проектов, написанных только на Kotlin, и гибридных проектов Kotlin-Java): инкрементальная компиляция Java включена даже при использовании привязки данных или плагина Retro-Lambda. Обработка аннотаций задачей Kapt пока не является инкрементальной.
Для проектов без использования Kapt (проекты только на Java): если все используемые вами процессоры аннотаций поддерживают инкрементальную обработку аннотаций , инкрементальная компиляция Java включена по умолчанию. Чтобы отслеживать внедрение инкрементального процессора аннотаций, следите за выпуском Gradle 5277 .
If, however, one or more annotation processors do not support incremental builds, incremental Java compilation is not enabled. Instead, you can include the following flag in your
gradle.properties
file:android.enableSeparateAnnotationProcessing=true
При включении этого флага плагин Android Gradle выполняет обработчики аннотаций в отдельной задаче и позволяет задаче компиляции Java выполняться постепенно.
Улучшенная отладочная информация при использовании устаревшего API: когда плагин обнаруживает, что вы используете API, который больше не поддерживается, он теперь может предоставлять более подробную информацию, которая поможет вам определить, где этот API используется. Чтобы увидеть дополнительную информацию, необходимо включить в файл
gradle.properties
вашего проекта следующее:android.debug.obsoleteApi=true
Вы также можете включить флаг, передав
-Pandroid.debug.obsoleteApi=true
из командной строки.Вы можете запустить инструментальные тесты на функциональных модулях из командной строки.
Изменения поведения
Настройка отложенных задач: плагин теперь использует новый API Gradle для создания задач, чтобы избежать инициализации и настройки задач, которые не требуются для завершения текущей сборки (или задач, не входящих в график выполнения). Например, если у вас есть несколько вариантов сборки, например, «релиз» и «отладка», и вы собираете «отладочную» версию приложения, плагин избегает инициализации и настройки задач для «релизной» версии приложения.
Вызов некоторых старых методов в API Variants, таких как
variant.getJavaCompile()
, может по-прежнему принудительно запрашивать конфигурацию задачи. Чтобы убедиться, что ваша сборка оптимизирована для ленивой конфигурации задачи, вызовите новые методы, которые возвращают объект TaskProvider , напримерvariant.getJavaCompileProvider()
.Если вы выполняете пользовательские задачи по сборке, узнайте, как адаптироваться к новому API Gradle для создания задач .
Для данного типа сборки при установке значения
useProguard false
плагин теперь использует R8 вместо ProGuard для сжатия и обфускации кода и ресурсов вашего приложения. Чтобы узнать больше о R8, прочтите эту запись в блоге Android Developer's Blog.Более быстрая генерация классов R для библиотечных проектов: Раньше плагин Android Gradle генерировал файл
R.java
для каждой зависимости проекта, а затем компилировал эти классы R вместе с другими классами приложения. Теперь плагин генерирует JAR-файл, содержащий скомпилированный класс R вашего приложения, напрямую, без предварительного создания промежуточных классовR.java
. Эта оптимизация может значительно повысить производительность сборки проектов, включающих множество подпроектов и зависимостей библиотек, а также ускорить индексацию в Android Studio.При сборке Android App Bundle APK-файлы, созданные из этого пакета приложений для Android 6.0 (уровень API 23) или выше, теперь по умолчанию включают несжатые версии ваших нативных библиотек. Эта оптимизация устраняет необходимость копирования библиотеки устройством и, таким образом, уменьшает размер вашего приложения на диске. Если вы предпочитаете отключить эту оптимизацию, добавьте в файл
gradle.properties
следующее:android.bundle.enableUncompressedNativeLibs = false
Плагин обеспечивает установку минимальных версий некоторых сторонних плагинов.
Синхронизация проекта с одним вариантом : синхронизация проекта с конфигурацией сборки — важный шаг, позволяющий Android Studio понять структуру вашего проекта. Однако для крупных проектов этот процесс может занять много времени. Если в вашем проекте используется несколько вариантов сборки, теперь вы можете оптимизировать синхронизацию проекта, ограничив её только выбранным в данный момент вариантом.
Для включения этой оптимизации необходимо использовать Android Studio 3.3 или более позднюю версию с плагином Android Gradle 3.3.0 или более позднюю версию. При соблюдении этих требований IDE предложит включить эту оптимизацию при синхронизации проекта. Оптимизация также включена по умолчанию в новых проектах.
To enable this optimization manually, click File > Settings > Experimental > Gradle ( Android Studio > Preferences > Experimental > Gradle on a Mac) and select the Only sync the active variant checkbox.
Примечание : эта оптимизация полностью поддерживает проекты, включающие языки Java и C++, а также частично Kotlin. При включении оптимизации для проектов с контентом Kotlin синхронизация Gradle возвращается к использованию полных вариантов внутри.
Automatic downloading of missing SDK packages : This functionality has been expanded to support NDK. To learn more, read Auto-download missing packages with Gradle .
Исправления ошибок
Плагин Android Gradle 3.3.0 исправляет следующие проблемы:
- Процесс сборки вызывает
android.support.v8.renderscript.RenderScript
вместо версии AndroidX, несмотря на то, что Jetifier включен. - Конфликты из-за
androidx-rs.jar
включая статически связаннуюannotation.AnyRes
- При использовании RenderScript вам больше не придется вручную устанавливать версию Build Tools в файлах
build.gradle
- Процесс сборки вызывает