Плагин Android Gradle 8.4.0 (апрель 2024 г.)

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

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

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

Минимальная версия Версия по умолчанию Примечания
Грейдл 8.6 8.6 Более подробную информацию см. в разделе Обновление Gradle .
Инструменты сборки SDK 34.0.0 34.0.0 Установите или настройте инструменты сборки SDK.
НДК Н/Д 26.1.10909125 Установите или настройте другую версию NDK.
JDK 17 17 Более подробную информацию см. в разделе Установка версии JDK .

Ниже перечислены новые функции плагина Android Gradle 8.4.

Выпуски патчей

Ниже приведен список выпущенных патчей в Android Studio Jellyfish и плагине Android Gradle 8.4.

Android Studio Jellyfish | 2023.3.1 Patch 2 и AGP 8.4.2 (июнь 2024 г.)

Важное обновление безопасности: уязвимость безопасности в плагине GitHub , доступном в Android Studio Iguana | 2023.2.1 и более поздних версиях, может сделать токены доступа доступными неавторизованным лицам.

Исправление: Jetbrains устранила проблему в продуктах платформы IntelliJ , и исправление теперь доступно в Android Studio Jellyfish | 2023.3.1 Patch 2 (2023.3.1.20) .

Если у вас уже установлена сборка Android Studio на стабильном канале , вы можете получить обновление, нажав «Справка» > «Проверить наличие обновлений» (или «Android Studio» > «Проверить наличие обновлений» на macOS). В противном случае загрузите последнюю стабильную сборку .

Кроме того, если вы активно использовали функцию запросов на извлечение GitHub в IDE, мы настоятельно рекомендуем вам отозвать все токены GitHub, используемые плагином. Учитывая, что плагин может использовать интеграцию OAuth или токены персонального доступа (PAT), проверьте и то, и другое и отзовите при необходимости:

  • Чтобы отозвать доступ для интеграции OAuth, перейдите в раздел Приложения > Авторизованные приложения OAuth и отзовите доступ для токена интеграции IDE JetBrains .
  • Чтобы отозвать доступ для PAT, перейдите в раздел «Персональные токены доступа» и удалите токен, выданный для плагина GitHub. Имя токена по умолчанию — IntelliJ IDEA GitHub integration plugin , но вы можете использовать другое имя.

После отзыва доступа к токену(ам) вам необходимо заново настроить плагин, чтобы все его функции, включая операции Git, снова заработали.

Приносим извинения за возможные неудобства и настоятельно рекомендуем всем пользователям немедленно обновить версию, чтобы защитить свой код и данные.

Это небольшое обновление также включает в себя исправления следующих ошибок .

Android Studio Jellyfish | 2023.3.1 Patch 1 и AGP 8.4.1 (май 2024 г.)

Это небольшое обновление включает в себя исправления следующих ошибок .

Библиотечные классы сокращены

Начиная с версии Android Gradle Plugin 8.4, при минификации проекта библиотеки Android сокращённые классы программы будут опубликованы для межпроектной публикации. Это означает, что если приложение зависит от сокращённой версии подпроектов библиотеки Android, APK-файл будет включать сокращённые классы библиотеки Android. Возможно, потребуется скорректировать правила хранения библиотек , если в APK отсутствуют какие-либо классы.

Если вы создаете и публикуете AAR, локальные jar-файлы, от которых зависит ваша библиотека, будут включены в AAR в несжатом виде, что означает, что Code Shrinker не будет работать на них.

Чтобы вернуться к предыдущему поведению, установите android.disableMinifyLocalDependenciesForLibraries в файле gradle.properties и отправьте сообщение об ошибке . В будущих версиях AGP этот флаг будет удален.

Исправлены проблемы

Плагин Android Gradle 8.4.0

Исправленные проблемы
Плагин Android Gradle
Улучшить сообщение об ошибке, объясняющее, почему параметр `--release` нельзя использовать для JavaCompile.
Отключить кэширование MergeSourceSetFolders с помощью @DoNotCacheByDefault
Невозможно установить версию JaCoCo в AGP 8.2.0
DynamicFeatureBuildType отсутствует isDebuggable
Минимизированные классы библиотеки не публикуются корректно для межпроектного использования.
Предоставить API Variant#sources, который исключает сгенерированные файлы
Модели AGP не содержат зависимостей проекта Java-платформы.
ExtractAarTransform создает невоспроизводимые classes.jar для aar-файлов, у которых нет classes.jar.
Разрешить настройку sourceInformation из ComposeOptions
Не удалось найти поле: sdk_runtime в сообщении android.bundle.DeviceSpec
Поддержка compileOnlyApi
R8 дает сбой в библиотечном модуле, если обработка ресурсов отключена
Добавить возможность менять имя артефакта во время трансформации.
Добавление выходных данных задачи в качестве srcDir sourceSets.androidMain.resources не создает зависимости задачи.
В AndroidPluginVersion.toString() отсутствуют начальные нули
Artifacts.add(FileSystemLocation) должен быть более строгим.
AGP 8.3.0-alpha11 создает релиз APK, который вылетает при запуске с android.content.res.Resources$NotFoundException
Задача установки плагина Android Gradle 8.2.0 завершается ошибкой в проекте, использующем динамические функции
Компиляция AIDL завершается ошибкой IndexOutOfBoundsException: индекс 0 выходит за границы для длины 0
Проблема обработки дополнительных входных данных MergeJavaResourcesTask
AGP 8.3.0-alpha02 зависит от библиотек с известными уязвимостями безопасности
Для выбранного шаблона активности требуется проект с зависимостями androidx.*
Помощник по обновлению AGP ошибочно удаляет consumerProguardFiles из модуля
Помощник по обновлению AGP загружается бесконечно
SourceDirectories#static не должен зависеть от задачи GenerateBuildConfig
Предварительный просмотр не может разрешить классы из транзитивной зависимости
AGP 8.3 ломает zipApksFor Task
Артефакты AndroidX Desktop, упакованные в Android APK
Линт
GradleModelMocker фреймворка lint-тестирования не позволяет устанавливать версию библиотеки
Lint K2 UAST: UCallableReferenceExpression сообщает о неправильном типе квалификатора
Ложное срабатывание lint при использовании useK2Uast=true с перегруженными функциями
[BuildTool/Lint] Свойство конструктора ChecksSdkIntAtLeast
Интеграция Lint
Lint не может устранить неоднозначность зависимости KMP

Плагин Android Gradle 8.4.1

Исправленные проблемы
Плагин Android Gradle
Разрешить подавление предупреждения о прекращении поддержки Java 8 в JDK 21
Дексер (D8)
java.lang.VerifyError: Верификатор отклонил класс
Ошибка преобразования формата новой версии R8 после обфускации
Промежуточные сборки могут не иметь полного глобального синтетического контента для заглушек.

Плагин Android Gradle 8.4.2

Исправленные проблемы
Плагин Android Gradle
AGP 8.4, похоже, нарушает загрузку GMD на CI