Плагин Android Gradle 3.3.0 (январь 2019 г.)
Для работы этой версии плагина Android требуются:
| Минимальная версия | Версия по умолчанию | Примечания | |
|---|---|---|---|
| Gradle | 4.10.1 | 4.10.1 | Подробнее о том, как обновить Gradle… При использовании Gradle версии 5.0 и более поздних версий размер кучи памяти демона Gradle по умолчанию уменьшается с 1 ГБ до 512 МБ. Это может привести к снижению производительности сборки. Чтобы переопределить это значение по умолчанию, укажите размер кучи демона Gradle в файле gradle.properties проекта. |
| Инструменты сборки SDK | 28.0.3 | 28.0.3 | Установите или настройте инструменты сборки SDK. |
Это небольшое обновление обеспечивает совместимость с новыми настройками по умолчанию и функциями для видимости пакетов в Android 11.
Подробнее о примечаниях к выпуску 4.0.1.
3.3.2 (март 2019 г.)
Это небольшое обновление поддерживает Android Studio 3.3.2 и включает различные исправления ошибок и улучшения производительности. Список исправленных ошибок можно найти в блоге об обновлениях.
3.3.1 (февраль 2019 г.)
Это небольшое обновление поддерживает Android Studio 3.3.1 и содержит исправления ошибок и улучшения производительности.
Новые функции
-
Улучшенная синхронизация путей классов. При разрешении зависимостей в путях классов времени выполнения и времени компиляции плагин Android Gradle пытается устранить некоторые конфликты версий зависимостей, которые появляются в нескольких путях классов.
Например, если в classpath времени выполнения включена библиотека А версии 2.0, а в classpath компиляции – библиотека А версии 1.0, плагин автоматически обновит зависимость в classpath компиляции до библиотеки А версии 2.0, чтобы избежать ошибок.
Однако если в classpath времени выполнения включена библиотека А версии 1.0, а в classpath компиляции – библиотека А версии 2.0, плагин не понизит версию зависимости в classpath компиляции до библиотеки А версии 1.0, и вы получите ошибку. Подробнее о том, как устранять конфликты между путями к классам…
-
Улучшенная инкрементная компиляция Java при использовании процессоров аннотаций. Это обновление сокращает время сборки за счет улучшения поддержки инкрементной компиляции Java при использовании процессоров аннотаций.
Примечание. Эта функция совместима с Gradle 4.10.1 и более поздними версиями, кроме Gradle 5.1, из-за ошибки 8194.
-
Для проектов, в которых используется Kapt (большинство проектов только на Kotlin и гибридных проектов на Kotlin и Java): включена инкрементная компиляция Java, даже если вы используете привязку данных или плагин retro-lambda. Обработка аннотаций задачей Kapt пока не является инкрементной.
-
Для проектов, в которых не используется Kapt (только Java). Если все используемые вами процессоры аннотаций поддерживают инкрементную обработку аннотаций, инкрементная компиляция Java включена по умолчанию. Чтобы отслеживать внедрение инкрементной обработки аннотаций, следите за проблемой 5277 в Gradle.
Однако если один или несколько процессоров аннотаций не поддерживают инкрементную сборку, инкрементная компиляция Java не включается. Вместо этого вы можете добавить в файл
gradle.propertiesследующий флаг:android.enableSeparateAnnotationProcessing=trueЕсли вы добавите этот флаг, плагин Android Gradle будет выполнять процессоры аннотаций в отдельной задаче и позволит задаче компиляции Java выполняться инкрементно.
-
-
Улучшенные сведения для отладки при использовании устаревшего API. Если плагин обнаруживает, что вы используете API, который больше не поддерживается, он может предоставить более подробную информацию, чтобы помочь вам определить, где используется этот API. Чтобы видеть дополнительную информацию, добавьте в файл
gradle.propertiesпроекта следующие строки:android.debug.obsoleteApi=trueВы также можете включить флаг, передав
-Pandroid.debug.obsoleteApi=trueиз командной строки. -
Инструментальные тесты для модулей функций можно запускать из командной строки.
Изменения в поведении
-
Настройка задач с отложенным выполнением. Теперь плагин использует новый API создания задач Gradle, чтобы избежать инициализации и настройки задач, которые не требуются для завершения текущей сборки (или задач, не входящих в граф выполнения задач). Например, если у вас есть несколько вариантов сборки, таких как release и debug, и вы создаете версию debug, плагин не будет инициализировать и настраивать задачи для версии release.
Вызов некоторых устаревших методов в API вариантов, например
variant.getJavaCompile(), может по-прежнему приводить к принудительной настройке задачи. Чтобы сборка была оптимизирована для отложенной настройки задач, используйте новые методы, которые возвращают объект TaskProvider, напримерvariant.getJavaCompileProvider().Если вы выполняете специальные задачи сборки, узнайте, как адаптироваться к новому API создания задач Gradle.
-
При настройке
useProguard falseдля определенного типа сборки плагин теперь использует R8 вместо ProGuard для сжатия и обфускации кода и ресурсов приложения. Чтобы узнать больше о R8, прочитайте эту запись в блоге для разработчиков Android. -
Более быстрая генерация класса 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 предложит вам включить оптимизацию при синхронизации проекта. Оптимизация также включена по умолчанию в новых проектах.
Чтобы включить эту оптимизацию вручную, нажмите File > Settings > Experimental (Android Studio > Preferences > Experimental > Gradle на устройстве Mac) и установите флажок Only sync the active variant.
Примечание. Эта оптимизация полностью поддерживает проекты, в которых используются языки Java и C++, а также частично поддерживает Kotlin. При включении оптимизации для проектов с контентом Kotlin синхронизация Gradle возвращается к использованию полных вариантов.
-
Автоматическая загрузка отсутствующих пакетов SDK. Теперь эта функция поддерживает NDK. Подробнее об автоматической загрузке отсутствующих пакетов с помощью Gradle…
Исправленные ошибки
-
Плагин Android Gradle 3.3.0 исправляет следующие проблемы:
- В процессе сборки вызывается
android.support.v8.renderscript.RenderScriptвместо версии AndroidX, хотя Jetifier включен. - Конфликты из-за
androidx-rs.jar, в том числе статически связанныхannotation.AnyRes - При использовании RenderScript вам больше не нужно вручную задавать версию Build Tools в файлах
build.gradle.
- В процессе сборки вызывается