Плагин 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 не работает с build-tools 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 и выше
Ворс
Проверка экземпляра lint не обрабатывает 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' не имеет настроенного значения».
Интеграция Линта
Ошибка линтинга 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() возвращает пустой