適配前的開發(fā)環(huán)境:
名稱 | 版本 |
---|---|
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后通過編譯出現(xiàn)這個錯誤绍撞。
compileSdkVersion: 31,
buildToolsVersion: "31.0.0",
minSdkVersion : 19,
targetSdkVersion : 31,
錯誤發(fā)生原因:
具體原因暫不太清楚正勒,猜測應(yīng)該是跟Android的compileSdk和buildTools的版本有關(guān),因為將編譯版本降級為30時沒出現(xiàn)這個錯誤傻铣。
解決方式:
調(diào)整Gradle JDK的版本章贞,將jdk版本由1.8升級到11,再次編譯該錯誤解決非洲。
二鸭限、錯誤:java.lang.NoClassDefFoundError: javax/annotation/Generated
具體報錯信息如下圖:
操作步驟:
設(shè)置Gradle JDK的版本為11后直接進行編譯
錯誤發(fā)生原因:
直觀上看是編譯時缺少javax/annotation相關(guān)的類就谜,仔細分析錯誤發(fā)現(xiàn)涉及到dagger庫,初步認定與dagger版本有關(guān)里覆。
解決方式:
對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,出現(xiàn)了新的錯誤隧甚。
三车荔、錯誤: 無法訪問ViewGroup找不到android.view.ViewGroup的類文件
詳細錯誤如圖:
操作步驟:
設(shè)置build.gradle的compileOptions和kotlinOptions 為java 11
錯誤發(fā)生原因:
通過錯誤可以看出應(yīng)該跟android庫沒多少關(guān)系,真正的錯誤原因應(yīng)該是這個:
org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed; see the compiler error output for details
戚扳。解決方式:
待解決(可能需要升級gradle)
忧便,等后面有空了再研究下,先把版本適配了帽借。
研究后發(fā)現(xiàn)需要將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版本升級后脆荷,可以解決該問題凝垛,但隨著可能會出現(xiàn)其它問題,不同工程可能會出現(xiàn)不同問題蜓谋,要根據(jù)實際再解決梦皮。
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
方式變化,可以查閱相關(guān)資料桃焕,這里不具體寫剑肯。
4.當前還有其它變更,以上幾點僅是筆者升級過程遇到的幾處變化覆旭,這里羅列方便查看退子。
https://developer.android.google.cn/build/dependencies?agpversion=4.1&buildsystem=ndk-build&hl=zh-cn#groovy
擴展:
若有同學不了解gradle JDK和build.gradle中compileOptions的區(qū)別的可以參考下面文章:
https://blog.csdn.net/hnjcxy/article/details/122902155
黑暗中摸索不易岖妄,若對你有幫助型将,希望能給個大贊!<雠啊七兜!