Плагин Android Gradle 8.0.0 — это крупный релиз, включающий множество новых функций и улучшений.
Совместимость
Минимальная версия | Версия по умолчанию | Примечания | |
---|---|---|---|
Градл | 8.0 | 8.0 | Более подробную информацию см. в разделе Обновление Gradle . |
Инструменты сборки SDK | 30.0.3 | 30.0.3 | Установите или настройте инструменты сборки SDK. |
НДК | Н/Д | 25.1.8937393 | Установите или настройте другую версию NDK. |
JDK | 17 | 17 | Более подробную информацию см. в разделе «Настройка версии JDK» . |
Выпуски патчей
Ниже приведен список выпущенных исправлений для Android Gradle Plugin 8.0.
Плагин Android Gradle 8.0.2 (май 2023 г.)
Список ошибок, исправленных в AGP 8.0.2, см. в разделе «Закрытые проблемы Android Studio 2022.2.1» .
Плагин Android Gradle 8.0.1 (май 2023 г.)
Это небольшое обновление включает в себя следующие исправления ошибок:
Исправлены проблемы | |
---|---|
Ошибка: «В таблице нет VersionRequirement с указанным идентификатором» после обновления AGP 7.2.2 -> 7.4.0 | |
R8 NullPointerException в markTypeAsLive AGP 7.4.1 | |
[R8 4.0.53] Ошибка проверки жесткого класса на Android 11 |
Критическое изменение: требуется пространство имен в скрипте сборки на уровне модуля
Вы должны задать пространство имен в файле build.gradle.kts
на уровне модуля, а не в файле манифеста. Вы можете начать использовать свойство DSL namespace
, начиная с AGP 7.3. Чтобы узнать больше, см. Set a namespace .
При переходе на пространство имен DSL следует учитывать следующие проблемы:
- Предыдущие версии AGP в некоторых случаях неправильно выводят тестовое пространство имен из основного пространства имен или идентификатора приложения. Помощник по обновлению AGP блокирует обновление, если обнаруживает, что основное пространство имен вашего проекта и тестовое пространство имен совпадают. Если обновление заблокировано, вам необходимо вручную изменить
testNamespace
и соответствующим образом изменить исходный код. - После изменения пространства имен теста, возможно, что ваш код компилируется, но ваши инструментированные тесты не сработают во время выполнения. Это может произойти, если исходный код вашего инструментированного теста ссылается на ресурс, определенный как в вашем
androidTest
, так и в источниках приложения.
Более подробную информацию см. в выпуске № 191813691, комментарий № 19 .
Критические изменения: значения параметров сборки по умолчанию
Начиная с AGP 8.0 значения по умолчанию для этих флагов были изменены для повышения производительности сборки. Чтобы получить помощь в настройке кода для поддержки некоторых из этих изменений, используйте AGP Upgrade Assistant ( Tools > AGP Upgrade Assistant ). Upgrade Assistant проведет вас через обновление кода для адаптации к новому поведению или установку флагов для сохранения предыдущего поведения.
Флаг | Новое значение по умолчанию | Предыдущее значение по умолчанию | Примечания |
---|---|---|---|
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. Для получения более подробной информации см. Missing class warnings in R8 shrinker . |
android.testConfig.useRelativePath | true | Когда включена поддержка использования ресурсов, активов и манифестов Android в модульных тестах, AGP 8.0 генерирует файл test_config.properties , содержащий только относительные пути. Это гарантирует, что модульные тесты Android всегда могут использовать кэш сборки Gradle. |
android.useNewJarCreator | true | AGP использует библиотеку Zipflinger при создании JAR-файлов для повышения производительности сборки. |
android.bundletool.includeRepositoriesInDependencyReport | true | При включении добавления информации о зависимости SDK в AAB и APK, AGP 8.0 также добавляет список репозиториев проекта к этой информации. Чтобы узнать больше, см. Информация о зависимости для Play Console . |
android.enableArtProfiles | true | Базовые профили теперь всегда генерируются. Подробности см. в разделе Базовые профили . |
android.enableNewResourceShrinker | true | Используйте новую реализацию resource shinker по умолчанию. Новый resource shrinker включает поддержку динамических функций. |
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 не поддерживается
Если вы используете Gradle Kotlin DSL для своих скриптов сборки, обратите внимание, что Android Studio и AGP 8.0 не поддерживают экспериментальное назначение свойств с помощью оператора =
. Для получения дополнительной информации об этой функции см. заметки о выпуске и документацию .
Категории задач Build Analyzer
Начиная с Android Studio Flamingo, Build Analyzer имеет новое представление по умолчанию для задач, которые влияют на продолжительность сборки. Если ваш проект использует AGP 8.0 или выше, вместо того, чтобы отображать задачи по отдельности, Build Analyzer группирует их по категориям. Например, задачи, специфичные для Android Resources, Kotlin или Dexing, группируются вместе, а затем сортируются по продолжительности сборки. Это позволяет легко узнать, какая категория оказывает наибольшее влияние на время сборки. Развертывание каждой категории отображает список соответствующих задач. Чтобы отобразить задачи по отдельности, без группировки, используйте раскрывающийся список Group by .
Новый плагин настроек
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 Plugin 8.0 для сборки приложения теперь требуется JDK 17 для запуска Gradle. 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.0
Исправленные проблемы | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Плагин Android Gradle |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Дексер (D8) |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ворс |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Интеграция Линта |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Усадочный аппарат (R8) |
|
Плагин Android Gradle 8.0.1
Исправленные проблемы | ||||
---|---|---|---|---|
Усадочный аппарат (R8) |
|
Плагин Android Gradle 8.0.2
Исправленные проблемы | |||||
---|---|---|---|---|---|
Усадочный аппарат (R8) |
|