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

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

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

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

Минимальная версия Версия по умолчанию Примечания
Gradle 8.2 8.2 Подробнее об обновлении Gradle…
SDK Build Tools; 34.0.0 34.0.0 Установите или настройте SDK Build Tools.
NDK Н/Д 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: File (Файл) (или Android Studio в macOS) > Settings (Настройки) > Build, Execution, Deployment (Сборка, выполнение, развертывание) > Build Tools (Инструменты сборки) > Gradle.

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

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

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

Устраненные проблемы

Плагин Android Gradle 8.2.2

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

Плагин Android Gradle 8.2.1

Устраненные проблемы
Плагин Android Gradle
Не запускать задачу dexing для классов подпроектов, если они уже обработаны с помощью преобразования артефактов.
Сбой плагина Android Gradle при использовании JavaVersion.VERSION_11 и OpenJDK 21 ea
Dexer (D8)
Дешугаринг записей для Android U
Shrinker (R8)
R8 генерирует поврежденный dex-файл, что приводит к ошибке ClassCastException во время выполнения
R8 изменяет интерфейс на недоступный
Сбой R8 Flurry SDK с AGP 8.2.0
Android: R8 вызывает сбой подкласса LinearLayoutManager
ClassCastException в R8, когда переупаковка включена, а сжатие, обфускация и оптимизация отключены
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 needs API update + doc
DexingNoClasspathTransform (minSdk >= 24) с целевой версией Java 11 завершается ошибкой из-за отсутствия элементов вложенности
DslExtension.Builder.extendProjectWith() не работает, как описано в Groovy
Добавлен API VariantSelector.withFlavor, который не использует kotlin.Pair.
AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) has a cache miss because `proguard.txt` has changed
Объединенный манифест приложения содержит атрибуты extractNativeLibs и useEmbeddedDex из зависимостей
Сбой AIDL при использовании build-tools 33.0.0
AGP: путь к инструменту AIDL и файлу фреймворка AIDL в качестве общедоступного API
Запрос: пусть IDE предлагает исправление для ошибки PermittedSubclasses requires 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 на уровне варианта и, возможно, matchingFallback для типа/варианта сборки.
Свойство android.injected.studio.version было удалено в Android Studio Giraffe.
Добавлена возможность отключить AndroidXDependencyCheck
generateLocaleConfig в AGP 8.1.0 использует недетерминированный порядок, нарушая воспроизводимые сборки
Указывать требования к версии R8 / D8 в метаданных AAR (например, для coreLibraryDesugaring и нового API out-of-lining).
Предупреждение о синхронизации: "GradleBuildProject.Builder should not be accessed through AnalyticsConfiguratorService after AnalyticsService is created"
Обновите Gradle до версии 8.2 milestone или 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 fails with "Unable to find manifest output" if both splits.abi.isEnable and testOptions.unitTests.isIncludeAndroidResources are true
Android Studio Giraffe не учитывает versionCodeOverride с AGP 8.1
AGP 8.1.0 удаляет приложение после запуска инструментальных тестов, а 7.4.2 – нет
При преобразовании APK-файла возникает ошибка ListingFileRedirectTask
HEDGEHOG REGRESSION: Run button is delayed by a few seconds (Creating spec)
Dexer (D8)
Включить нативные записи и запечатанные классы при дексинге для min-api 34 и выше
Lint
Экземпляр проверки 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, и появляется сообщение об ошибке "property 'variantInputs.name' doesn't have a configured value".
Интеграция с Lint
Ошибка DuplicatePlatformClasses lint из зависимости testImplementation
Shrinker (R8)
java.lang.VerifyError: Verifier rejected class
Сборка зависает на :minifyReleaseWithR8 при использовании библиотеки Apache POI
В Kotlin 1.9 лямбда-выражения Kotlin уничтожаются R8, если удалены проверки на null.