关于com.android.support库版本不一致引发运行崩溃的技术咨询
嗨,这个问题我太熟悉了!Android Support库版本不一致绝对是个容易踩的坑,轻则弹出警告,重则直接导致App运行时崩溃,得赶紧把所有Support库的版本统一起来才行。
问题根源
将版本混用可能导致运行时崩溃。所有com.android.support库必须使用完全相同的版本规格(版本混用可能导致运行时崩溃)。检测到版本27.1.1、26.1.0,示例包括com.android.support:animated-vector-drawable:27.1.1和com.android.support:customtabs:26.1.0。
本质上是不同版本的Support库内部存在不兼容的类、方法或者资源,当App运行时加载这些不一致的库文件,就会引发类找不到、方法冲突等异常。
快速解决步骤
统一所有Support库版本
打开你的Module级别的build.gradle文件(注意不是Project根目录的那个),找到所有以com.android.support:开头的依赖项,把它们的版本号统一改成同一个(推荐选检测到的较高版本,比如这里的27.1.1)。
比如把:implementation 'com.android.support:animated-vector-drawable:27.1.1' implementation 'com.android.support:customtabs:26.1.0'修改为:
implementation 'com.android.support:animated-vector-drawable:27.1.1' implementation 'com.android.support:customtabs:27.1.1'用变量统一管理版本(推荐)
为了避免以后再次出现版本混用的问题,你可以在Module的build.gradle顶部定义一个版本变量,所有Support库都引用这个变量:ext { supportLibVersion = '27.1.1' } dependencies { implementation "com.android.support:animated-vector-drawable:$supportLibVersion" implementation "com.android.support:customtabs:$supportLibVersion" // 其他Support库依赖也用这个变量 }这样以后要升级版本,只需要修改
supportLibVersion这一处即可。处理第三方依赖间接引入的旧版本库
如果是某个第三方依赖偷偷引入了旧版本的Support库,你可以通过exclude语句排除它,然后手动添加统一版本的依赖:implementation('第三方依赖的坐标') { exclude group: 'com.android.support', module: 'customtabs' } // 再手动添加统一版本的customtabs implementation "com.android.support:customtabs:$supportLibVersion"同步项目
改完之后点击Android Studio右上角的Sync Now按钮,等待同步完成,警告应该就会消失了。
内容的提问来源于stack exchange,提问作者YAZZIN YASSIN

