Плагин Android Gradle 9.2.0 (апрель 2026 г.)

Android Gradle plugin 9.2 — это минорный релиз, включающий множество новых функций и улучшений.

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

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

Минимальная версия Версия по умолчанию Примечания
Грэдл 9.4.1 9.4.1 Для получения более подробной информации см. раздел «Обновление Gradle» .
Инструменты сборки SDK 36.0.0 36.0.0 Установите или настройте инструменты сборки SDK.
НДК Н/Д 28.2.13676358 Установите или настройте другую версию NDK.
JDK 17 17 Для получения более подробной информации см. раздел «Настройка версии JDK» .

Единые отчеты о покрытии и результатах тестирования

В AGP 9.2.0-alpha07 добавлены задачи для генерации HTML-панелей мониторинга, которые объединяют результаты и покрытие тестов различных типов (модульных и инструментальных), модулей и вариантов сборки, предоставляя исчерпывающий обзор на одной панели мониторинга. Для получения дополнительной информации см. разделы «Генерация унифицированных отчетов о покрытии кода» и «Просмотр унифицированных отчетов о тестировании» .

Изменения в R8

В AGP 9.2.0 включены следующие изменения R8.

Более строгая семантика -keepattributes для сохранения невидимости аннотаций во время выполнения.

Невидимые во время выполнения аннотации нельзя прочитать во время выполнения. Поэтому D8 безоговорочно удаляет невидимые во время выполнения аннотации, и изменить это невозможно.

Для обеспечения совместимости с ProGuard, R8 поддерживает вывод невидимых во время выполнения аннотаций. Однако при компиляции в DEX невидимые во время выполнения аннотации, как правило, не должны сохраняться. Тем не менее, распространенной практикой является включение удобного правила -keepattributes *Annotation* (прямо или косвенно из правил сохранения потребителя), чтобы R8 сохранял видимые во время выполнения аннотации. К сожалению, это также приводит к сохранению невидимых во время выполнения аннотаций.

Для решения этой проблемы и лучшего соответствия поведению D8, шаблоны -keepattributes с подстановочными знаками больше не соответствуют RuntimeInvisibleAnnotations , RuntimeInvisibleParameterAnnotations и RuntimeInvisibleTypeAnnotations . В результате невидимые во время выполнения аннотации будут сохраняться только в том случае, если имя атрибута указано явно без подстановочных знаков.

Теперь ни одно из следующих правил не будет препятствовать сохранению аннотаций невидимыми во время выполнения:

-keepattributes *
-keepattributes *Annotation*
-keepattributes *Invisible*

Чтобы аннотации оставались невидимыми во время выполнения, используйте следующее правило:

-keepattributes RuntimeInvisibleAnnotations,
                RuntimeInvisibleParameterAnnotations,
                RuntimeInvisibleTypeAnnotations

Поддержка отрицательных имен в правилах для участников

Язык конфигурации был расширен, и теперь вы можете сопоставлять данные по шаблонам с отрицательными именами элементов.

Например, чтобы найти все методы, которые не заканчиваются на "ForTesting", используйте следующее правило:

-keepclassmembers class com.example.MyClass {
  *** !*ForTesting(...);
}

Шаблоны имен членов также могут быть инвертированы в предварительном условии правил -if . Если инвертированный шаблон имени члена содержит подстановочные символы, такие подстановочные символы не могут быть использованы в качестве обратной ссылки в последующем правиле -if .

Исправлены ошибки

Android Gradle plugin 9.2.0-alpha04

Исправлены ошибки
Плагин Android Gradle
Переименование APK с использованием нового AGP DSL
Ошибка при доступе к bootClasspath (но не при его оценке): IllegalStateException: targetCompatibility еще не завершен.

Android Gradle plugin 9.2.0-alpha03

Исправлены ошибки
Плагин Android Gradle
Ошибка JdkImageTransform в JDK 26.
Автоматическое кодирование параметра minAgpVersion в метаданных AAR в AGP 10.0
Ворс
В отчетах Lint SARIF отображается усеченное контекстное окно из-за зависшего указателя смещения в файле `SarifReporter.kt`.
В клиенте Lint Gradle отсутствует критически важная функция, что делает его в лучшем случае ненадежным.
Интеграция Lint
В задачах Gradle для проверки синтаксиса игнорируется флаг --quiet

Android Gradle plugin 9.2.0-alpha02

Исправлены ошибки
Плагин Android Gradle
AGP 9.0. Нет эквивалента androidComponents.onVariant для applicationVariants.all.mergeAssetsProvider.
Файлы `*.xml.flat` содержат абсолютные пути к файлам.
Сервис R8D8ThreadPoolBuildService не зарегистрирован.
Интеграция Lint
Android Lint выдает ошибку при проверке пользовательскими скриптами, скомпилированными в байт-код Java 21.

Android Gradle plugin 9.2.0-alpha01

Исправлены ошибки
Плагин Android Gradle
Предупреждать пользователей, если у них есть commonTest, но они забыли использовать withHostTestBuilder.
[fused lib - public] OkHttp включает исходные коды
Не удается запустить androidDeviceTest с заполнителями манифеста в библиотеке (AGP 9.0.0 с плагином com.android.kotlin.multiplatform.library)
AGP должен выдавать предупреждение, если у пользователя в папке src/androidDeviceTest/java отключена поддержка Java.
Ворс
Lint — опечатка в сообщении