Android Gradle中com.android.support库版本冲突及适配问题求助
解决Android Support库版本冲突与CompileSdkVersion不匹配问题
这个问题在Android开发里太常见了,我来一步步帮你搞定:
问题根源拆解
你遇到的两个错误其实是连锁反应:
- 首先,所有com.android.support库必须使用完全相同的版本——混用版本会触发运行时兼容性崩溃,你这里的版本冲突是因为某些第三方依赖(比如
com.github.paolorotolo:appintro:4.1.0或者com.facebook.android:facebook-android-sdk:4.+)间接引入了27.0.2版本的support库,和你手动指定的25.3.1版本撞车了。 - 当你把design库改成27.0.2后,又出现版本与compileSdkVersion不匹配的错误,这是因为support库的版本必须和你的
compileSdkVersion完全对齐——support库是基于对应版本的Android SDK编译的,版本错位会导致编译逻辑冲突。
完整解决方案
第一步:对齐CompileSdkVersion与TargetSdkVersion
打开app模块下的build.gradle,找到android代码块,把compileSdkVersion和targetSdkVersion都改成27(和你要使用的support库版本一致):
android { compileSdkVersion 27 defaultConfig { applicationId "你的应用ID" minSdkVersion 你的最低SDK版本 targetSdkVersion 27 // 其他原有配置... } // 其他原有配置... }
第二步:统一所有com.android.support库版本
把dependencies里所有com.android.support开头的依赖版本都改成27.0.2,同时建议把旧的compile替换成implementation(Gradle 3.0+推荐的依赖配置方式):
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation project(':rest') // Google相关依赖 implementation 'com.android.support:multidex:1.0.1' implementation 'com.android.support:support-v4:27.0.2' implementation 'com.android.support:mediarouter-v7:27.0.2' implementation 'com.android.support:appcompat-v7:27.0.2' implementation 'com.android.support:cardview-v7:27.0.2' implementation 'com.android.support:recyclerview-v7:27.0.2' implementation 'com.android.support:design:27.0.2' implementation 'com.google.android.gms:play-services:10.2.4' // 统计与崩溃监控 implementation('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') { transitive = true; } implementation 'com.google.android.gms:play-services-analytics:10.2.4' implementation 'com.google.firebase:firebase-core:10.2.4' // 这里建议和play-services版本对齐,避免新冲突 // 第三方SDK与工具库 implementation 'com.facebook.android:facebook-android-sdk:4.+' implementation 'com.github.paolorotolo:appintro:4.1.0' implementation 'com.github.clans:fab:1.6.1' implementation 'jp.wasabeef:recyclerview-animators:2.0.1' implementation 'com.bigkoo:convenientbanner:2.0.5' implementation 'com.wdullaer:materialdatetimepicker:2.5.0' implementation 'com.github.curioustechizen.android-ago:library:1.3.0' implementation 'com.paypal.sdk:paypal-android-sdk:2.15.0' implementation 'com.github.bumptech.glide:glide:3.7.0' implementation "com.mikepenz:iconics-core:2.8.1@aar" implementation 'com.mikepenz:google-material-typeface:2.2.0.3.original@aar' implementation 'com.mikepenz:material-design-iconic-typeface:2.2.0.2@aar' implementation 'com.wang.avi:library:2.1.3' implementation 'com.tomergoldst.android:tooltips:1.0.6' }
第三步:强制锁定第三方依赖的support版本(可选但推荐)
有些第三方库可能偷偷引入不同版本的support库,为了彻底杜绝冲突,可以在android代码块里添加配置强制所有support库使用指定版本:
android { // 其他原有配置... configurations.all { resolutionStrategy { force 'com.android.support:support-v4:27.0.2' force 'com.android.support:appcompat-v7:27.0.2' force 'com.android.support:design:27.0.2' // 可以把所有用到的support库都添加到这里 } } }
额外小提示
如果你暂时不想升级到27版本,也可以选择把所有support库保持在25.3.1,这时候用上面的resolutionStrategy.force方法强制第三方依赖也使用25.3.1版本即可,但更推荐使用较新的SDK版本,它包含更多bug修复和特性优化。
内容的提问来源于stack exchange,提问作者Alan Lin
相关产品推荐
相关产品推荐

