Примечания к выпуску плагина Android Gradle 8.7

Репозиторий JCenter стал доступен только для чтения 31 марта 2021 г. Для получения дополнительной информации см. Обновление службы JCenter .

Система сборки Android Studio основана на Gradle, а плагин Android Gradle добавляет несколько функций, специфичных для создания приложений Android. Хотя плагин Android Gradle (AGP) обычно обновляется одновременно с Android Studio, плагин (и остальная часть системы Gradle) могут работать независимо от Android Studio и обновляться отдельно.

На этой странице объясняется, как поддерживать актуальность инструментов Gradle и что нового в последних обновлениях. Примечания к выпуску предыдущих версий плагина Android Gradle см. в примечаниях к предыдущим выпускам .

Чтобы узнать, что исправлено в этой версии плагина Android Gradle, смотрите закрытые проблемы .

Подробную информацию о предстоящих критических изменениях в плагине Android Gradle см. в дорожной карте плагина Android Gradle .

Подробную информацию о настройке сборок Android с помощью Gradle см. на следующих страницах:

Дополнительную информацию о системе сборки Gradle можно найти в руководстве пользователя Gradle .

Обновите плагин Android Gradle

При обновлении Android Studio вы можете получить запрос на автоматическое обновление плагина Android Gradle до последней доступной версии. Вы можете принять обновление или вручную указать версию в зависимости от требований сборки вашего проекта.

Вы можете указать версию плагина либо в меню «Файл» > «Структура проекта» > «Проект» в Android Studio, либо в файле build.gradle.kts верхнего уровня. Версия плагина применяется ко всем модулям, созданным в этом проекте Android Studio. В следующем примере для плагина устанавливается версия 8.7.0 из файла build.gradle.kts :

Котлин

plugins {
    id("com.android.application") version "8.7.0" apply false
    id("com.android.library") version "8.7.0" apply false
    id("org.jetbrains.kotlin.android") version "2.0.20" apply false
}

классный

plugins {
    id 'com.android.application' version '8.7.0' apply false
    id 'com.android.library' version '8.7.0' apply false
    id 'org.jetbrains.kotlin.android' version '2.0.20' apply false
}

Внимание: не следует использовать динамические зависимости в номерах версий, например 'com.android.tools.build:gradle:8.7.+' . Использование этой функции может привести к неожиданным обновлениям версий и трудностям с устранением различий версий.

Если указанная версия плагина не была загружена, Gradle загрузит ее при следующей сборке проекта или при нажатии «Файл» > «Синхронизировать проект с файлами Gradle» в строке меню Android Studio.

Обновить Gradle

При обновлении Android Studio вы можете получить предложение также обновить Gradle до последней доступной версии. Вы можете принять обновление или вручную указать версию в зависимости от требований сборки вашего проекта.

В следующей таблице указано, какая версия Gradle требуется для каждой версии плагина Android Gradle. Для достижения наилучшей производительности вам следует использовать последнюю возможную версию Gradle и плагина.

Версия плагина Минимальная необходимая версия Gradle
8,7 8,9
8,6 8,7
8,5 8,7
8.4 8,6
8.3 8.4
8.2 8.2
8.1 8.0
8.0 8.0
7.4 7,5

Старые версии

Версия плагина Требуемая версия Gradle
7.3 7.4
7.2 7.3.3
7.1 7.2
7.0 7.0
4.2.0+ 6.7.1
4.1.0+ 6.5+
4.0.0+ 6.1.1+
3.6.0 - 3.6.4 5.6.4+
3.5.0 - 3.5.4 5.4.1+
3.4.0 - 3.4.3 5.1.1+
3.3.0 - 3.3.3 4.10.1+
3.2.0 - 3.2.1 4.6+
3.1.0+ 4.4+
3.0.0+ 4.1+
2.3.0+ 3.3+
2.1.3 - 2.2.3 2.14.1 - 3,5
2.0.0 - 2.1.2 2.10 - 2.13
1.5.0 2.2.1 - 2.13
1.2.0 - 1.3.1 2.2.1 - 2,9
1.0.0 - 1.1.3 2.2.1 - 2,3

Вы можете указать версию Gradle в меню «Файл» > «Структура проекта» > «Проект» в Android Studio или обновить версию Gradle с помощью командной строки. Предпочтительный способ — использовать инструмент командной строки Gradle Wrapper , который обновляет сценарии gradlew . В следующем примере для версии Gradle устанавливается значение 8.7 с помощью Gradle Wrapper. Обратите внимание: вам нужно запустить эту команду дважды , чтобы обновить как Gradle, так и саму оболочку Gradle (дополнительную информацию см. в разделе Обновление оболочки Gradle ).

gradle wrapper --gradle-version 8.7

Однако в некоторых случаях это может привести к сбою, например, если вы только что обновили AGP, и он больше не совместим с текущей версией Gradle. В этом случае вам необходимо отредактировать ссылку на дистрибутив Gradle в файле gradle/wrapper/gradle-wrapper.properties . В следующем примере в файле gradle-wrapper.properties устанавливается версия Gradle 8.7.

...
distributionUrl = https\://services.gradle.org/distributions/gradle-8.7-bin.zip
...

Плагин Android Gradle и совместимость с Android Studio

Система сборки Android Studio основана на Gradle, а плагин Android Gradle (AGP) добавляет несколько функций, специфичных для создания приложений Android. В следующей таблице указано, какая версия AGP требуется для каждой версии Android Studio.

Версия Android Studio Требуемая версия AGP
Божья коровка | 2024.2.1 3,2-8,7
Функция «Коала» | 2024.1.2 3,2-8,6
Коала | 2024.1.1 3,2-8,5
Медуза | 2023.3.1 3,2-8,4
Игуана | 2023.2.1 3,2-8,3
Ежик | 2023.1.1 3,2-8,2
Жираф | 2022.3.1 3.2-8.1
Фламинго | 2022.2.1 3,2-8,0

Старые версии

Версия Android Studio Требуемая версия AGP
Электрический угорь | 2022.1.1 3,2-7,4
Дельфин | 2021.3.1 3,2-7,3
Бурундук | 2021.2.1 3,2-7,2
Шмель | 2021.1.1 3.2-7.1
Арктическая лисица | 2020.3.1 3,1-7,0

Информацию о новых возможностях плагина Android Gradle см. в примечаниях к выпуску плагина Android Gradle .

Минимальные версии инструментов для уровня Android API

Существуют минимальные версии Android Studio и AGP, поддерживающие определенный уровень API. Использование более ранних версий Android Studio или AGP, чем требуется targetSdk или compileSdk вашего проекта, может привести к непредвиденным проблемам. Мы рекомендуем использовать последнюю предварительную версию Android Studio и AGP для работы над проектами, ориентированными на предварительные версии ОС Android. Вы можете установить предварительные версии Android Studio вместе со стабильной версией .

Минимальные версии Android Studio и AGP следующие:

уровень API Минимальная версия Android Studio Минимальная версия AGP
Предварительный просмотр пахлавы Сурикат | 2024.3.1 8.9.0
35 Функция «Коала» | 2024.2.1 8.6.0
34 Ежик | 2023.1.1 8.1.1
33 Фламинго | 2022.2.1 7.2

Изменения версий (ноябрь 2020 г.)

Мы обновляем нумерацию версий плагина Android Gradle (AGP), чтобы она больше соответствовала базовому инструменту сборки Gradle.

Вот заметные изменения:

  • AGP теперь будет использовать семантическое управление версиями, а критические изменения будут нацелены на основные выпуски.

  • Ежегодно будет выпускаться одна основная версия AGP, согласованная с основной версией Gradle.

  • Выпуск после AGP 4.2 будет версией 7.0 и потребует обновления до Gradle версии 7.x. Каждый основной выпуск AGP потребует обновления основной версии базового инструмента Gradle.

  • API-интерфейсы будут прекращены примерно за год до этого, и одновременно с ними станут доступны новые функциональные возможности. Устаревшие API будут удалены примерно через год во время последующего крупного обновления.

Совместимость

Максимальный уровень API, который поддерживает плагин Android Gradle 8.6, — это уровень API 34. Вот другая информация о совместимости:

Минимальная версия Версия по умолчанию Примечания
"Грейдл" 8,9 8,9 «Чтобы узнать больше, см. обновление Gradle ».
Инструменты сборки SDK 34.0.0 34.0.0 Установите или настройте инструменты сборки SDK.
НДК Н/Д 27.0.12077973 « Установите или настройте другую версию NDK».
ЯДК 17 17 «Чтобы узнать больше, см. настройку версии JDK ».

Изменение поведения ворса

Начиная с плагина Android Gradle 8.7.0-alpha08, если при запуске lint с использованием Gradle возникает LintError , задача анализа lint выдает исключение. Это изменение предотвращает кэширование редких ошибок в кэше сборки.

К сожалению, это изменение нарушает сборку проектов с подлинными экземплярами LintError в базовых файлах lint. Сообщение об ошибке содержит информацию о том, какие проверки на наличие ворса вызывают проблему. В некоторых случаях обновление соответствующей зависимости библиотеки может решить проблему. Если нет, вы можете отключить проблемную проверку на наличие ворсинок, пока автор библиотеки не исправит ее.

Исправлены проблемы

Плагин Android Gradle 8.7.0

Исправленные проблемы
Плагин Android Gradle
AGP должен заявить, что поддерживает API 35, который скоро появится в продаже.
AGP 8.5: выполняется гораздо больше задач «mergeDebugResources», что замедляет сборку.
Сделайте ndk 27 ​​NDK по умолчанию в AGP.
AGP должен заявить, что поддерживает API 35, который скоро появится в продаже.
AGP должен заявить, что поддерживает API 35, который скоро появится в продаже.
Запуск Android lint завершился с ошибкой NoSuchFileException
BuildType#initWith копирует блок постобработки, но конфигурация proguard не применяется
Невозможно объединить теги forforegroundServiceType
Запуск Android lint завершился с ошибкой NoSuchFileException
Ворс
Lint должен проверять наличие недопустимых объектов, используемых в качестве групп просмотра.
«android:host отсутствует» для uris с нулевым хостом
Несовместимость KtAnalysisSessionProvider с проверками на ворс, представленными в версии 8.7.0-alpha04.
«Ложное срабатывание» WrongConstant при использовании PackageManager.ResolveInfoFlags.of с Kotlin

Плагин Android Gradle 8.7.1

Исправленные проблемы
Плагин Android Gradle
в документации agp много неясного
Ворс
AGP 8.6.1: Регрессия — ошибка проверки WrongConstant при использовании [Int].toLong() внутри @LongDef в Kotlin
Ошибка «Необходимо указать хотя бы один хост» при настройке схемы фильтра намерений http или https.

Плагин Android Gradle 8.7.2

Исправленные проблемы
Ворс
AGP 8.7.0 — Lint False Positive RestrictedApi на NavOptionsBuilder.popUpTo
Шринкер (R8)
[R8 8.6.27] Реализация метода заменена на `throw null`
Файлы proguard для Android по умолчанию выдают предупреждение при использовании с текущей версией R8.
MissingStartupProfileItemsDiagnostic приводит к сбою клиента Gradle из-за ошибки нехватки памяти, если сообщение слишком велико

Плагин Android Gradle 8.7.3

Исправленные проблемы
Ворс
Множество отсутствующих предупреждений о методах API анализа при запуске lint
Ложноположительная проверка lint android.permission.SCHEDULE_EXACT_ALARM предоставляется только системным приложениям.