Android Studio、JDK、AGP、Gradle、kotlin-gradle-plugin 兼容性问题

文章目录

问题:

你从githb上clone了一个项目,本地跑的时候,各种报错。如果这个项目没问题,大概率是Android Studio的版本不一致引起的的

解决办法:

gradle与 java的版本兼容

因为现在Android Studio,自带java环境,不同版本的AS,对应的jdk版本不一致,这个jdk版本会设置到Gradle的JDK,如下图:

根据项目里gradle的版本 和 Java Runtime和Gradle的版本兼容性文档:Compatibility Matrix,修改Gradle JDK为兼容的版本

如果源项目是可以正常运行的,那此时应该没问题了。

AGP与Gradle的版本兼容

如果你是修改了gradle的版本,保持Gradle JDK不变,那么还需要检查AGP的版本,AGP与Gradle的版本兼容文档: Android Gradle plugin 8.7 release notes

AGP 对Android SDK 也有版本要求,也在该文档中,进行查询 。

kotlin 与 jvm 的版本兼容

如果你的代码用到了kotlin,需要注意kotlin与java版本的关系,在kotlin的每个大版本的介绍文档中都有介绍, 例如: What's new in Kotlin 2.1.0 的kotlin-jvm

如果懒得翻文档,这里有个表格 Which versions of Kotlin are compatible with which versions of Java?

KGP、Gradle、AGP兼容关系

KGP、Gradle、AGP兼容关系

不兼容的高版本Gradle,可能指定过高的jvm去编译kotlin,例如:出现Unknown Kotlin JVM target: 21 错误 ,可能是 Android Studio升级到最新版,你升级了Gradle版本,KGP没有跟着升

三种解决办法:

第一种:升级KGP 到支持jvm 21 的版本

第二种:降低Gradle版本,分析是高版本的Gradle,默认指定使用 jvm21去编译kotlin 导致的。

第三种:kotlin 与 java 的编译版本

kotlin 与 java 的编译版本配置

根据文档介绍 Check for JVM target compatibility of related compile tasks,可以手动保证java和kotlin的编译版本一致,也可以使用toolchain(自动发现和安装需要的jdk)

下面介绍手动配置编译:

Compiler options in the Kotlin Gradle plugin 介绍了配置kotlin编译选项的三种方式,每种都可以对kotlin的编译版本进行配置

groovy 复制代码
import org.jetbrains.kotlin.gradle.dsl.JvmTarget

android {
    // 配置java的目标版本
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
 // 配置编译kotlin的jvm版本
kotlin {
    compilerOptions {
        jvmTarget = JvmTarget.JVM_1_8
    }
}

拓展: kotlin-stdlib-jdk8的作用

相关推荐
wxwx_bscxy3221 天前
基于Python新冠疫情可视化分析系统的设计与实现
java·数据库·spring boot·python·微信小程序·sqlite
evans在进步1 天前
Tomcat NIO 工作原理详解:从 Acceptor、Poller 到容器处理链
java·tomcat·nio
渡我白衣1 天前
并查集:基础认识与模拟实现
android·java·javascript·数据结构·c++·算法·并查集
电商API_180079052471 天前
电商商品价格监控工具淘宝京东商品价格抓取API项目实操分享
java·大数据·开发语言·前端·数据挖掘
zzzll11111 天前
深度剖析:HashMap 并发死循环与 ConcurrentHashMap 两代演进全解
java·开发语言
秋名RG1 天前
2026/5/27 生产事故复盘与整改方案
java
血小板要健康1 天前
链表 阶段算法总结
java·数据结构·笔记·算法·leetcode·链表
坐吃山猪1 天前
【多线程】CompletableFuture使用
java·开发语言·多线程
m0_587383001 天前
点餐预约核销系统的架构脉络
java·架构·系统架构·需求分析
代码方舟1 天前
O2O二手车交易平台B端车商管理后台:基于天远车信盟出险构建自动化车况评估网关
java·运维·人工智能·自动化