Плагин Android Gradle 9.3 – это второстепенный выпуск, в который входит ряд новых функций и улучшений.
Совместимость
Максимальный уровень API, поддерживаемый плагином Android Gradle 9.3, – 37.
Другая информация о совместимости:
Отдельная задача Gradle для анализатора конфигурации R8
В плагине Android Gradle 9.3 появилась специальная задача Gradle для запуска анализатора конфигурации R8 отдельно. Анализатор конфигурации R8 помогает оптимизировать правила сокращения и обфускации кода приложения.
./gradlew :app:analyzeReleaseR8Config
Задача :app:analyzeReleaseR8Config создает отчет, не завершая конвейер компиляции APK или набора App Bundle. Это позволяет быстрее получать обратную связь и ускоряет процесс разработки правил хранения. Также отчет можно создать автоматически, выполнив сборку выпуска R8 (например, assembleRelease или bundleRelease).
Подробнее о том, как запустить отдельную задачу Gradle для создания отчета…
Устраненные проблемы
Плагин Android Gradle 9.3.3
| Устраненные проблемы |
| Плагин Android Gradle |
|
Новый DSL-код оптимизации { enable = true } в AGP 9.3.0 не задает isMinifyEnabled в объекте ApplicationVariant
|
|
| Dexer (D8) |
|
D8 9.2.14 примерно на 38% медленнее, чем 8.13.6, при выполнении задачи `mergeProjectDexDebug` с одинаковыми входными и выходными данными.
|
|
| Shrinker (R8) |
|
Режим отладки D8: ArrayIndexOutOfBoundsException: индекс -1 выходит за пределы длины 31 – регрессия между R8 8.8.34 и 8.9.27
|
|
VerifyError: Outliner неправильно расширяет регион try-catch, из-за чего регистр не инициализирован
|
|
R8 записывает файл `.kotlin_module` с двоеточием в имени, что недопустимо в Windows
|
|
Недетерминированность сборки R8: одинаковые входные данные приводят к разным файлам DEX и сопоставления (регрессия из-за сохранения инструкций Assume в LIR)
|
|
Сопоставление копий с R8 9.1
|
|
AGP иногда создает DEX-файлы, которые не проходят проверку и приводят к сбою приложения при запуске
|
|
NullPointerException: не удается вызвать Position.getOutermostCaller(), так как entryPosition имеет значение null
|
|
Высокое потребление памяти на правило
|
|
R8: VerifyError на Android 4.4
|
|
Плагин Android Gradle 9.3.2
| Устраненные проблемы |
| Lint |
|
AGP 9.3 lint crashes on JDK 17 — NoSuchMethodError: java.util.List.removeLast() in bundled intellij-core JavaDocParser
|
|
Плагин Android Gradle 9.3.1
| Устраненные проблемы |
|
В AGP 9.3.1 не было исправлено ни одной общедоступной проблемы
|
Плагин Android Gradle 9.3.0-rc02
| Устраненные проблемы |
|
В AGP 9.3.0-rc02 не было исправлено ни одной общедоступной проблемы
|
Плагин Android Gradle 9.3.0-rc01
| Устраненные проблемы |
|
В AGP 9.3.0-rc01 не было отмечено как исправленных общедоступных проблем
|
Плагин Android Gradle 9.3.0-alpha12
| Устраненные проблемы |
| Плагин Android Gradle |
|
Сбой сборки: утечка дескриптора файла в classes.jar в compile_library_classes_jar не позволяет пересобрать проект в Windows до перезапуска IDE
|
|
| Lint |
|
Lint рассматривает импортированную библиотеку Java как проект для Android, игнорируя версию SDK для компиляции
|
|
Плагин Android Gradle 9.3.0-alpha11
| Устраненные проблемы |
|
В версии AGP 9.3.0-alpha11 не было исправлено ни одной общедоступной проблемы
|
Плагин Android Gradle 9.3.0-alpha10
| Устраненные проблемы |
|
В AGP 9.3.0-alpha10 не было исправлено ни одной общедоступной проблемы
|
Плагин Android Gradle 9.3.0-alpha09
| Устраненные проблемы |
|
В AGP 9.3.0-alpha09 не было исправлено ни одной общедоступной проблемы
|
Плагин Android Gradle 9.3.0-alpha08
| Устраненные проблемы |
|
В AGP 9.3.0-alpha08 не было исправлено ни одной общедоступной проблемы
|
Плагин Android Gradle 9.3.0-alpha07
| Устраненные проблемы |
|
В версии AGP 9.3.0-alpha07 не было исправлено ни одной общедоступной проблемы
|
Плагин Android Gradle 9.3.0-alpha06
| Устраненные проблемы |
| Плагин Android Gradle |
|
JavaDocGenerationTask должен использовать рабочих
|
|
Плагин Android Gradle 9.3.0-alpha05
| Устраненные проблемы |
| Shrinker (R8) |
|
Сопоставление обфускации L8 не включено в файл mapping.txt приложения
|
|
Плагин Android Gradle 9.3.0-alpha04
| Устраненные проблемы |
| Плагин Android Gradle |
|
Набор исходных файлов keepRules KMP игнорируется, если не задано значение true для параметра it.consumerKeepRules.publish
|
|
Плагин Android Gradle 9.3.0-alpha03
| Устраненные проблемы |
| Плагин Android Gradle |
|
java.lang.ClassNotFoundException: Didn't find class "com.android.tools.r8.RecordTag" after upgrading gradle to 9.2.0 (java.lang.ClassNotFoundException: не удалось найти класс "com.android.tools.r8.RecordTag" после обновления Gradle до версии 9.2.0)
|
|
| Lint |
|
Ошибка Lint, когда удаление неиспользуемых ресурсов отключено
|
|
Плагин Android Gradle 9.3.0-alpha02
| Устраненные проблемы |
| Плагин Android Gradle |
|
Запрос на добавление функции: поддержка native_libs_merge_blame_file в плагине Android Gradle
|
|
| Lint |
|
В сообщении об ошибке AnnotationDetector отсутствует обратная кавычка
|
|
Ошибка Lint, когда удаление неиспользуемых ресурсов отключено
|
|
Плагин Android Gradle 9.3.0-alpha01
| Устраненные проблемы |
| Плагин Android Gradle |
|
Проблема с автоматически сгенерированными кодами версий
|
|
AGP: отказ от использования Project в качестве обозначения зависимостей
|
|
| Lint |
|
Ложноположительный результат проверки Lint с UseKtx
|
|
Плагин Android Gradle 9.3.0
| Устраненные проблемы |
|
В AGP 9.3.0 не было исправлено ни одной общедоступной проблемы
|
Обновленный язык DSL для оптимизации, позволяющий настраивать правила сохранения R8
Представлен обновленный DSL оптимизации для настройки правил сохранения для оптимизации R8, поддерживаемый модулями приложений и тестами модулей библиотек. Чтобы настроить оптимизацию с помощью обновленного DSL, используйте новый блок optimization. Для приложений настройте блок optimization в типе сборки (например, release или debug) в скрипте сборки на уровне приложения. Обновленный язык DSL для оптимизации упрощает конфигурацию R8:
- Включение оптимизации позволяет оптимизировать код и удалять неиспользуемые ресурсы.
- Вам больше не нужно указывать файл правил хранения Android по умолчанию.
Обратите внимание, что устаревший язык DSL по-прежнему поддерживается.
Введение наборов исходных файлов для определения правил хранения
Правила сохранения должны быть размещены в наборе исходных файлов src/<variant>/keepRules/ с суффиксом файла .keep. Наборы исходных файлов для правил хранения поддерживаются обновленным и устаревшим языками DSL оптимизации. Использование наборов исходных файлов для правил сохранения поддерживается в модулях приложений, модулях библиотек и как способ определения правил потребителя в модулях Kotlin Multiplatform (KMP).