适配前的开发环境:
名称 | 版本 |
---|---|
Android studio | Giraffe | 2022.3.1 |
build.gradle配置的compileOptions | JDK 1.8 |
build.gradle配置的kotlinOptions | "1.8" |
Gradle JDK版本(通过Project Structure > SDK Location > Gradle Settings配置) | JDK 1.8 |
Android Gradle Plugin版本 | 4.0.0 |
Gradle版本 | 6.1.1 |
一、错误:java.lang.AssertionError: annotationType(): unrecognized Attribute name MODULE
具体报错信息如下图:
操作步骤:
小编是直接将compileSdkVersion、buildToolsVersion、targetSdkVersion修改为31后通过编译出现这个错误。
compileSdkVersion: 31,
buildToolsVersion: "31.0.0",
minSdkVersion : 19,
targetSdkVersion : 31,
错误发生原因:
具体原因暂不太清楚,猜测应该是跟Android的compileSdk和buildTools的版本有关,因为将编译版本降级为30时没出现这个错误。
解决方式:
调整Gradle JDK的版本,将jdk版本由1.8升级到11,再次编译该错误解决。
二、错误:java.lang.NoClassDefFoundError: javax/annotation/Generated
具体报错信息如下图:
操作步骤:
设置Gradle JDK的版本为11后直接进行编译
错误发生原因:
直观上看是编译时缺少javax/annotation相关的类,仔细分析错误发现涉及到dagger库,初步认定与dagger版本有关。
解决方式:
对dagger版本进行升级,由2.9 -> 2.47
说明:
若不是由引入的第三方库引起可尝试引入javax.annotation-api
库,如下:
implementation 'javax.annotation:javax.annotation-api:1.3.2'
annotationProcessor("javax.annotation:javax.annotation-api:1.3.2")
正常以小编的工程把上面两个问题解决就能正常编译打包了,但是强迫症迫使我与时俱进,于是将工程使用的Java版本升级到11,出现了新的错误。
三、错误: 无法访问ViewGroup找不到android.view.ViewGroup的类文件
详细错误如图:
操作步骤:
设置build.gradle的compileOptions和kotlinOptions 为java 11
错误发生原因:
通过错误可以看出应该跟android库没多少关系,真正的错误原因应该是这个:
org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed; see the compiler error output for details
。解决方式:
待解决(可能需要升级gradle)
,等后面有空了再研究下,先把版本适配了。
研究后发现需要将gradle版本升级到7.0以上,以下是测试通过版本
1.gradle版本升级到7.5;
2.插件版本升级到classpath "com.android.tools.build:gradle:7.4.2"
;
3.File->setting->building->Build Tools->gradle,将Gradle JDK切换java 11;
注:gradle版本升级后,可以解决该问题,但随着可能会出现其它问题,不同工程可能会出现不同问题,要根据实际再解决。
gradle7.0以后书写变化:
1.apply plugin: 'com.android.application'
变化为:plugins{ id 'com.android.application' }
2.apply from: '../adapter12.gradle'
变化为:apply(from:'../adapter12.gradle')
3.buildTypes的配置中android.applicationVariants.all
获取versionName
和versionCode
方式变化,可以查阅相关资料,这里不具体写。
4.当前还有其它变更,以上几点仅是笔者升级过程遇到的几处变化,这里罗列方便查看。
https://developer.android.google.cn/build/dependencies?agpversion=4.1&buildsystem=ndk-build&hl=zh-cn#groovy
扩展:
若有同学不了解gradle JDK和build.gradle中compileOptions的区别的可以参考下面文章:
https://blog.csdn.net/hnjcxy/article/details/122902155
黑暗中摸索不易,若对你有帮助,希望能给个大赞!!!