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

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

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

Максимальный уровень API, поддерживаемый плагином Android Gradle 8.2, — 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 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.
Оптимизация выполняется даже только с D8?
Уменьшитель (R8)
[R8 8.3.21] R8 8.3.21 на 1,57 МБ больше, чем R8 8.1.56
class.getInterfaces() возвращает пустое значение

Android Gradle plugin 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 аварийно завершает работу.
В R8 возникает ошибка ClassCastException при включенной переупаковке и отключенных сжатия, обфускации и оптимизации.
R8 завис в BridgeAnalyzer.analyzeMethod
R8 v8.2.33, сбой выполнения "java.lang.VerifyError: Bad type on operand stack" после обновления.

Плагин 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 requires ASM9"
Целевой байт-код 17 при компиляции AGP
Удалите VariantManager.getModifiedName
Параметр AndroidTest.packaging.jniLibs.keepDebugSymbols не влияет на упаковку тестов AndroidTest.
Задачи тестирования оборудования GMD зависают, а при повторной попытке начинают завершаться с ошибкой.
В agp 8.1.0 функция generateLocaleConfig использует недетерминированный порядок выполнения, что нарушает воспроизводимость сборок.
В файле ProcessApplicationManifest.navigationJsons указаны абсолютные пути к файлам.
После создания AnalyticsService доступ к GradleBuildProject.Builder через AnalyticsConfiguratorService запрещен.
Параметр AndroidTest.packaging.jniLibs.keepDebugSymbols не влияет на упаковку тестов AndroidTest.
Компиляция допускает использование недопустимых цветовых значений.
Неправильное значение параметра "ReplaceWith" для VariantBuilder.
В Gradle 8.1 нарушено кэширование конфигураций из-за файла .gradle/.android/analytics.settings.
В сообщениях об устаревании не используется `ReplaceWith`.
Предоставить способ получения версии NDK по умолчанию.
Для работы плагина Android Gradle требуется Java 17.
Несовместимость ASM Transform и toAppend()
Исправление ошибок 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».
Обновите 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 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.