在更新后,Up-to-date for Android Gradle Plugin version 8.0.2,AGP升级到了8.0
需要我们的gradle版本升级到8.0.2
至于AGB是什么东西,暂且不提,一般的项目在更新后肯定是编译不通过的
有以下的一些原因
问题一:java编译版本和kotlin编译版本不匹配
报错信息:
Execution failed for task ‘:sdk:compileDebugKotlin’.
‘compileDebugJavaWithJavac’ task (current target is 1.8) and ‘compileDebugKotlin’ task (current target is 17) jvm target compatibility should be set to the same Java version.
Consider using JVM toolchain: https://kotl.in/gradle/jvm/toolchain
可以看到我们java使用的编译版本是1.8,但是kotlin的编译版本已经升级到17了,这也是这次更新所带来的变化。Android studio版本更新到2022.2.1会自带java17版本
如何解决?
将其保持同步即可,在gradle中修改
compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = '17' }
这样就可以将其保持同步,另外也可以这样添加kotlin的版本
kotlin {jvmToolchain(8)}
保持版本同步后,就能解决上面的报错信息了
如果没能解决,就打开setting,在里面搜索gradle,更改里面的jdk版本,改为17
问题二:命名空间
namespace是这次更新后新增的一个属性,主要是用于资源的访问,在此之前,Android访问资源大多是利用包名来访问资源的,现在新增这个属性后,需要指定该属性去访问资源,不然就会出现编译失败
添加资源方式如下
android { namespace 'com.example.opendemoapp' ... ... ... }
还需要注意的是,如果含有多个模块,需要在其单独模块中的gradle中去指定其命名空间
nonTransitiveRClass 会强制要求 Module 的资源按 namespace 来区分使用
如果不想启用,可以改为false
android.nonTransitiveRClass=false
问题三:BuildConfig设置
如果项目中有用到BuildConfig,那么更新后会发现找不到该文件了,原因是在更新后默认没有启动还文件,如果需要使用的话,需要在android中插入如下声明
buildFeatures { buildConfig true }
如果全局都需要的话,那么在gradle.properties中添加
android.defaults.buildfeatures.buildconfig=true
在kotlin中使用,可以添加如下字段来增加编译速度
android.enableBuildConfigAsBytecode=true
来源地址:https://blog.csdn.net/weixin_43637780/article/details/131045369