Плагин 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.
ЯДК 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.
DependencyInfoBuilder требует обновления API + документация
DexingNoClasspathTransform (minSdk >= 24) с целью Java 11 завершается сбоем из-за отсутствия членов гнезда
DslExtension.Builder.extendProjectWith() не работает, как описано в Groovy
Добавьте API VariantSelector.withFlavor, который не использует kotlin.Pair.
АндроидЛинтАнализтаск ( :lintAnalyzeExternalRelease) имеет промах в кэше, поскольку файл proguard.txt изменился.
Объединенный манифест приложения содержит атрибуты extractNativeLibs и useEmbeddedDex из зависимостей.
AIDL не работает с инструментами сборки 33.0.0
AGP: предоставить путь к инструменту AIDL и файлу AIDL платформы как общедоступный API.
Просьба: пусть IDE предложит исправление для «PermittedSubclasses требует ASM9».
Целевой байт-код 17 при компиляции AGP
Удалить VariantManager.getModifiedName
AndroidTest.packaging.jniLibs.keepDebugSymbols не влияет на упаковку androidTest.
Задачи тестирования приборов GMD зависают, и при повторной попытке начинается сбой
генерироватьLocaleConfig в 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.
Поддержка отсутствия уровня вариантаDimensionStrategy и, возможно, сопоставление типа сборки/вариантаFallback.
`android.injected.studio.version` был удален в Android Studio Giraffe.
Добавить возможность отключения AndroidXDependencyCheck.
генерироватьLocaleConfig в agp 8.1.0 использует недетерминированный порядок, нарушая воспроизводимые сборки.
Рекламируйте требования к версии 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 завершается неудачей с сообщением «Невозможно найти выходные данные манифеста», если оба файла Splits.abi.isEnable и testOptions.unitTests.isIncludeAndroidResources имеют значение true
Android Studio Giraffe не учитывает versionCodeOverride с AGP 8.1.
AGP 8.1.0 удаляет приложение после запуска инструментальных тестов, а 7.4.2 — нет.
Преобразование APK приводит к ошибке с помощью ListingFileRedirectTask
РЕГРЕССИЯ ЕЖА: кнопка «Выполнить» задерживается на несколько секунд (Создание спецификации)
Дексер (D8)
Включить встроенную запись и запечатанные классы при индексировании для min-api 34 и выше.
Ворс
Экземплярная проверка ворса плохо обрабатывает AppComponentFactory.
Альфа-версии Lint 8.2.0 по-прежнему не поддерживают импорт функций верхнего уровня в Kotlin
Добавьте возможность не включать номера строк и столбцов в базовый план lint.
Добавьте возможность не включать номера строк и столбцов в базовый план lint.
Lint-тесты не поддерживают функции языка Java 17.
В патче 1 Bumblebee 2021.1.1 говорится, что старая версия (20030203.000550) commons-io новее, чем 2.11.0.
Альфа-версии Lint 8.2.0 по-прежнему не поддерживают импорт функций верхнего уровня в Kotlin
В патче 1 Bumblebee 2021.1.1 говорится, что старая версия (20030203.000550) commons-io новее, чем 2.11.0.
Android Studio неправильно помечает указанную версию как устаревшую.
Lint игнорирует проблему UseValueOf при использовании K2 UAST
Неожиданные проблемы в другом проекте, отмеченные Android Lint
Android Lint не работает в библиотеке KMP, поскольку для свойства «variantInputs.name» не задано настроенное значение.
Интеграция Линта
Ошибка проверки DuplicationPlatformClasses из-за зависимости testImplementation
Шринкер (R8)
java.lang.VerifyError: класс, отклоненный проверяющим
Сборка зависает на :minifyReleaseWithR8 при использовании библиотеки Apache POI.
Kotlin 1.9 приводит к уничтожению лямбда-выражений Kotlin с помощью R8, если удалены нулевые проверки

Плагин Android Gradle 8.2.1

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