Плагин Android Gradle 8.0.0 – это крупный выпуск, который включает множество новых функций и улучшений.
Совместимость
| Минимальная версия | Версия по умолчанию | Примечания | |
|---|---|---|---|
| Gradle | 8.0 | 8.0 | Подробнее об обновлении Gradle… |
| SDK Build Tools; | 30.0.3 | 30.0.3 | Установите или настройте SDK Build Tools. |
| NDK | Н/Д | 25.1.8937393 | Установите или настройте другую версию NDK. |
| JDK | 17 | 17 | Подробнее о том, как задать версию JDK… |
Исправления
Ниже приведен список исправлений для плагина Android Gradle версии 8.0.
Плагин Android Gradle 8.0.2 (май 2023 г.)
Список исправлений ошибок в AGP 8.0.2 можно найти в закрытых проблемах Android Studio 2022.2.1.
Плагин Android Gradle 8.0.1 (май 2023 г.)
В этом обновлении исправлены следующие ошибки:
| Устраненные проблемы | |
|---|---|
|
Ошибка "No VersionRequirement with the given id in the table" (В таблице нет VersionRequirement с указанным идентификатором) после обновления AGP с версии 7.2.2 до 7.4.0
|
|
|
R8 NullPointerException at markTypeAsLive AGP 7.4.1
|
|
|
[R8 4.0.53] Ошибка проверки класса в Android 11
|
|
Критическое изменение: в скрипте сборки на уровне модуля требуется пространство имен
Пространство имен нужно задать в файле build.gradle.kts на уровне модуля, а не в файле манифеста. Вы можете начать использовать свойство DSL namespace, начиная с AGP 7.3. Подробнее о том, как задать пространство имен…
При переходе на DSL пространства имен учитывайте следующие проблемы:
- В предыдущих версиях AGP тестовое пространство имен в некоторых случаях неправильно выводилось из основного пространства имен или идентификатора приложения. Помощник по обновлению AGP блокирует обновление, если обнаруживает, что основное пространство имен вашего проекта и тестовое пространство имен совпадают. Если обновление заблокировано, вам нужно вручную изменить
testNamespaceи соответствующим образом изменить исходный код. - После изменения пространства имен для тестов код может компилироваться, но инструментальные тесты могут завершаться сбоем во время выполнения. Это может произойти, если исходный код инструментального теста ссылается на ресурс, определенный как в
androidTest, так и в источниках приложения.
Подробная информация доступна в комментарии 19 к проблеме 191813691.
Критические изменения: значения по умолчанию для параметров сборки
Начиная с AGP 8.0, значения по умолчанию для этих флагов были изменены, чтобы повысить производительность сборки. Чтобы адаптировать код к этим изменениям, используйте помощник по обновлению AGP (Инструменты > Помощник по обновлению AGP). Помощник по обновлению поможет вам изменить код в соответствии с новыми правилами или установить флаги, чтобы сохранить прежние правила.
| Флаг | Новое значение по умолчанию | Предыдущее значение по умолчанию | Примечания |
|---|---|---|---|
android.defaults.buildfeatures.buildconfig |
false |
true |
AGP 8.0 не генерирует BuildConfig по умолчанию. Вам нужно указать этот параметр с помощью DSL в проектах, где он необходим. |
android.defaults.buildfeatures.aidl |
false |
true |
В AGP 8.0 поддержка AIDL по умолчанию отключена. Вам нужно указать этот параметр с помощью DSL в проектах, где он необходим. Этот флаг планируется удалить в AGP 9.0. |
android.defaults.buildfeatures.renderscript |
false |
true |
В AGP 8.0 поддержка RenderScript по умолчанию отключена. Вам нужно указать этот параметр с помощью DSL в проектах, где он необходим. Этот флаг планируется удалить в AGP 9.0. |
android.nonFinalResIds |
true |
false |
По умолчанию AGP 8.0 генерирует классы R с нефинальными полями. |
android.nonTransitiveRClass |
true |
false |
AGP 8.0 генерирует классы R только для ресурсов, определенных в текущем модуле. |
android.enableR8.fullMode |
true |
false |
В AGP 8.0 полный режим R8 включен по умолчанию. Подробнее о полном режиме R8… |
Критические изменения: принудительные значения параметров сборки
Начиная с AGP 8.0, вы больше не можете изменять значения этих флагов. Если вы укажете их в файле gradle.properties, значение будет проигнорировано и AGP выведет предупреждения.
| Флаг | Принудительно применяемое значение | Примечания |
|---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 выдает предупреждение, если обнаруживает разрешение конфигурации на этапе настройки, поскольку это отрицательно влияет на время настройки Gradle. |
android.r8.failOnMissingClasses |
true |
AGP 8.0 не выполняет сборки, в которых используется R8, если отсутствуют классы, необходимые для оптимизации DEX. Чтобы устранить эту проблему, добавьте недостающие библиотеки или правила -dontwarn keep. Подробнее о предупреждениях об отсутствующих классах в R8 shrinker… |
android.testConfig.useRelativePath |
true |
Если включена поддержка использования ресурсов, объектов и манифестов Android в модульном тестировании, AGP 8.0 генерирует файл test_config.properties, который содержит только относительные пути. Это гарантирует, что модульные тесты Android всегда могут использовать кеш сборки Gradle. |
android.useNewJarCreator |
true |
При создании JAR-файлов AGP использует библиотеку Zipflinger, чтобы повысить производительность сборки. |
android.bundletool.includeRepositoriesInDependencyReport |
true |
Если включено добавление информации о зависимостях SDK в наборы Android App Bundle и APK-файлы, AGP 8.0 также добавляет в эту информацию список хранилищ проекта. Подробнее об информации о зависимостях для Play Console… |
android.enableArtProfiles |
true |
Теперь базовые профили создаются всегда. Подробнее о базовых профилях… |
android.enableNewResourceShrinker |
true |
Использовать новую реализацию сжатия ресурсов по умолчанию. Новый инструмент сжатия ресурсов поддерживает динамические функции. |
android.enableSourceSetPathsMap |
true |
Используется для вычисления относительных сопоставлений путей к ресурсам, чтобы сборки Gradle чаще обновлялись. |
android.cacheCompileLibResources |
true |
Скомпилированные ресурсы библиотеки теперь можно кешировать по умолчанию, поскольку Gradle отслеживает файлы ресурсов относительно местоположения проекта. Требуется включить android.enableSourceSetPathsMap. |
android.disableAutomaticComponentCreation |
true |
AGP 8.0 по умолчанию не создает SoftwareComponent. Вместо этого AGP создает SoftwareComponents только для вариантов, настроенных для публикации с помощью DSL. |
Новый стабильный параметр для профиля выполнения
В AGP добавлен новый флаг android.settings.executionProfile. Используйте этот флаг, чтобы переопределить профиль выполнения по умолчанию из SettingsExtension. Подробную информацию вы найдете в документации по плагину настроек.
Чтобы посмотреть экспериментальные параметры, ознакомьтесь с примечаниями к предварительному выпуску.
Ленивое присваивание свойств Kotlin не поддерживается.
Если вы используете Kotlin DSL для Gradle в скриптах сборки, обратите внимание, что Android Studio и AGP 8.0 не поддерживают экспериментальное назначение свойств с помощью оператора =. Дополнительную информацию об этой функции можно найти в примечаниях к выпуску и документации.
Категории задач Build Analyzer
Начиная с версии Android Studio Flamingo, в Build Analyzer по умолчанию используется новый режим просмотра задач, влияющих на продолжительность сборки. Если в проекте используется AGP 8.0 или более поздней версии, Build Analyzer группирует задачи по категориям, а не показывает их по отдельности. Например, задачи, связанные с ресурсами Android, Kotlin или Dexing, группируются, а затем сортируются по продолжительности сборки. Это поможет вам определить, какая категория больше всего влияет на время сборки. Развернув каждую категорию, вы увидите список соответствующих задач. Чтобы показывать задачи по отдельности, без группировки, используйте раскрывающийся список Группировать по.

Новый плагин настроек
В AGP 8.0.0-alpha09 появился новый плагин настроек. Плагин настроек позволяет централизовать глобальные конфигурации (конфигурации, которые применяются ко всем модулям) в одном месте, поэтому вам не нужно копировать и вставлять конфигурации в несколько модулей. Кроме того, с помощью плагина настроек можно создавать профили выполнения инструментов, то есть разные инструкции по их запуску, и переключаться между ними.
Чтобы использовать плагин настроек, примените его в файле settings.gradle:
apply plugin 'com.android.settings'
Централизованные глобальные конфигурации
Чтобы задать глобальные настройки, используйте новый блок android в файле settings.gradle. Рассмотрим пример.
android {
compileSdk 31
minSdk 28
...
}
Профили выполнения инструментов
Плагин настроек также позволяет создавать профили выполнения для некоторых инструментов. Профиль выполнения определяет, как запускается инструмент. Вы можете выбрать разные профили выполнения в зависимости от среды. В профиле выполнения можно задать аргументы JVM для инструмента и настроить его запуск в отдельном процессе. Поддерживается только инструмент R8.
Создайте профили выполнения и задайте профиль по умолчанию в файле settings.gradle, как показано в примере ниже.
android {
execution {
profiles {
high {
r8 {
jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
low {
r8 {
jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
ci {
r8.runInSeparateProcess false
}
}
defaultProfile "low"
}
}
Чтобы переопределить профиль по умолчанию, выберите другой профиль с помощью свойства android.experimental.settings.executionProfile в файле gradle.properties:
android.experimental.settings.executionProfile=high
Это свойство также можно задать с помощью командной строки, что позволяет настраивать различные рабочие процессы. Например, если у вас есть рабочий процесс непрерывной интеграции, вы можете использовать командную строку, чтобы изменить профиль выполнения, не меняя файл settings.gradle:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
Для запуска AGP 8.0 требуется JDK 17
Если вы используете плагин Android Gradle 8.0 для сборки приложения, то для запуска Gradle потребуется JDK 17. Android Studio Flamingo поставляется с JDK 17 и настраивает Gradle на его использование по умолчанию. Это означает, что большинству пользователей Android Studio не нужно вносить никаких изменений в конфигурацию своих проектов.
Если вам нужно вручную задать версию JDK, используемую AGP в Android Studio, выберите JDK 17 или более позднюю версию.
Если вы используете AGP независимо от Android Studio, обновите версию JDK, указав в JAVA_HOME переменной среды или -Dorg.gradle.java.home параметре командной строки каталог установки JDK 17.
Устраненные проблемы
Плагин Android Gradle 8.0.2
| Устраненные проблемы | |||||
|---|---|---|---|---|---|
| Shrinker (R8) |
|
||||
Плагин Android Gradle 8.0.1
| Устраненные проблемы | ||||
|---|---|---|---|---|
| Shrinker (R8) |
|
|||
Плагин Android Gradle 8.0.0
| Устраненные проблемы | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Плагин Android Gradle |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Интеграция с Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Shrinker (R8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||