Заметки о выпуске предварительной версии плагина Android Gradle

На этой странице представлены примечания к выпуску предварительных версий плагина Android Gradle (AGP).

Android Gradle plugin 9.0

Android Gradle plugin 9.0 — это новый крупный релиз AGP, вносящий изменения в API и поведение программы.

Для обновления до плагина Android Gradle версии 9.0.0-rc01 используйте помощник обновления плагина Android Gradle в Android Studio Panda | 2025.3.1.

Мастер обновления AGP помогает сохранить существующие настройки при обновлении проекта, когда это необходимо, позволяя обновить проект до AGP 9.0, даже если вы не готовы принять все новые настройки по умолчанию в AGP 9.0.

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

Максимальный уровень API Android, поддерживаемый плагином Android Gradle 9.0.0-rc01, — это уровень API 36.

Для работы плагина Android Gradle 9.0.0-rc01 требуется Gradle 9.0.0 .

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

В классах android DSL теперь реализованы только новые публичные интерфейсы.

За последние несколько лет мы внедрили новые интерфейсы для нашего DSL и API, чтобы лучше контролировать, какие API являются публичными. В версиях AGP 7.x и 8.x по-прежнему использовались старые типы DSL (например, BaseExtension ), которые также реализовывали новые публичные интерфейсы, чтобы сохранить совместимость по мере развития работы над интерфейсами.

AGP 9.0 использует исключительно наши новые DSL-интерфейсы, а в реализациях используются новые, полностью скрытые типы. Это также исключает доступ к старому, устаревшему API вариантов.

Для обновления до AGP 9.0 может потребоваться выполнить следующие действия:

  • Убедитесь, что ваш проект совместим со встроенным Kotlin : плагин org.jetbrains.kotlin.android несовместим с новым DSL.
  • Переключитесь на плагин библиотеки Android Gradle для KMP в проектах KMP: использование плагина org.jetbrains.kotlin.multiplatform в том же подпроекте Gradle, что и плагины com.android.library и com.android.application , несовместимо с новым DSL.

  • Обновите файлы сборки: хотя изменение интерфейсов призвано сохранить DSL максимально похожим, могут быть некоторые небольшие изменения .

  • Обновите свою пользовательскую логику сборки, чтобы она ссылалась на новый DSL и API: замените все ссылки на внутренний DSL на публичные интерфейсы DSL. В большинстве случаев это будет замена один к одному. Замените любое использование applicationVariants и аналогичных API на новый API androidComponents . Это может быть сложнее, поскольку API androidComponents разработан для большей стабильности, чтобы обеспечить более длительную совместимость плагинов. Примеры смотрите в наших рецептах Gradle .

  • Обновите сторонние плагины: некоторые сторонние плагины могут по-прежнему зависеть от интерфейсов или API, которые больше не доступны. Перейдите на версии этих плагинов, совместимые с AGP 9.0.

Переход на новые DSL-интерфейсы предотвращает использование плагинами и скриптами сборки Gradle различных устаревших API, в том числе:

Устаревший API в блоке android Функция Замена
applicationVariants ,
libraryVariants ,
testVariants и
unitTestVariants
Точки расширения для плагинов, добавляющих новые функции в AGP. Замените это, например, на API androidComponents.onVariants :
androidComponents {
    onVariants() { variant ->
        variant.signingConfig
            .enableV1Signing.set(false)
    }
}
Возможно, прямой замены для всех предыдущих API не будет. Сообщите о проблеме , если есть вариант использования, который не охватывается новыми вариантами API.
variantFilter Позволяет отключить выбранные варианты. Замените это, например, на API androidComponents.beforeVariants :
androidComponents {
    beforeVariants(
        selector()
            .withBuildType("debug")
            .withFlavor("color", "blue")
    ) { variantBuilder ->
        variantBuilder.enable = false
    }
  }
deviceProvider и
testServer
Регистрация пользовательских тестовых сред для запуска тестов на устройствах и эмуляторах Android. Переключитесь на устройства, управляемые Gradle .
sdkDirectory ,
ndkDirectory ,
bootClasspath ,
adbExecutable и
adbExe
Использование различных компонентов Android SDK для выполнения пользовательских задач. Переключитесь на androidComponents.sdkComponents .
registerArtifactType ,
registerBuildTypeSourceProvider ,
registerProductFlavorSourceProvider ,
registerJavaArtifact ,
registerMultiFlavorSourceProvider и
wrapJavaSourceSet
Устаревшая функциональность, в основном связанная с обработкой сгенерированных исходных файлов в Android Studio, перестала работать в AGP 7.2.0. Прямых аналогов этим API не существует.
dexOptions Устаревшие настройки, связанные с инструментом dx , который был заменен на d8 . Ни одна из настроек не оказывает никакого эффекта начиная с плагина Android Gradle версии 7.0. Прямой замены нет.
generatePureSplits Создавайте разделы конфигурации для мгновенных приложений. Возможность разделять конфигурацию на отдельные компоненты теперь встроена в пакеты приложений Android.
aidlPackagedList Файлы AIDL для включения в AAR-архив, чтобы предоставить к нему доступ в качестве API для библиотек и приложений, зависящих от этой библиотеки. Эта функция по-прежнему доступна для расширений типа LibraryExtension , но не для других типов расширений.

Если после обновления до AGP 9.0 вы видите следующее сообщение об ошибке, это означает, что ваш проект по-прежнему ссылается на некоторые старые типы:

java.lang.ClassCastException: class com.android.build.gradle.internal.dsl.ApplicationExtensionImpl$AgpDecorated_Decorated
cannot be cast to class com.android.build.gradle.BaseExtension

Если вас блокируют несовместимые сторонние плагины, вы можете отказаться от них и вернуть старые реализации DSL, а также старый вариант API. При этом новые интерфейсы также будут доступны, и вы сможете обновить свою логику сборки в соответствии с новым API. Чтобы отказаться от них, добавьте следующую строку в файл gradle.properties :

android.newDsl=false

Вы также можете начать обновление до новых API до обновления до AGP 9.0. Новые интерфейсы присутствовали во многих версиях AGP, поэтому у вас может быть сочетание новых и старых. В справочной документации по API AGP показан интерфейс API для каждой версии AGP, а также дата добавления каждого класса, метода и поля.

В ходе альфа-тестирования версии 9.0 мы обращаемся к авторам плагинов с просьбой помочь им адаптировать и выпустить плагины, полностью совместимые с новыми режимами, а также усовершенствуем помощник по обновлению AGP в Android Studio, чтобы он помог вам выполнить миграцию.

Если вы обнаружите, что в новом DSL или API вариантов отсутствуют необходимые возможности или функции, пожалуйста, как можно скорее сообщите об этом, создав соответствующую проблему .

Встроенный Kotlin

В плагине Android Gradle версии 9.0 реализована встроенная поддержка Kotlin, которая включена по умолчанию. Это означает, что вам больше не нужно применять плагин org.jetbrains.kotlin.android (или kotlin-android ) в файлах сборки для компиляции исходных файлов Kotlin. Это упрощает интеграцию Kotlin с AGP, позволяет избежать использования устаревших API и в некоторых случаях повышает производительность.

Поэтому при обновлении проекта до AGP 9.0 вам также необходимо перейти на встроенный Kotlin или отказаться от него .

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

Зависимость от плагина Kotlin Gradle во время выполнения

Для обеспечения встроенной поддержки Kotlin , плагин Android Gradle 9.0 теперь имеет зависимость от плагина Kotlin Gradle (KGP) версии 2.2.10 во время выполнения. Это означает, что вам больше не нужно указывать версию KGP, и если вы используете версию KGP ниже 2.2.10, Gradle автоматически обновит вашу версию KGP до 2.2.10. Аналогично, если вы используете версию KSP ниже 2.2.10-2.0.2, AGP обновит ее до 2.2.10-2.0.2, чтобы она соответствовала версии KGP.

Обновите KGP до более новой версии.

Для использования более новой версии KGP или KSP добавьте следующее в главный файл сборки:

buildscript {
    dependencies {
        // For KGP
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:KGP_VERSION")

        // For KSP
        classpath("com.google.devtoolsksp:symbol-processing-gradle-plugin:KSP_VERSION")
    }
}

Понизьте версию KGP до более старой.

Понижение версии KGP возможно только в том случае, если вы отказались от встроенного Kotlin . Это связано с тем, что AGP 9.0 по умолчанию включает встроенный Kotlin, а для его использования требуется KGP 2.2.10 или выше.

Чтобы использовать более старую версию KGP или KSP, укажите эту версию в файле сборки верхнего уровня, используя строгое указание версии :

buildscript {
    dependencies {
        // For KGP
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") {
            version { strictly("KGP_VERSION") }
        }

        // For KSP
        classpath("com.google.devtoolsksp:symbol-processing-gradle-plugin") {
            version { strictly("KSP_VERSION") }
        }
    }
}

Обратите внимание, что минимальная версия KGP, до которой можно откатиться, — 2.0.0.

Поддержка тестовых стендов в IDE

AGP 9.0 обеспечивает полную поддержку тестовых наборов в среде разработки Android Studio.

Плагин объединенной библиотеки

Плагин Fused Library (предварительная версия) позволяет публиковать несколько библиотек в виде единого Android Library AAR-файла. Это может упростить пользователям использование опубликованных вами артефактов.

Для получения информации о начале работы см. раздел «Публикация нескольких библиотек Android как одной с помощью Fused Library» .

Изменения в поведении

В плагине Android Gradle версии 9.0 появились следующие новые возможности:

Поведение Рекомендация
В плагине Android Gradle версии 9.0 по умолчанию используется версия NDK r28c . Рекомендуется явно указать версию NDK, которую вы хотите использовать.
В плагине Android Gradle версии 9.0 по умолчанию требуется, чтобы пользователи библиотеки использовали ту же или более новую версию SDK для компиляции. Используйте тот же или более новый SDK компиляции при работе с библиотекой. Если это невозможно, или вы хотите дать пользователям опубликованной вами библиотеки больше времени на переключение, явно установите параметр AarMetadata.minCompileSdk .

В AGP 9.0 внесены изменения в значения по умолчанию для следующих свойств Gradle. Это позволяет сохранить поведение AGP 8.13 при обновлении:

Свойство Функция Переход с AGP 8.13 на AGP 9.0 Рекомендация
android. newDsl Используйте новые DSL-интерфейсы, не раскрывая устаревшие реализации блока android .
Это также означает, что устаревший API для работы с вариантами приложений, такой как android.applicationVariants , больше недоступен.
falsetrue Вы можете отказаться от этого, установив параметр android.newDsl=false .
После того, как все плагины и логика сборки, используемые вашим проектом, будут совместимы, удалите опцию отказа от участия.
android. builtInKotlin Включает встроенные функции Kotlin. falsetrue По возможности перейдите на встроенный Kotlin или откажитесь от него .
android. uniquePackage Names Обеспечивает наличие у каждой библиотеки уникального имени пакета. falsetrue Укажите уникальные имена пакетов для всех библиотек в вашем проекте. Если это невозможно, вы можете отключить этот флаг во время миграции.
android. useAndroidx По умолчанию используются зависимости androidx . falsetrue Используйте зависимости androidx .
android. default. androidx. test. runner По умолчанию тесты на устройстве запускаются с помощью класса androidx.test.runner.AndroidJUnitRunner , заменяя устаревший класс InstrumentationTestRunner по умолчанию.
android {
  defaultConfig {
    testInstrumentationRunner = "..."
  }
}
falsetrue Используйте AndroidJUnitRunner или явно укажите свой собственный testInstrumentationRunner .
android. dependency. useConstraints Управляет использованием ограничений зависимостей между конфигурациями.
В AGP 9.0 по умолчанию установлено значение false , что означает использование ограничений только в тестах приложений на устройствах (AndroidTest). Установка значения true вернет поведение версии 8.13.
truefalse Не используйте ограничения зависимостей везде, если в этом нет необходимости. Принятие нового значения по умолчанию для этого флага также включает оптимизацию процесса импорта проекта, что должно сократить время импорта для сборок с большим количеством подпроектов библиотек Android.
android. enableApp CompileTime RClass Компиляция кода в приложениях с использованием нефинального класса R приводит компиляцию приложения в соответствие с компиляцией библиотеки.
Это повышает эффективность поэтапного внедрения и открывает путь для будущей оптимизации производительности процесса обработки ресурсов.
falsetrue Во многих проектах можно просто перенять новое поведение без изменений в исходном коде. Если поля класса R используются где-либо, где требуется константа, например, в операторах switch, следует провести рефакторинг, используя цепочки операторов if.
android. sdk. defaultTargetSdk ToCompileSdk IfUnset В приложениях и тестах в качестве значения по умолчанию для целевой версии SDK используется версия скомпилированного SDK.
До внесения этого изменения целевая версия SDK по умолчанию устанавливалась на минимальную версию SDK.
falsetrue Для приложений и тестов явно укажите целевую версию SDK.
android. onlyEnableUnitTest ForTheTested BuildType Создаёт компоненты модульных тестов только для тестируемого типа сборки.
В проекте по умолчанию это приводит к созданию одного модульного теста для отладки, тогда как ранее модульные тесты запускались либо для отладки, либо для выпуска.
falsetrue Если в вашем проекте не требуется запуск тестов как в режиме отладки, так и в режиме выпуска, никаких изменений не требуется.
android. proguard. failOnMissingFiles Сборка завершается с ошибкой, если какой-либо из файлов, указанных в AGP DSL, отсутствует на диске. До этого изменения опечатки в именах файлов приводили к тому, что файлы игнорировались без предупреждения. falsetrue Удалите все недействительные объявления файлов ProGuard.
android. r8. optimizedResourceShrinking Позволяет R8 использовать меньше ресурсов Android, рассматривая классы и ресурсы Android совместно. falsetrue Если правила сохранения данных в вашем проекте уже настроены, никаких изменений не требуется.
android. r8. strictFullMode ForKeepRules Это позволяет R8 сохранять меньше элементов, не сохраняя неявно конструктор по умолчанию, когда класс сохраняется. То есть, -keep class A больше не подразумевает -keep class A { <init>(); }
falsetrue Если правила сохранения данных в вашем проекте уже настроены, никаких изменений не требуется.

Замените -keep class A на -keep class A { <init>(); } в правилах сохранения в вашем проекте для тех случаев, когда необходимо сохранить конструктор по умолчанию.
android. defaults. buildfeatures. resvalues Включает resValues ​​во всех подпроектах truefalse Включите resValues ​​только в тех подпроектах, которым это необходимо, установив следующие параметры в файлах сборки Gradle этих проектов:
android {
  buildFeatures {
    resValues = true
  }
}
android. defaults. buildfeatures. shaders Включает компиляцию шейдеров во всех подпроектах. truefalse Разрешите компиляцию шейдеров только в тех подпроектах, которые содержат шейдеры, подлежащие компиляции, установив следующие параметры в файлах сборки Gradle этих проектов:
android {
  buildFeatures {
    shaders = true
  }
}
android. r8. proguardAndroidTxt. disallowed В AGP 9.0 getDefaultProguardFile() будет поддерживать только proguard-android-optimize.txt а не proguard-android.txt . Это сделано для предотвращения случайного использования флага dontoptimize , который включен в proguard-android.txt . falsetrue Чтобы избежать оптимизации, вы можете явно указать dontoptimize в пользовательском файле proguardFile, а также использовать файл proguard-android-optimize.txt . По возможности удалите флаг dontoptimize из этого файла, так как он снижает преимущества оптимизации R8. В противном случае откажитесь от оптимизации, установив параметр android.r8.globalOptionsInConsumerRules.disallowed=false .
android. r8. globalOptions InConsumerRules. disallowed Начиная с AGP 9.0, публикация библиотек и модулей функций Android будет завершаться ошибкой, если файлы keep потребителя содержат проблемные конфигурации Proguard. Файлы keep потребителя, содержащие глобальные параметры, такие как dontoptimize или dontobfuscate следует использовать только в модулях приложений, и они могут снизить преимущества оптимизации для пользователей библиотек. Компиляция модулей приложений Android будет молча игнорировать любые такие глобальные параметры, если они встроены в предварительно скомпилированную зависимость (JAR или AAR). Вы можете увидеть, когда это происходит, проверив файл configuration.txt (обычно расположенный по пути типа <app_module>/build/outputs/mapping/<build_variant>/configuration.txt ) на наличие комментариев типа: # REMOVED CONSUMER RULE: dontoptimize falsetrue Опубликованные библиотеки должны удалить все несовместимые правила. Внутренние библиотеки должны переместить все несовместимые, но необходимые правила в файл proguardFile в модуле приложения. Отключить эту опцию можно, установив параметр android.r8.globalOptionsInConsumerRules.disallowed=false . После того, как все ваши файлы keep потребителя будут совместимы, снимите опцию отключения.
android. sourceset. disallowProvider Запретить передачу поставщиков для сгенерированных исходных файлов с использованием DSL AndroidSourceSet . falsetrue Используйте API Sources в androidComponents для регистрации сгенерированных исходных файлов.
android. custom. shader. path. required Если компиляция шейдеров включена, необходимо явно указать путь к компилятору шейдеров в файле local.properties . falsetrue Добавьте glslc.dir=/path/to/shader-tools в local.properties вашего проекта.

Удалённые функции

В плагине Android Gradle версии 9.0 удалена следующая функциональность:

  • Поддержка приложений Embedded Wear OS
    В AGP 9.0 прекращена поддержка встраивания приложений Wear OS, которая больше не поддерживается в Play Store. Это включает в себя удаление конфигураций wearApp и DSL AndroidSourceSet.wearAppConfigurationName . Инструкции по публикации приложения в Wear OS см. в разделе «Распространение в Wear OS».
  • задача отчета androidDependencies и sourceSets Android
  • Поддержка разделения по плотности APK
    В AGP 9.0 удалена поддержка создания разделенных APK-файлов на основе плотности экрана. Функциональность и связанные с ней API были удалены. Для разделения APK-файлов на основе плотности экрана с использованием AGP 9.0 или более поздних версий используйте пакеты приложений .

Изменен DSL

В плагине Android Gradle версии 9.0 внесены следующие изменения в DSL, нарушающие совместимость:

  • Параметризация CommonExtension удалена.

    Само по себе это всего лишь изменение на уровне исходного кода, призванное предотвратить подобные изменения в будущем, но оно также означает, что методы блока необходимо перенести из CommonExtension в ApplicationExtension , LibraryExtension , DynamicFeatureExtension и TestExtension .

    При обновлении проекта до AGP 9.0 проведите рефакторинг кода плагина Gradle, использующего эти параметры или методы блоков. Например, следующий плагин обновлен таким образом, чтобы удалить параметр типа и не полагаться на удаленные методы блоков:

    AGP 8.13

    val commonExtension: CommonExtension<*, *, *, *, *, *> =
            extensions.getByType(CommonExtension::class)
    commonExtension.apply {
        defaultConfig {
            minSdk {
                version = release(28)
            }
        }
    }
    

    AGP 9.0

    val commonExtension: CommonExtension =
            extensions.getByType(CommonExtension::class)
    commonExtension.apply {
        defaultConfig.apply {
            minSdk {
                version = release(28)
            }
        }
    }
    

    Для плагинов, ориентированных на широкий диапазон версий AGP, прямое использование геттера обеспечивает бинарную совместимость с версиями AGP ниже 9.0.

Удалён DSL

В плагине Android Gradle версии 9.0 удалены следующие изменения:

Удалённые API

В плагине Android Gradle версии 9.0 удалены следующие изменения:

Удалены свойства Gradle

Следующие свойства Gradle были первоначально добавлены для глобального отключения функций, которые были включены по умолчанию.

Эти функции отключены по умолчанию начиная с AGP 8.0 и ниже. Для более эффективной сборки включайте эти функции только в тех подпроектах, которые их используют.

Свойство Функция Замена
android. defaults. buildfeatures. aidl Включает компиляцию AIDL во всех подпроектах. Разрешите компиляцию AIDL только в тех подпроектах, где есть исходные файлы AIDL, установив следующее свойство в файлах сборки Gradle этих проектов:
android {
  buildFeatures {
    aidl = true
  }
}
в файле сборки Gradle каждого подпроекта, содержащего исходные файлы AIDL.
android. defaults. buildfeatures. renderscript Включает компиляцию RenderScript во всех подпроектах. Разрешите компиляцию RenderScript только в тех подпроектах, где есть исходные файлы RenderScript, установив следующее свойство в файлах сборки Gradle этих проектов:
android {
  buildFeatures {
    renderScript = true
  }
}

Объекты с принудительной регулировкой уровня грунта

В AGP 9.0 возникает ошибка, если задать следующие свойства Gradle.

Плагин Android Gradle Upgrade Assistant не будет обновлять до AGP 9.0 проекты, использующие эти свойства.

Свойство Функция
android. r8. integratedResourceShrinking Теперь уменьшение объема ресурсов всегда выполняется в рамках R8, предыдущая реализация была удалена.
android. enableNewResourceShrinker. preciseShrinking Теперь при сокращении ресурсов всегда используется точное сокращение ресурсов, что позволяет удалять больше ресурсов.

Исправлены ошибки

Android Gradle plugin 9.0.0-rc01

Исправлены ошибки
В AGP 9.0.0-rc01 не было отмечено ни одной исправленной проблемы, относящейся к общедоступным ресурсам.

Android Gradle plugin 9.0.0-beta05

Исправлены ошибки
Плагин Android Gradle
Встроенная поддержка Kotlin в AGP не должна синхронизироваться с исходными кодами Kotlin.

Android Gradle plugin 9.0.0-beta04

Исправлены ошибки
Плагин Android Gradle
Встроенная поддержка Kotlin в AGP не должна синхронизироваться с исходными кодами Kotlin.
missingDimensionStrategy предпочитает вариант, соответствующий собственному названию, даже из несвязанного измерения.

Android Gradle plugin 9.0.0-beta03

Исправлены ошибки
В AGP 9.0.0-beta03 не было отмечено ни одной исправленной проблемы, относящейся к общедоступным ресурсам.

Android Gradle plugin 9.0.0-beta02

Исправлены ошибки
Плагин Android Gradle
Запрос на добавление функции: Добавить возможность установки желаемой версии AGP в качестве свойства.
Стабилизация SingleArtifact.VERSION_CONTROL_INFO_FILE
Вывод logcat для androidTest connectedCheck не работает
Ворс
AGP 8.11.0: Задача lintAnalyzeRelease завершается с ошибкой при применении файлов .gradle.kts с помощью apply(from = "...")
Интеграция Lint
AndroidLintAnalysisTask: Промахи кэша в разных версиях JDK или минорных версиях из-за различий в systemPropertyInputs.javaVersion

Android Gradle plugin 9.0.0-beta01

Исправлены ошибки
В AGP 9.0.0-beta01 не было отмечено ни одной исправленной проблемы, относящейся к общедоступным ресурсам.

Android Gradle plugin 9.0.0-alpha14

Исправлены ошибки
Плагин Android Gradle
Встроенная поддержка Kotlin в AGP не должна синхронизироваться с исходными кодами Kotlin.
Отклонить публикацию библиотеки Android, если файл keep потребителя содержит параметр -dontobfuscate.
Нет возможности распечатать карту для оптимизированных ресурсов.
Вызов функции finalizeDsl после завершения этого этапа следует считать ошибкой.
AGP инициализирует конфигурацию Jetifier, даже если Jetifier отключен.
Встроенная библиотека Kotlin не добавляет kotlinStdlib в качестве зависимости времени компиляции, если для файлов модуля и pom значение `kotlin.stdlib.default.dependency` равно `true`.
Интеграция Lint
Lint автоматически использует последнюю установленную версию SDK, несмотря на compileSdk, не регистрируется в качестве входных данных задачи и нарушает кэширование.
Уменьшитель (R8)
В R8 оптимизированное сжатие ресурсов незаметно завершается с ошибкой при использовании окончательных идентификаторов ресурсов.

Android Gradle plugin 9.0.0-alpha13

Исправлены ошибки
Плагин Android Gradle
AGP9: `variant.sources.kotlin!!.addGeneratedSourceDirectory()` не работает
Проверка метаданных Aar при компиляции SDK использует старый DSL.
Удалите устаревшее свойство `com.android.build.api.dsl.ManagedDevices.devices`

Android Gradle plugin 9.0.0-alpha12

Исправлены ошибки
Плагин Android Gradle
В проектах, написанных исключительно на Java, используется стандартная библиотека Kotlin.
Удалены устаревшие свойства KotlinMultiplatformAndroidCompilationBuilder в AGP 9.0.
`com.android.tools.build:gradle:9.0.0-alpha05` должен иметь зависимость API от KGP и gradle-api.
Переименовать плагин Gradle com.android.experimental.built-in-kotlin

Android Gradle plugin 9.0.0-alpha11

Исправлены ошибки
Плагин Android Gradle
Built-in-kotlin не публикует ограничение зависимости kotlin-stdlib в файле pom Maven.
Добавьте тестовый пример для проверки расхождения между compileSdk и targetSdk.
Пустое значение resConfigs приводит к непонятной ошибке aapt.

Android Gradle plugin 9.0.0-alpha10

Исправлены ошибки
Плагин Android Gradle
Функции extractNativeLibs и useEmbeddedDex не должны браться из манифеста.
Предупреждения от R8 в AGP 9.0.0-alpha09
Ворс
Встроенный Kotlin не добавляет .kotlin_module в META-INF.
Проверка Lint на наличие дублирующихся классов в разных версиях показывает их наличие.
Обходной путь с переопределением частных ресурсов не работает (tools:override = "true")

Android Gradle plugin 9.0.0-alpha09

Исправлены ошибки
Плагин Android Gradle
В отличие от `kotlin-kapt`, плагин `legacy-kapt` пропускает обработку аннотаций.
compileSdkSpec.minorApiLevel не работает с SettingsExtension
[fused lib - public] Сгенерированная объединенная библиотека не включает исходные файлы.

Android Gradle plugin 9.0.0-alpha08

Исправлены ошибки
В AGP 9.0.0-alpha08 не было отмечено ни одной исправленной проблемы, относящейся к общедоступным ресурсам.

Android Gradle plugin 9.0.0-alpha07

Исправлены ошибки
Плагин Android Gradle
Сборка завершается с ошибкой, если присутствуют задачи генерации кода.
При использовании параметров `android.builtInKotlin=false`, `android.newDsl=false` и `android.enableLegacyVariantApi=false` плагин `kotlin-android` завершится ошибкой «API 'applicationVariants' устарел».
Встроенный Kotlin не может разрешить неверсионированную библиотеку kotlin-stdlib, если kotlin.stdlib.default.dependency=false.
DexData открывает файл, не закрывая его, что препятствует очистке.
В AGP 9.0 класс AndroidSourceDirectorySet должен перестать наследовать PatternFilterable.
Ошибка в тестовой среде в модулях, предназначенных только для тестирования.
Некорректная ошибка при использовании контекстных приемников в тестовых наборах данных.
Некорректные ошибки IDE для кода Kotlin в testFixtures

Android Gradle plugin 9.0.0-alpha06

Исправлены ошибки
Плагин Android Gradle
Новая оптимизация DSL по умолчанию не создает файл configuration.txt.
В AGP 8.13.0 не удаётся проверить навигационный график в модуле.
AGP использует устаревший API Gradle: многострочную нотацию.
Предупреждать пользователей, пытающихся использовать устаревшую библиотеку multidex с minSdkVersion >=21.
Ворс
Проверка Lint ChecksSdkIntAtLeast не проверяет корректность аннотированного значения.

Android Gradle plugin 9.0.0-alpha05

Исправлены ошибки
Плагин Android Gradle
Метод android.proguard.failOnMissingFiles не работает для consumerProguardFiles.
Обновите зависимость плагина Kotlin Gradle до версии 2.2.10.
Создание KotlinJvmAndroidCompilation с использованием KGP API
В Kotlin для тестирования исходного кода применяется явный режим API.
Ворс
Выдаёт предупреждение "Не удалось очистить кэш K2".

Android Gradle plugin 9.0.0-alpha04

Исправлены ошибки
Плагин Android Gradle
В AGP 9.0 можно изменить версию Java по умолчанию для исходного/целевого проекта с Java 8 на Java 11.
Изменить значение параметра android.useAndroidX по умолчанию на true.
Лучшее исключение при использовании плагина kapt со встроенным Kotlin.
Ворс
Выдаёт предупреждение "Не удалось очистить кэш K2".

Android Gradle plugin 9.0.0-alpha03

Исправлены ошибки
Плагин Android Gradle
При включении параметра `isIncludeAndroidResources`, `process{Variant}UnitTestManifest` не удаётся объединить использование tools:overrideLibrary в AGP 8.12.0.
AGP вызывает предупреждения об устаревании в Gradle для задач тестирования JVM.
DependencyReportTask несовместим с кэшем конфигурации.
Ворс
Ошибка: удаление неиспользуемых ресурсов не приводит к удалению их переводов и не запрашивает информацию об этом.

Android Gradle plugin 9.0.0-alpha02

Исправлены ошибки
Плагин Android Gradle
Сборка завершится ошибкой, если файл proguard отсутствует.
удалить флаги по умолчанию из buildconfig в gradle.properties
Измените значение targetSdk по умолчанию для приложения, чтобы оно основывалось на compileSdk вместо minSdk.

Android Gradle plugin 9.0.0-alpha01

Исправлены ошибки
Плагин Android Gradle
В AGP 9.0 удален устаревший файл AndroidSourceSet.jni.
Удалите Installation.installOptions() в AGP 9.0.
Удалено свойство BuildType.isRenderscriptDebuggable в AGP 9.0.
Удалите android.defaults.buildfeatures.renderscript
`com.android.kotlin.multiplatform.library` аварийно завершает работу при использовании Gradle Managed Devices.
Удалите флаги `android.defaults.buildfeatures.aidl` из файла gradle.properties.