androidx.appcompat 升级到1.5.1 趟过的坑

这篇具有很好参考价值的文章主要介绍了androidx.appcompat 升级到1.5.1 趟过的坑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

APP 要上google play,Android SDK 版本要升级到32;接了一个第三方SDK,不巧的是这个SDK引用appcompat是1.5.1,顺手把appcompat 包升级到1.5.1,这草率的一升,带来的不止一地鸡毛,还有精神上被残忍无情的蹂躏,心情上躁动不安,以及快要上线的APP给心理上带来的惴惴不安;再次吐槽android这种碎片化的诟病,当时RN SDK升级的痛苦仿佛瞬间又要扑面而来,而且这一次来的貌似更猛烈些。

一时的心血来潮

androidx.appcompat 版本: 1.3.1 ---> 1.5.1

在https://developer.android.google.cn/jetpack/androidx/releases/appcompat?hl=zh-cn查询到 1.5.1 会有如下依赖:

androidx.appcompat 升级到1.5.1 趟过的坑

好家伙,Lifecycle 版本也要升级到 2.5.1,再查:

androidx.appcompat 升级到1.5.1 趟过的坑

同时修改项目依赖版本到 2.5.1:

androidx.appcompat 升级到1.5.1 趟过的坑

可以在Maven上面继续查询一下,androidx.appcompat 的依赖如下:

androidx.appcompat 升级到1.5.1 趟过的坑

把对应的项目中依赖修改成对应版本,例如我的:

androidx.appcompat 升级到1.5.1 趟过的坑

场面逐渐失控

本以为版本升级到此结束,编译轻轻click,起身打水,品一口我的西湖龙井;回来一看,我去!新的报错:appcompat-1.5.1-api.jar!/META-INF/appcompat_release.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.7.1, expected version is 1.5.1;截图如下:

androidx.appcompat 升级到1.5.1 趟过的坑

顿时感觉不妙啊,这是要升级kotlin版本呐,思前想后一番纠结之后,都折腾到这份上了也不能停啊,于是开始了 kotlin 版本升级: 1.5.20 ----> 1.7.10

androidx.appcompat 升级到1.5.1 趟过的坑

Sync 之后果然果然代码里出现各种语法错误提示,查看kotlin 官方文档:https://book.kotlincn.net/text/whatsnew17.html 看到了好多新语法特性,此时灰头土脸的还来不及细品这些,此间不小心看到了看到Gradle的字眼,瞬间感觉不太妙,编译报错gradle 版本过低,仔细一看:

androidx.appcompat 升级到1.5.1 趟过的坑

好家伙,果然要升级Gradle,我的Android Studio好久没更新了,既然要gradle 7.0,那我就升级到最新版本Android Studio,免得好多kotlin 代码有语法高亮提示错误,一顿操作猛如虎,升级到了最新版本Android Studio;在官网:https://developer.android.google.cn/studio/releases/gradle-plugin?hl=zh-cn#kts查了一下Grandle对应插件版本:

androidx.appcompat 升级到1.5.1 趟过的坑

于是把gradle版本升级到了:7.1.2,过程中还有gradle 要求运行java版本为11,自行搜索修改了一下Studio 设置,至此 Kotlin、 Android Studio、Gradle 都做了升级,语法错误高亮提示少了许多,点击运行依旧会提示语法错误,那就是苦力活了,各种when必须添加else分支、一些个判空操作的lamda表达式需要修改;

柳暗花明

看着几十上百个kotlin语法错误,无法编译,when必须添加else分支、一些个判空操作的lamda表达式语法糖需要修改,剩下的就是苦力活了,不断地修改语法错误,编译再修改,再编译,花了半天功夫总算是可以顺利编译通过了,再次短期我的茶杯,此时那茶已然凉透了,倒掉再泡一杯。。。

总结

代码虽然都修改完了,也能顺利运行起来,但如此大动干戈的修改代码,带来的不只是架构上的风险,业务层代码也进行了很多修改,虽然都是些语法适配修改,但毕竟是动了代码,作为码农我们敢拍胸脯保证百分之百的正确吗?我心里是惴惴不安的,这个样的改动,测试同学是不是又能全部覆盖呢,我想测试同学也是惶恐万分,我们开发是不是能把每一处修改都覆盖测试,以及交付测试时能够准确的告诉测试范围呢?对于这样的疑问我大底是要沉默了的。我想这样的改动若是最终引发了线上故障怕也只有开发去默默地背起这口锅了。

Android 的碎片化,每过一段时间就会给我们带来一次阵痛,也许一个简单API升级就会引发一系列的升级改造,我想不只是Android、Kotlin、RN、Flutter、Swift; 其实这种升级的兼容性是难以避免的,因为这是思想的变化、技术的革新,我们能做的就是拥抱变化,追随技术时代的步伐,不断学习新的架构,不断升级调整我们代码,这样我们才能始终守护住自己的那份麦田。That's All文章来源地址https://www.toymoban.com/news/detail-487077.html

到了这里,关于androidx.appcompat 升级到1.5.1 趟过的坑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记录一下postman汉化踩过的坑

    postman安装后会频繁的进行更新,每次更新后我们会发现,postman界面就会回到原来的英文界面。这是由于汉化包的版本和postman的版本不一致导致的。 postman汉化包的更新滞后于postman的更新,如果要成功将postman汉化,就要下载以前的版本保证postman的版本和汉化包的版本一致。

    2024年02月15日
    浏览(44)
  • 升级targetSdkVersion至33(以及迁移至Androidx)

    1.设置 android.useAndroidX=true 和 android.enableJetifier=true 2.一键迁移至androidx:Refactor - Migrate to Androidx 3.手动修改未能自动迁移到androidx的部分: android.support.v4.view.ViewPager.PageTransformer - androidx.viewpager.widget.ViewPager.PageTransformer android.support.annotation.NonNull - androidx.annotation.NonNull android.s

    2024年02月07日
    浏览(35)
  • docker+selenium+firefox | 我踩过的坑

    为了实现SSPUBot不在我电脑上部署,我只能将其制成Docker。 要知道SSPUBot在开发的时候用了selenium+Firefox的想法开发,所以Docker里面必须要有Firefox,结果这就让见识到了最顽固的错误 selenium.common.exceptions.WebDriverException: Message: Process unexpectedly closed with status 255 我们还是省略我找的

    2024年01月22日
    浏览(55)
  • Spark搭建日志,记录一些踩过的坑

    本人在Centos中使用三个虚拟机(node1,node2,node3)搭建hadoop与Spark分布式环境(具体见后记中的Hadoop安装),本文记录一些踩过的坑 解决办法:sudo chown -R 用户名 /spark(spark或者hadoop所在目录) 原理:文件的初始所有者不是用户名(如root),要把spark目录的初始所有者更换为自

    2024年03月14日
    浏览(84)
  • 关于python的mediapipe库踩过的坑

      大家好,我是csdn的博主: lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,vue领域博主 lqj_本人擅长微信小程序,前端,vue,等方面的知识 https://blog.csdn.net/lbcyllqj?spm=1000.2115.3001.5343 哔哩哔哩欢迎关注: 小淼前端 小淼前端的个人空间_哔哩哔哩_bilibil

    2024年01月17日
    浏览(37)
  • 一卡通水控电控开发踩过的坑

    最近在做一个项目,是对接一卡通设备的。我一开始只拿到设备和3个文档开局。不知道从哪下手。一步一步踩坑过来。踩了很多没有必要的坑,写出来给有用的人吧。 有个读卡器,一开始什么软件也不提供。我都不知道是干嘛用的。后来问客服才知道有一个测试软件。我真

    2024年01月23日
    浏览(59)
  • hql(hive sql)中的join及踩过的坑

    1 几种join方式 join join 对应于 inner join 内连接。 当多张表进行 join 的时候,所有表中与 on 条件中匹配的数据才会显示。 hql (即 hive sql )的 on 子句中只支持 and ,不支持 or ,也不支持 null 的对比。 left outer join 左外连接,也称为左连接。 以左表为基准,如果右表有条件匹配

    2024年01月21日
    浏览(42)
  • 嵌入式-stm32重要基础知识(及踩过的坑)

    1、固件库: 固件库就是函数的集合,固件库函数的作用是向下负责与寄存器直接打交道, 向上提供用户函数调用的接口(API)。 2、CMSIS标准与固件库的关系 就是对固件库函数的要求。 ARM 公司为了能让不同的芯片公司生产的 Cortex-M3 芯片能在软件上基本兼容,和芯片生产商

    2024年02月04日
    浏览(55)
  • 「AntV」X6开发实践:踩过的坑与解决方案

    长期更新版文档请移步语雀(「AntV」X6开发实践:踩过的坑与解决方案 (yuque.com)) --Recent update:2024-01-05 相信你们在开发中更多的需求是需要自定义拖拽源,毕竟自定义的功能扩展性高一些,而且可以根据你的业务需求灵活设置。自定义拖拽的优点就是:万物皆可成为拖拽源,

    2024年02月08日
    浏览(104)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包