背景
升着玩
思路
把旧项目,gradle7.0+和jdk11,直接升级到gradle8.0和jdk17。
开发环境
win10,as4+,jdk8+
过程
要点
对于安卓targetVersion的升级要点,没什么好说的,提一下核心的改动点。
安卓12,pendingIntent,蓝牙这两块是重点,pendingIntent可以整合一个工具类,统一创建,统一适配。蓝牙,得判断版本,再去申请权限。
安卓13,图片,视频读取权限变更,这里注意适配一下就好了,可能对于某些音频相关的应用,会有比较大的影响。
过程
首先,在targetVersion升级的过程中,会有:
(1)namespace的申明变动,这个cv解决就好了。
(2)会有buildConfig的失效。这个直接在对应的module,进行下面代码的配置即可。
buildFeatures{buildConfig = true}
(3)会有compose版本的兼容问题,这里博主配置如下:
composeRootDp = [//platform('androidx.compose:compose-bom:2022.12.00'),'androidx.compose:compose-bom:2024.01.00']composeDep = ['androidx.compose.material3:material3','androidx.compose.material:material','androidx.compose.foundation:foundation:1.6.0','androidx.compose.ui:ui','androidx.compose.ui:ui-tooling-preview','androidx.compose.ui:ui-tooling','androidx.compose.ui:ui-test-junit4','androidx.compose.ui:ui-test-manifest','androidx.compose.material:material-icons-core','androidx.compose.material:material-icons-extended','androidx.compose.material3:material3-window-size-class','androidx.activity:activity-compose:1.5.1','androidx.lifecycle:lifecycle-viewmodel-compose:2.5.1',"androidx.compose.runtime:runtime:1.7.0", // 或者使用最新版本"androidx.compose.runtime:runtime-livedata:1.7.0",// 可选'androidx.compose.runtime:runtime-rxjava2:1.7.0','androidx.lifecycle:lifecycle-runtime-ktx:2.7.0','com.google.accompanist:accompanist-swiperefresh:0.34.0','com.airbnb.android:lottie-compose:6.1.0',]
关联的编译版本
compileSdkVersion: 34,buildToolsVersion: "34.0.0",minSdkVersion : 24,targetSdkVersion : 34,
(4)签名,打包问题。如果升级了jdk版本,在你进行加固包重签名,多渠道(walle)的时候,也必须用上对应的jdk环境进行操作,否则会失败或者应用闪退。
(5)代码兼容低版本方面,代码如下,博主兼容的是jdk8
compileOptions {sourceCompatibility 1.8targetCompatibility 1.8}kotlinOptions {jvmTarget = '1.8'}