专业的编程技术博客社区

网站首页 > 博客文章 正文

android api 从13 升级到15过程

baijin 2025-01-15 10:41:15 博客文章 6 ℃ 0 评论

我们的应用还在android 13 版本,决定把工程升级到15 ,结果发现很多东西要修改,下面是升级的过程记录。


# 1. 现状


android api 33


jdk 版本11


kotlin 版本1.6,用的还是 kotlin-android-extensions 方案


gradle 版本 7.3.0


# 2. 遇到的问题以及解决方案


主要使用工具 AGP Update Assist 和 Android SDK update。android,gradle,kotlin 相互影响。android api 升级需要gradle 升级,gradle 升级又需要kotlin 升级。


1. 先把android api 升级到35,会发现需要gradle 升级,就把gradle 版本调整为8.7.0 ,结果发现根本下不来,最后采用腾讯镜像才完成升级,腾讯镜像地址是https\://mirrors.cloud.tencent.com/gradle/gradle-8.7-bin.zip。

1. 随后升级jdk 为17后,会碰到jdk_home 原来设置的是1.8 版本不一致的提示,修改路径到17的位置。

1. 修改build.gradle 过时的用法compileSdkVersion 更换为 compileSdk,targetSdk 更换为targetSdkVersion,compileOptions {


sourceCompatibility = JavaVersion.VERSION_1_8


targetCompatibility = JavaVersion.VERSION_1_8


}更换为 compileOptions {


sourceCompatibility = JavaVersion.VERSION_17


targetCompatibility = JavaVersion.VERSION_17


}


4. kotlin 版本由 1.6.20 升级为 1.9.20,kotlin-android-extensions 更换为kotlin-kapt,引入kotlin-parcelize,使用room 框架的原来的 annotationProcessor "androidx.room:room-compiler:$room_version" 更换为 kapt "androidx.room:room-compiler:$room_version",另外


buildFeature 增加 viewBinding = true


5. kotlin 升级后导致报了很多语法错误,主要碰到的问题有:


<!---->


1. 1. 1. api 重载不匹配,有ondraw 方法,Animator.AnimatorListener 的重载方法,修改方法都是去掉?

1. when 没有覆盖所有条件,修改方法是增加else

1. 无效的引用,删除import kotlinx.android.synthetic.main.usecarselectcity.*

1. include id 对应的view 找不到熟悉比如visibility,需要给对应的Include 根节点增加id ,用根节点view

1. 自定义组件中直接使用的控件变量找不到定义,修改方法是需要再重新声明下,如 val tv_filter_time:TextView?=null;

1. 最复杂的一个问题是编译通过,但是合并mainfeist 报错,就需要用命令gradlew build --debug --info --stacktrace 才看问题后再解决。


以上是升级相关配置遇到的问题,只是api 升级后完成了工程的正确编译,并不包括需要的api 适配。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表