【Android】更新SDK版本时遇到的各种问题

前几天老师忽然找我,说实验室的Android项目,客户安装时闪退,发来的客户的手机设置,android版本是9.0,知道应该是android版本的适配出了问题,打开实验室项目一看,应该是gradle版本太低了,居然是2.2,刚好Android Studio更新到3.3,gradle顺便更新到了5.1,于是直接将项目的gradle版本升级到了5.1,这倒没什么问题,找了同学的好几个Android9.0的手机运行都没有问题,然后直接交付给了老师,完美!

但今天想着,既然更新,就来一次大更新,打算将targetSdkVersion更新到28,总有个警告看着不舒服(强迫症),以及更新项目导入的依赖库,然而,将com.android.support:appcompat更新到28.0.0时遇到了问题:
All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes
查了一下,大致意思就是com.android.support的包版本号要保持一致,但是可能我们自己新建的项目的com.android.support包版本号要高一些,一些第三方的库的com.android.support可能没有及时更新support库,就会出现这个错误。
参考了大佬的博客,比较好的有两个解决方案,
1、找出发生冲突的包,使用exclude group排除掉support库的依赖
2、将项目依赖包迁移到AndroidX
https://blog.csdn.net/yuzhiqiang_1993/article/details/78214812
由于实验室项目依赖的包实在是太多,为所有发生冲突的包排除依赖太麻烦,所以采取了第二种方案,这也是我第一接触AndroidX,于是去查看官方文档,
https://developer.android.google.cn/jetpack/androidx/migrate

使用Android Studio 3.2及更高版本,您可以通过从菜单栏中选择Refactor> Migrate to AndroidX,快速迁移现有项目以使用AndroidX 。

如果您有任何尚未迁移到AndroidX名称空间的Maven依赖项,那么当您true在 gradle.properties文件中设置以下两个标志时,Android Studio构建系统也会为您迁移这些依赖项:

android.useAndroidX=true
android.enableJetifier=true

要迁移不使用任何需要转换的依赖项的第三方库的现有项目,可以将android.useAndroidX标志设置为 true,将android.enableJetifier标志设置为false。


于是按照官方说的做法,在 gradle.properties添加了上面那两条属性,Sync后果然不报错了,然而,打开一个activity,居然全是错误。。。。。。原来以前那些import全不行了,于是从头到尾alt+enter重新导入
所有的类都修复完了以后,编译项目又报错了,是butterknife库,应该是版本太久了,看了看butterknife的官方文档,将版本更新到最新版本10.1.0,运行时还是报错
Invoke-customs are only supported starting with Android O (–min-api 26)
是说butterknife最新的库支持的最低版本居然是AndroidO??!!,这咋行,查了查发现应该再加几行代码

compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }

好吧,人家官方文档里也说了,但我给忽略了,再次编译,没错误了哦耶,一运行,闪退
……%&#……&%#&(%&(¥&……¥(&……)&()&¥……#
android.view.InflateException: Binary XML file line #22: Binary XML file line #22:

接着想办法解决,发现是XML文件里的一些自定义控件,路径写错了,改过来后终于能成功运行啦。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值