Android Studio 3.1.2中com.android.support库版本不一致问题求助
嗨,我来帮你搞定这个头疼的Support库版本冲突问题!这个报错的核心原因很明确:Android要求所有com.android.support系列的库必须使用完全相同的版本规格,混合不同版本确实会触发运行时崩溃的风险,你这里检测到27.1.1和26.1.0两个版本,分别来自animated-vector-drawable和customtabs,咱们只要把它们统一到同一个版本就能解决问题。
下面给你两种靠谱的解决方案,你可以根据自己的需求选择:
方案一:强制所有Support库使用指定版本(推荐)
这种方式最省心,不需要手动排查每个依赖,直接通过Gradle的分辨率策略,强制所有com.android.support库统一到你想要的版本。看你的build.gradle里compileSdkVersion是26,那咱们统一用26.1.0版本最合适,在app模块的build.gradle里添加以下配置:
android { compileSdkVersion 26 defaultConfig { applicationId "c.myapplication" minSdkVersion 16 targetSdkVersion 26 versionCode 1 versionName "1.0" // 你的其他配置... } // 你的其他android块配置... } // 添加这个块来强制统一Support库版本 configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested if (requested.group == 'com.android.support') { // 排除multidex,因为它的版本规则不一样 if (!requested.name.startsWith("multidex")) { details.useVersion '26.1.0' } } } } dependencies { // 你的原有依赖... }
这样不管哪个第三方依赖偷偷引入了其他版本的Support库,都会被自动替换成26.1.0,版本冲突自然就消失了。
方案二:手动排查并替换冲突依赖
如果你想更精准地控制依赖,可以先查看项目的完整依赖树,找到引入customtabs:26.1.0的那个第三方库,然后排除它自带的Support库,再手动添加统一版本的customtabs。
首先执行命令查看依赖树:
./gradlew app:dependencies
找到对应的依赖后,比如假设是某个叫com.example.somelibrary:x.y.z的库引入的,就用exclude来移除它自带的冲突依赖,再手动添加正确版本的库:
dependencies { // 排除第三方库自带的customtabs依赖 implementation('com.example.somelibrary:x.y.z') { exclude group: 'com.android.support', module: 'customtabs' } // 手动添加统一版本的Support库 implementation 'com.android.support:customtabs:26.1.0' implementation 'com.android.support:animated-vector-drawable:26.1.0' // 你的其他依赖... }
另外提醒一句:如果之后你打算把compileSdkVersion升级到27,记得同步把所有Support库的版本改成27.1.1,同时把targetSdkVersion也改成27,这样版本匹配度更高,也能避免后续的版本问题。
内容的提问来源于stack exchange,提问作者Jaymin Bhadani

