AndroidAGP9.0升级之路

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。以下是更多兼容性信息:

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

4.升级AGP版本到9.3.1:

我最开始的版本是8.9.3

升级到9.3.1:

ini 复制代码
[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

修改后的配置:

ini 复制代码
#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重复引入报错:

php 复制代码
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配置

scss 复制代码
import org.jetbrains.kotlin.storage.CacheResetOnProcessCanceled.enabled
​
@Suppress("DSL_SCOPE_VIOLATION")
plugins {
    alias(libs.plugins.com.android.application)
}
kotlin 复制代码
// 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

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

ini 复制代码
[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" }

8.kotlin中jvm配置修改:

修改前配置:

ini 复制代码
compileOptions {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
    jvmTarget = "1.8"
}

修改后配置:

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

9.修改后运行:

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

10.运行效果截图:

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
相关推荐
杉氧3 小时前
RN 性能调优指南:重渲染(Re-renders)控制与长列表(FlatList)优化
android·前端·react native
Coffeeee3 小时前
claude-video 一个让你的Agent拥有看视频能力的Skill
android·人工智能·aigc
菜鸟~noob2334 小时前
【电子战】第07篇:多普勒测向【含matlab代码】
android·开发语言·matlab
样子20184 小时前
Js 之根据白名单过滤 HTML(防止 XSS 攻击)
android·前端·javascript·html·xss
InsightCore4 小时前
别再往 Skill 里塞一切:我们如何重新思考 AI Debug Engineer
android·debug
Kapaseker5 小时前
写过 4000 行 ViewModel 后,我开始这样拆 Compose 页面
android·kotlin
恋猫de小郭5 小时前
ADB Wi-Fi 2.0 ,Android 17 把无线调试的连接链路重新做了一遍
android·前端·flutter
亿是守候 & 亿是承诺5 小时前
第二章 控制系统的数学模型
android
Carson带你学Android5 小时前
ADK for Kotlin:Google 官方 AI Agent 教程来了
android·agent·ai编程
一航jason17 小时前
Android平台推理框架及试用场景模型对比
android·人工智能·ai·架构·ai编程·llama