AndroidAGP9.0升级之路

9 阅读3分钟

AndroidAGP9.0升级之路

1.前言:

最近把Android Studio升级到了9.0,但是发现有不少问题,由于之前升级7.0、8.0都有很多经验,踩坑很多,所以这次升级很顺利,如果是7.0以下不建议直接升级,当然经验丰富就无所谓了,直接上代码.

官网参考文档:

developer.android.google.cn/build/relea…

2.简介:

Android Gradle 插件 9.0 是一个主要版本,带来了 API 和行为变更。

如需更新到 Android Gradle 插件 9.0.1,请使用 Android Gradle 插件升级助理。AGP 升级助理有助于在升级项目时尽可能保留现有行为,因此即使您尚未准备好采用 AGP 9.0 中的所有新默认设置,也可以将项目升级为使用 AGP 9.0。

此外,还有两项代理技能可供使用,以简化升级流程。 对于非 KMP 应用,请尝试使用 Android 技能库中的 AGP 9 升级技能。对于 KMP 应用,请尝试 JetBrains 的 AGP 9 升级技能。如需详细了解如何在 Android Studio 中使用技能,请参阅使用技能扩展代理模式.

3.兼容性

Android Gradle 插件 9.0 支持的最高 API 级别为 API 级别 36.1。以下是更多兼容性信息:

最低版本默认版本备注
Gradle9.1.09.1.0如需了解详情,请参阅更新 Gradle
SDK Build Tools36.0.036.0.0安装配置 SDK Build Tools。
NDK不适用28.2.13676358安装配置其他版本的 NDK。
JDK1717如需了解详情,请参阅设置 JDK 版本

4.升级AGP版本到9.3.1:

我最开始的版本是8.9.3

image.png

升级到9.3.1:

[versions]
agp = "9.3.1"
org-jetbrains-kotlin-android = "1.8.0"
core-ktx = "1.15.0"
junit = "4.13.2"
androidx-test-ext-junit = "1.1.5"
espresso-core = "3.5.1"
appcompat = "1.6.1"
material = "1.13.0"
constraintlayout = "2.1.4"
glide = "4.13.0"
glide-compiler = "4.13.0"
camerax = "1.1.0-beta03"
camerax-core = "1.1.0-beta03"
camerax-video = "1.1.0-beta03"
camerax-view = "1.1.0-beta03"
camerax-extensions = "1.2.2"
camerax-lifecycle = "1.1.0-beta03"
kotlin-stdlib = "1.8.0"
kotlin-reflect = "1.8.0"
kotlinx-coroutines-core = "1.8.0"
kotlinx-coroutines-android = "1.8.0"
utilcodex = "1.31.1"
activity= "1.12.0"

5.报错gradle插件版本太低:

提示gradle插件要改成9.5.0,当前的是8.11.1

image.png

修改后的配置:

#Sun Aug 23 15:17:09 CST 2026
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-9.5.0-bin.zip
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

6.kotlin重复引入报错:

image.png

Build file 'D:\workspace\camera-xdemo\app\build.gradle.kts' line: 4
​
An exception occurred applying plugin request [id: 'org.jetbrains.kotlin.android', version: '1.8.0']
> Failed to apply plugin 'org.jetbrains.kotlin.android'.
   > Cannot add extension with name 'kotlin', as there is an extension already registered with that name.
​
* Try:
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights from a Build Scan (powered by Develocity).
> Get more help at https://help.gradle.org.
​
* Exception is:
org.gradle.api.plugins.InvalidPluginException: An exception occurred applying plugin request [id: 'org.jetbrains.kotlin.android', version: '1.8.0']
    at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.exceptionOccurred(DefaultPluginRequestApplicator.java:184)
    at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator$ApplyAction.apply(DefaultPluginRequestApplicator.java:165)
    at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.lambda$applyPlugins$1(DefaultPluginRequestApplicator.java:135)
    at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.applyPlugins(DefaultPluginRequestApplicator.java:135)
    at org.gradle.kotlin.dsl.provider.PluginRequestsHandler.handle(PluginRequestsHandler.kt:45)
    at org.gradle.kotlin.dsl.provider.StandardKotlinScriptEvaluator$InterpreterHost.applyPluginsTo(KotlinScriptEvaluator.kt:246)
    at org.gradle.kotlin.dsl.execution.Interpreter$ProgramHost.applyPluginsTo(Interpreter.kt:399)
    at Program.execute(Unknown Source)

内置 Kotlin

Android Gradle 插件 9.0 引入了内置 Kotlin 支持,并默认启用该支持。这意味着,您无需再在 build 文件中应用 org.jetbrains.kotlin.android(或 kotlin-android)插件来编译 Kotlin 源文件。这简化了 Kotlin 与 AGP 的集成,避免了使用已弃用的 API,并在某些情况下提高了性能。

因此,当您将项目升级到 AGP 9.0 时,还需要迁移到内置 Kotlin选择停用

您还可以为没有 Kotlin 源的 Gradle 子项目选择性地停用内置 Kotlin 支持

7.修改如下:

分别去掉app目录下的build.gradle和项目的build.gradlekotlin配置

import org.jetbrains.kotlin.storage.CacheResetOnProcessCanceled.enabled@Suppress("DSL_SCOPE_VIOLATION")
plugins {
    alias(libs.plugins.com.android.application)
}

image.png

// Top-level build file where you can add configuration options common to all sub-projects/modules.
@Suppress("DSL_SCOPE_VIOLATION")
plugins {
    alias(libs.plugins.com.android.application) apply false
}
true

image.png

libs.versions.toml的kotlin-android配置去掉:

[plugins]
com-android-application = { id = "com.android.application", version.ref = "agp" }
org-jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "org-jetbrains-kotlin-android" }

image.png

8.kotlin中jvm配置修改:

修改前配置:

compileOptions {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
    jvmTarget = "1.8"
}

image.png

修改后配置:

compileOptions {
    sourceCompatibility = JavaVersion.VERSION_11
    targetCompatibility = JavaVersion.VERSION_11
}
kotlin {
    compilerOptions {
        jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11)
    }
}

9.修改后运行:

可以看到修改后项目构建成功,运行也正常

image.png

10.运行效果截图:

image.png

11.完整的Demo地址:

gitee.com/jackning_ad…

12.本次升级完整踩坑清单回顾:

  • AGP9.3.1 → Gradle 版本不够 (8.11.1),升级 Gradle wrapper 到 9.5.0
  • Cannot add extension with name 'kotlin' → AGP 内置 Kotlin,重复加载 kotlin‑android 插件
  • Unresolved reference kotlinOptions → DSL 变更,改用 kotlin{compilerOptions{}}
  • 无效垃圾导入 import org.jetbrains.kotlin.storage.CacheResetOnProcessCanceled.enabled,直接删掉
  • Java 字节码版本升级从 1.8 → 11