Плагин Android Gradle версии 9.2 — это минорный релиз, включающий множество новых функций и улучшений.
Совместимость
Максимальный уровень API, поддерживаемый плагином Android Gradle 9.2, — 37.0. Вот дополнительная информация о совместимости:
| Минимальная версия | Версия по умолчанию | Примечания | |
|---|---|---|---|
| Грэдл | 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.1
| Исправлены ошибки | ||
|---|---|---|
| Плагин Android Gradle |
| |
Плагин Android Gradle 9.2.0
| Исправлены ошибки | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Плагин Android Gradle |
| |||||||||||||||
| Ворс |
| |||||||||||||||
| Интеграция Lint |
| |||||||||||||||
| Уменьшитель (R8) |
| |||||||||||||||