目前老項目的Android API 是30, 對應(yīng)的Android系統(tǒng)11,截至2023年4月5日,最高版本為Android 13,想著把compileSdkVersion 改為31,結(jié)果~~~~

上百度一搜,大概意思就是android studio配置的 jdk版本 和 gradle版本不對導(dǎo)致的.如果想要把build-tools升級到31,會強(qiáng)制要求升級到gradle7,否則無法編譯.
參考來自:http://www.itdecent.cn/p/b50a3c160b32

Google play store都要求API 31了,看來很有必要升級一下,目前項目的版本是:
compileSdkVersion : 30,
buildToolsVersion : '30.0.2',
minSdkVersion : 21,
targetSdkVersion : 29,
Android gradle 插件 (AGP):
classpath 'com.android.tools.build:gradle:4.2.1'
gradle:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
于是開始升級之路
compileSdkVersion : 31,
buildToolsVersion : '30.0.2',
minSdkVersion : 21,
targetSdkVersion : 31,
Android gradle 插件 (AGP):
classpath 'com.android.tools.build:gradle:7.2.1'
gradle:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
Android studio 升級到:2021.2.1

結(jié)果又出錯了,看出錯信息大概就是Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8

查看官網(wǎng)的Android gradle插件版本說明:
https://developer.android.google.cn/studio/releases/gradle-plugin?hl=zh-cn


項目的JDK是1.8的,開始升級到JDK11,下載安裝后,配置環(huán)境變量,在項目中選擇file->project structure....


選擇剛剛安裝的JDK版本

注意:
在項目中全局搜索配置jvm 從1.8 改為11,如下
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
kotlin指定的jvmTarget
kotlinOptions {
jvmTarget = '11'
}
結(jié)果又有問題,問題如下:


此時新建一個新的項目,按照以上配置,是可以正常運行的:但是setting.gradle有所變化

項目的build.gradle

app中的build.gradle

而我項目用的還是舊的 apply plugin +buildscript的配置
查看官網(wǎng),AGP 7.0以上,做了很多的修改
https://developer.android.google.cn/studio/past-releases/past-agp-releases/agp-7-0-0-release-notes?hl=zh-cn
于是把自己的項目的gradle配置根據(jù)文檔改了一遍,參照新建的項目修改.
結(jié)果還是不行,百度了一遍,有網(wǎng)友說AGP7.0以上也是向下兼容apply plugin配置的,意識到錯誤應(yīng)該不是gradle配置的問題.我的是老項目,涉及到很多模塊,而且有些模塊也是有很老的代碼.
這時候思路已經(jīng)亂了,百度也查不到有用的資源,大部分就是推薦版本降級等,好吧,重頭來一遍,把項目回退到原來的狀態(tài),AGP 4.2.1 ,gradle 6.7.1, JDK1.8等配置.這時候項目成功運行起來了.
解決思路:
把老項目其他模塊全部屏蔽掉,只留下一個模塊來測試,這樣修改的工作量減少了,也能快速的定位錯誤,不會被其他模塊干擾.
直接先升級JDK,從JDK1.8升級到JDK,運行結(jié)果


這個問題的解決辦法就是要升級gradle
那就繼續(xù)升級gradle ,為了避開AGP7.0以上版本變動太大,先升級到AGP7.0較早的版本,選了一個7.0.3,以下配置
Android gradle 插件 (AGP):
classpath 'com.android.tools.build:gradle:7.0.3'
gradle:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
build~~~竟然SUCCESSFUL(太驚喜了)

雖然編譯通過了,但是這個提示估計是剛剛更新了 AGP,導(dǎo)致其不再與當(dāng)前 Gradle 版本兼容或者是與Android studio的版本不兼容,但不影響運行,也沒提示其他錯誤了.
修改gradle配置(這個版本就是最開始的升級版本)
compileSdkVersion : 31,
buildToolsVersion : '30.0.2',
minSdkVersion : 21,
targetSdkVersion : 31,
Android gradle 插件 (AGP):
classpath 'com.android.tools.build:gradle:7.2.1'
gradle:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
build~~編譯成功,到此為止,總算升級到Android api31了.在升級之路也遇到了很多問題,非常感謝百度資源提供的幫助,于是自己也進(jìn)行總結(jié),把遇到的問題貼出來,給需要的朋友提供一些參考.
gradle7還有許多修改的地方,請參考官網(wǎng) 插件版本說明:
https://developer.android.google.cn/studio/releases/gradle-plugin?hl=zh-cn
有個疑問?同樣的配置第一次不行,第二次就可以了,那是因為我第二次屏蔽了部分的模塊,其中有一個商城模塊,我是用純kotlin寫的,其他模塊用java寫的.現(xiàn)在把商城kotlin模塊引入,錯誤又出來了

這個錯誤指在android{}是因為我把apply plugin: 'kotlin-android-extensions'給注釋掉了,所以才報這個錯誤

現(xiàn)在把插件kotlin-android-extensions打開,并把kotlin版本改為:
ext.kotlin_version = '1.5.31'
ext.ktx_version='1.3.1'
ext.anko_version='0.10.8'
ext.koin_version='2.1.5'
Gradle 版本還和 Kotlin 版本有關(guān)系,根據(jù)你使用的 Gradle 版本也需要配置對應(yīng)的 kotlin-gradle-plugin 版本:

現(xiàn)在又可以正常運行了.

感覺剛升級到AGP7,最新的已經(jīng)是AGP8了,這技術(shù)更新的太快,也沒必要用最新的了

目前的Android studio版本是2021.2.1 是花栗鼠版本,個人喜好火烈鳥這個封面,單純喜好封面而已,于是在下載一個2022.2.1火烈鳥版本

Android Studio Flamingo 自帶 JDK17, 默認(rèn)gradle最低的版本是7.3,AGP7.2以上.看來下次就要從JDK11升級JDK17,再搭配AGP8了.
參考文章:
https://developer.android.google.cn/studio/releases/gradle-plugin?hl=zh-cn
https://zhuanlan.zhihu.com/p/569633238
http://www.itdecent.cn/p/b50a3c160b32