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

Репозиторий 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.6.0 из файла build.gradle.kts :

Котлин

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

классный

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

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

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

Обновить Gradle

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

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

Версия плагина Минимальная необходимая версия Gradle
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.6 с помощью Gradle Wrapper. Обратите внимание: вам нужно запустить эту команду дважды , чтобы обновить как Gradle, так и саму оболочку Gradle (дополнительную информацию см. в разделе Обновление оболочки Gradle ).

gradle wrapper --gradle-version 8.6

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

...
distributionUrl = https\://services.gradle.org/distributions/gradle-8.6-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
Предварительный просмотр ванильного мороженого Медуза | 2023.3.1 8.4
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,7 8,7 Чтобы узнать больше, см. обновление Gradle .
Инструменты сборки SDK 34.0.0 34.0.0 Установите или настройте инструменты сборки SDK.
НДК Н/Д 26.1.10909125 Установите или настройте другую версию NDK.
ЯДК 17 17 Дополнительные сведения см. в разделе Настройка версии JDK .

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

Плагин Android Gradle 8.6.0

Исправленные проблемы
Плагин Android Gradle
Регрессия AGP 7.0.0-alpha10: не удалось применить плагин com.android.internal.library, когда привязка данных включена.
Ошибки при запуске lint с K2 UAST и без него
Манифест не создан для конфигурации androidTest варианта.
AGP 8.4 пытается настроить профили запуска в отладочных сборках
[Koala 2024.1.2 Canary 2] Ошибка при запуске модуля базового профиля в разделенном APK
Очистить/удалить ProjectInfo
Обновите устаревший документ kdoc для isIncludeAndroidResources в AGP DSL.
Lint использует каталог res без добавления зависимости задачи
AGP 8.5: выполняется гораздо больше задач «mergeDebugResources», что замедляет сборку.
Добавление каталога srcs через Variant API не работает должным образом
Дексер (D8)
Обновите базу данных API до Android 15 (уровень API 35).
java.lang.VerifyError: верификатор отклонил класс com.pax.log.LogUtils: java.lang.StackTraceElement com.pax.log.LogUtils.getCaller(com.pax.log.b, java.lang.StackTraceElement[], int) не удалось проверить
Ворс
Lint не вызывает visitAnnotationUsage для использования аннотированных аннотаций.
Ошибка проверки UnknownNullness при использовании аннотаций использования типов
[библиотека desugar] lint показывает ложное положительное предупреждение Предупреждения NewApi с включенной дешугаризацией
Неверное предупреждение диспетчера учетных данных Lint при износе
Подсказка: SetTextI18n жалуется на присвоение пустой строки.
Интеграция Линта
Задачи Lint завершаются сбоем при включенной сборке
Шринкер (R8)
[r8 8.5] Горизонтальное слияние классов r8 вызывает ошибку проверки на Android5 при отключении моделирования API
Выпуск Wear OS, созданный с помощью плагина Gradle 8.4.0/8.5.0, может вызывать ошибку java.lang.IllegalAccessError.
R8 неявно заменяет пустое предложение-член соответствием ()
[r8 8.5] вертикальное слияние классов, вызывающее NPE во время выполнения
Ошибка обработки R8, возможно, из-за оператора сдвига вправо
R8 (AGP 8.5.0+) завершается с ошибкой «Неожиданная перезапись элемента: ... на два разных элемента:...»
Файл dex, созданный R8, показывает «Невозможно найти статический основной (String []) в «Тесте»» при выполнении.
Различное поведение программ, упакованных R8 и D8
R8 NullPointer после обновления до Kotlin 2.0

Плагин Android Gradle 8.6.1

Исправленные проблемы
Дексер (D8)
Задача/преобразование Dexing генерирует недетерминированное содержимое classs.dex.
Шринкер (R8)
R8 8.5.x StackOverflowError в SimpleInliningConstraintAnaанализе
Задача: xxxx: minifyXXXReleaseWithR8 ОШИБКА: R8: java.util.ConcurrentModificationException
java.lang.NullPointerException: невозможно вызвать «com.android.tools.r8.ir.anaанализ.type.TypeElement.asClassType()»