Плагин Android Gradle 8.2.0 — это основной выпуск, включающий множество новых функций и улучшений.
Совместимость
Максимальный уровень API, который поддерживает плагин Android Gradle 8.2, — это уровень API 34. Вот другая информация о совместимости:
Новый макрос для указания пути к 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 для классов подпроектов, если они уже dex'd с помощью преобразований артефактов. | Плагин 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() возвращает пустое значение |
|
,
Плагин Android Gradle 8.2.0 — это основная версия, включающая множество новых функций и улучшений.
Совместимость
Максимальный уровень API, который поддерживает плагин Android Gradle 8.2, — это уровень API 34. Вот другая информация о совместимости:
Новый макрос для указания пути к 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() возвращает пустое значение |
|