Плагин Android Gradle 9.2 – это второстепенный выпуск, в который входит ряд новых функций и улучшений.
Совместимость
Максимальный уровень API, поддерживаемый плагином Android Gradle 9.2, – 37.0. Другая информация о совместимости:
| Минимальная версия | Версия по умолчанию | Примечания | |
|---|---|---|---|
| Gradle | 9.4.1 | 9.4.1 | Подробнее о том, как обновить Gradle… |
| Инструменты сборки SDK | 36.0.0 | 36.0.0 | Установите или настройте инструменты сборки SDK. |
| NDK | Н/Д | 28.2.13676358 | Установите или настройте другую версию NDK. |
| JDK | 17 | 17 | Подробнее о том, как задать версию JDK… |
| Плагин Kotlin Gradle (KGP) | 2.2.10 | 2.2.10 | Подробнее о зависимости от плагина Kotlin Gradle во время выполнения… |
Единые отчеты о покрытии и тестировании
В AGP 9.2.0-alpha07 добавлены задачи для создания HTML-панелей, на которых собраны результаты тестирования и данные о покрытии для разных типов тестов (модульных и инструментальных), модулей и вариантов сборки. Подробнее о том, как создавать единые отчеты о покрытии кода и просматривать единые отчеты о тестировании…
Изменения в R8
В AGP 9.2.0 включены следующие изменения R8:
Более строгая семантика -keepattributes для сохранения невидимых во время выполнения аннотаций
Аннотации, которые не видны во время выполнения, нельзя прочитать во время выполнения. Поэтому D8 безусловно удаляет невидимые во время выполнения аннотации, и это нельзя изменить.
Для совместимости с ProGuard R8 поддерживает вывод невидимых во время выполнения аннотаций. Но при компиляции в DEX аннотации, невидимые во время выполнения, обычно не сохраняются. Однако для R8 обычно используется удобное правило -keepattributes *Annotation* (напрямую или косвенно, через правила сохранения для потребителей), чтобы сохранить аннотации, видимые во время выполнения.
К сожалению, при этом также сохраняются невидимые аннотации времени выполнения.
Чтобы устранить эту проблему и обеспечить соответствие поведению 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 9.2.1
| Устраненные проблемы | ||
|---|---|---|
| Плагин Android Gradle |
|
|
Плагин Android Gradle 9.2.0
| Устраненные проблемы | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Плагин Android Gradle |
|
|||||||||||||||
| Lint |
|
|||||||||||||||
| Интеграция с Lint |
|
|||||||||||||||
| Shrinker (R8) |
|
|||||||||||||||