Плагин Android Gradle 8.2.0 (ноябрь 2023 г.)

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

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

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

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

Новый макрос для указания пути к JDK

#GRADLE_LOCAL_JAVA_HOME — это новый макрос, который можно использовать для указания пути к JDK. Это упрощает и безопаснее указание домашнего пути Java, используемого для выполнения демона Gradle (фонового процесса) в вашем проекте. Выбранный путь хранится в поле java.home файла .gradle/config.properties . Задайте это поле в настройках Gradle JDK в Android Studio: Файл (или Android Studio на macOS) > Настройки > Сборка, выполнение, развертывание > Инструменты сборки > Gradle .

Новые проекты будут использовать #GRADLE_LOCAL_JAVA_HOME по умолчанию. Существующие проекты будут автоматически перенесены на новый макрос после успешной синхронизации, если вы ещё не используете макрос типа #JAVA_HOME .

Основные преимущества нового макроса следующие:

  • Вы можете вручную изменить путь JDK, чтобы запустить синхронизацию, не открывая предварительно проект.
  • Меньше ошибок, связанных с несовместимостью версий Gradle и проекта JDK, поскольку есть единый источник достоверной информации для выбора Gradle JDK.

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

Плагин Android Gradle 8.2.0

Исправленные проблемы
Плагин Android Gradle
Пользовательские типы источников должны создавать многовариантные наборы источников.
Проверка версии SDK не обрабатывает пользователей расширений SDK.
DependenciesInfoBuilder требует обновления API + документация
DexingNoClasspathTransform (minSdk >= 24) с целевой версией Java 11 завершается ошибкой из-за отсутствия вложенных элементов
DslExtension.Builder.extendProjectWith() не работает так, как описано в Groovy
Добавьте API VariantSelector.withFlavor, который не использует kotlin.Pair
AndroidLintAnalysisTask ( :lintAnalyzeExternalRelease) имеет пропуск кэша, поскольку `proguard.txt` был изменен
Объединенный манифест приложения содержит атрибуты extractNativeLibs и useEmbeddedDex из зависимостей.
AIDL не работает с инструментами сборки 33.0.0
AGP: предоставить путь к инструменту AIDL и файлу AIDL фреймворка как общедоступному API
Запрос: пусть IDE предложит исправление для «PermittedSubclasses требует ASM9»
При компиляции AGP использовать целевой байт-код 17
Удалить VariantManager.getModifiedName
AndroidTest.packaging.jniLibs.keepDebugSymbols не влияет на упаковку androidTest.
Тестовые задачи GMD-приборов зависают и при повторной попытке начинают давать сбои.
generateLocaleConfig в agp 8.1.0 использует недетерминированный порядок, что нарушает воспроизводимые сборки.
ProcessApplicationManifest.navigationJsons содержит файлы с абсолютными путями.
Доступ к GradleBuildProject.Builder через AnalyticsConfiguratorService невозможен после создания AnalyticsService.
AndroidTest.packaging.jniLibs.keepDebugSymbols не влияет на упаковку androidTest.
Компиляция разрешена для недопустимых значений цвета
Неправильный «ReplaceWith» для VariantBuilder
Gradle 8.1 нарушает кэширование конфигурации из-за .gradle/.android/analytics.settings
В сообщениях об устаревании не используется `ReplaceWith`
Опишите способ получения версии NDK по умолчанию
Для работы плагина Android Gradle требуется Java 17.
Несовместимость ASM Transform и toAppend()
Исправление ошибок LintErrors при запуске lint с K2 UAST через Gradle в проекте KMP.
Поддержка missingDimensionStrategy на уровне варианта и, возможно, сопоставление типа/варианта сборкиFallback
`android.injected.studio.version` был удален в Android Studio Giraffe
Добавить возможность отключения AndroidXDependencyCheck
generateLocaleConfig в agp 8.1.0 использует недетерминированный порядок, что нарушает воспроизводимые сборки.
Объявить требования к версии R8/D8 в метаданных AAR (например, для coreLibraryDesugaring и нового API out-of-lining)
Предупреждение синхронизации: «GradleBuildProject.Builder не должен быть доступен через AnalyticsConfiguratorService после создания AnalyticsService».
Обновление до версии Gradle 8.2 или RC
Невозможно получить доступ к «java.lang.Comparable»
androidResources недоступен в модуле библиотеки Android
Не удалось выполнить задачу «:app:mergeReleaseClasses» после обновления AGP с 8.0.2 до 8.1.0
Gradle 8.1 нарушает кэширование конфигурации из-за .gradle/.android/analytics.settings
[AGP 8.1.0] Тест ./gradlew завершается ошибкой «Не удалось найти выходные данные манифеста», если значения splits.abi.isEnable и testOptions.unitTests.isIncludeAndroidResources равны true.
Android Studio Giraffe не учитывает versionCodeOverride с AGP 8.1
AGP 8.1.0 удаляет приложение после выполнения инструментальных тестов — 7.4.2 этого не делает.
Преобразование APK приводит к ошибке ListingFileRedirectTask
РЕГРЕССИЯ HEDGEHOG: кнопка «Выполнить» задерживается на несколько секунд (Создание спецификации)
Дексер (D8)
Включить собственные записи и запечатанные классы при дексировании для min-api 34 и выше
Линт
Инстанцированная проверка линта некорректно обрабатывает AppComponentFactory
Альфа-версии Lint 8.2.0 по-прежнему не поддерживают импорт функций верхнего уровня в Kotlin
Добавить возможность не включать номера строк и столбцов в базовую линию lint.
Добавить возможность не включать номера строк и столбцов в базовую линию lint.
Тесты Lint не поддерживают возможности языка Java 17
Bumblebee 2021.1.1 Patch 1 сообщает, что старая версия (20030203.000550) commons-io новее, чем 2.11.0.
Альфа-версии Lint 8.2.0 по-прежнему не поддерживают импорт функций верхнего уровня в Kotlin
Bumblebee 2021.1.1 Patch 1 сообщает, что старая версия (20030203.000550) commons-io новее, чем 2.11.0.
Android Studio ошибочно отмечает указанную версию как устаревшую.
Lint игнорирует проблему UseValueOf при использовании K2 UAST
Android Lint обнаружил неожиданные проблемы в другом проекте
Android Lint дает сбой в библиотеке KMP, у которой «свойство 'variantInputs.name' не имеет настроенного значения».
Интеграция Lint
Ошибка линтинга DuplicatePlatformClasses из-за зависимости testImplementation
Усадочный аппарат (R8)
java.lang.VerifyError: Верификатор отклонил класс
Сборка зависает на :minifyReleaseWithR8 при использовании библиотеки Apache POI
Kotlin 1.9 приводит к тому, что лямбда-выражения Kotlin уничтожаются R8, если удаляются проверки на null.

Плагин Android Gradle 8.2.1

Исправленные проблемы
Плагин Android Gradle
Не запускайте задачу дексирования для классов подпроектов, если они уже дексированы с помощью преобразований артефактов.
Плагин Android Gradle не работает с JavaVersion.VERSION_11 и OpenJDK 21 ea
Дексер (D8)
Записи Desugar для Android U
Усадочный аппарат (R8)
R8 генерирует сломанный dex, что приводит к исключению приведения класса во время выполнения
R8 приводит к изменению интерфейса на недоступный
Сбой R8 Flurry SDK с AGP 8.2.0
Android - R8 приводит к сбою подкласса LinearLayoutManager
ClassCastException в R8 при включенной переупаковке и отключенных сжатии, обфускации и оптимизации
R8 застрял в BridgeAnalyzer.analyzeMethod
R8 v8.2.33, сбой выполнения «java.lang.VerifyError: Неправильный тип в стеке операндов» после обновления

Плагин Android Gradle 8.2.2

Исправленные проблемы
Плагин Android Gradle
Невозможно установить версию JaCoCo в AGP 8.2.0
Дексер (D8)
[библиотека desugared] Библиотека desugared версии 2.1 несовместима с предыдущими версиями R8
Оптимизации работают даже только с D8?
Усадочный аппарат (R8)
[R8 8.3.21] R8 8.3.21 на 1,57 МБ больше, чем R8 8.1.56
class.getInterfaces() возвращает пустой