【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文件里的一些自定义控件,路径写错了,改过来后终于能成功运行啦。

    原文作者:乎如冯虚御风
    原文地址: https://blog.csdn.net/sakura____/article/details/90321306
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞