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

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

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

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

Минимальная версия Версия по умолчанию Примечания
Грэдл 8.2 8.2 To learn more, see updating Gradle .
Инструменты сборки SDK 34.0.0 34.0.0 Установите или настройте инструменты сборки SDK.
NDK Н/Д 25.1.8937393 Установите или настройте другую версию NDK.
JDK 17 17 Для получения более подробной информации см. раздел «Настройка версии JDK» .

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

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

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

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

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

Исправлены ошибки

Плагин Android Gradle 8.2.2

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

Android Gradle plugin 8.2.1

Fixed Issues
Плагин Android Gradle
Не запускайте задачу декодирования для классов подпроектов, если они уже декодированы с помощью преобразований артефактов.
Плагин Android Gradle завершился с ошибкой из-за JavaVersion.VERSION_11 и OpenJDK 21 ea.
Дексер (D8)
Desugar records for Android U
Shrinker (R8)
R8 генерирует некорректный dex-код, что приводит к исключению приведения типов классов во время выполнения.
Ошибка R8 приводит к изменению интерфейса на недоступный.
R8 Flurry SDK crash with AGP 8.2.0
В Android R8 подкласс LinearLayoutManager аварийно завершает работу.
В R8 возникает ошибка ClassCastException при включенной переупаковке и отключенных сжатия, обфускации и оптимизации.
R8 stuck in BridgeAnalyzer.analyzeMethod
R8 v8.2.33, сбой выполнения "java.lang.VerifyError: Bad type on operand stack" после обновления.

Android Gradle plugin 8.2.0

Fixed Issues
Android Gradle Plugin
Пользовательские типы источников должны создавать наборы источников с различными вариантами.
Проверка версии SDK не обрабатывает пользователей расширений SDK.
DependenciesInfoBuilder needs API update + doc
DexingNoClasspathTransform (minSdk >= 24) с целевой платформой Java 11 завершается с ошибкой из-за отсутствия членов вложенной структуры.
Метод DslExtension.Builder.extendProjectWith() не работает так, как описано в Groovy.
Добавить API VariantSelector.withFlavor, который не использует kotlin.Pair.
AndroidLintAnalysisTask ( В программе :lintAnalyzeExternalRelease произошел промах кэша из-за изменений в файле `proguard.txt`.
В объединенном манифесте приложения содержатся атрибуты extractNativeLibs и useEmbeddedDex из зависимостей.
AIDL fails with build-tools 33.0.0
AGP: Предоставляет доступ к файлу AIDL инструмента и фреймворка AIDL в виде публичного API.
Запрос: пусть IDE предложит исправление для ошибки "PermittedSubclasses requires ASM9"
Target bytecode 17 when compiling AGP
Remove VariantManager.getModifiedName
Параметр AndroidTest.packaging.jniLibs.keepDebugSymbols не влияет на упаковку тестов AndroidTest.
Задачи тестирования оборудования GMD зависают, а при повторной попытке начинают завершаться с ошибкой.
В agp 8.1.0 функция generateLocaleConfig использует недетерминированный порядок выполнения, что нарушает воспроизводимость сборок.
В файле ProcessApplicationManifest.navigationJsons указаны абсолютные пути к файлам.
После создания AnalyticsService доступ к GradleBuildProject.Builder через AnalyticsConfiguratorService запрещен.
Параметр AndroidTest.packaging.jniLibs.keepDebugSymbols не влияет на упаковку тестов AndroidTest.
Compilation allowed for illegal color values
Incorrect "ReplaceWith" for VariantBuilder
В Gradle 8.1 нарушено кэширование конфигураций из-за файла .gradle/.android/analytics.settings.
Deprecation messages doesn't use `ReplaceWith`
Expose a way to get the default NDK version
Android Gradle plugin requires Java 17 to run.
ASM Transform and toAppend() incompatibility
Исправление ошибок LintError при запуске линтера с K2 UAST через Gradle в проекте KMP.
Поддержка параметра missingDimensionStrategy на уровне варианта, а также, возможно, резервного варианта для сопоставления типа/варианта сборки.
Параметр `android.injected.studio.version` был удален в Android Studio Giraffe.
Добавить возможность отключения AndroidXDependencyCheck
В agp 8.1.0 функция generateLocaleConfig использует недетерминированный порядок выполнения, что нарушает воспроизводимость сборок.
Указывайте требования к версиям R8/D8 в метаданных AAR (например, для coreLibraryDesugaring и вывода информации из кода API).
Предупреждение синхронизации: «Доступ к GradleBuildProject.Builder не следует осуществлять через AnalyticsConfiguratorService после создания AnalyticsService».
Update to Gradle 8.2 milestone or 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 test завершается с ошибкой "Не удалось найти выходные данные манифеста", если параметры splits.abi.isEnable и testOptions.unitTests.isIncludeAndroidResources имеют значение true.
Android Studio Giraffe не учитывает параметр versionCodeOverride в AGP 8.1.
AGP 8.1.0 удаляет приложение после выполнения инструментальных тестов, а версия 7.4.2 — нет.
Преобразование APK-файла приводит к ошибке в ListingFileRedirectTask.
РЕГРЕССИЯ ЕЖА: Кнопка «Запуск» с задержкой в ​​несколько секунд (Создание спецификации)
Дексер (D8)
Включите использование нативных записей и запечатанных классов при использовании Dex для минимального API 34 и выше.
Ворс
Созданный экземпляр линтера плохо обрабатывает AppComponentFactory.
В альфа-версиях Lint 8.2.0 по-прежнему отсутствует поддержка импорта функций верхнего уровня в Kotlin.
Добавить опцию, позволяющую не включать номера строк и столбцов в базовую строку кода.
Добавить опцию, позволяющую не включать номера строк и столбцов в базовую строку кода.
Тесты 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: `property 'variantInputs.name' doesn't have configured value`.
Интеграция Lint
Ошибка проверки синтаксиса DuplicatePlatformClasses из зависимости testImplementation
Уменьшитель (R8)
java.lang.VerifyError: Verifier rejected class
Сборка зависает на вызове :minifyReleaseWithR8 при использовании библиотеки Apache POI.
В Kotlin 1.9 лямбда-функции Kotlin уничтожаются R8, если удалены проверки на null.