Android中Facebook SDK依赖冲突:如何排除冲突库?
解决Facebook SDK与Android Support库的版本冲突问题
我之前也碰到过完全一样的坑!你尝试的排除方法没生效,大概率是模块名写错了——错误提示里的冲突库是animated-vector-drawables(复数带s),但你排除的是animated-vector-drawable(单数),差一个字母直接导致排除规则失效了!
下面给你几个可行的解决方案,按优先级排序:
方案1:修正依赖排除规则
直接把排除的模块名改成复数形式,精准移除Facebook SDK携带的高版本冲突依赖:
compile ('com.facebook.android:facebook-android-sdk:4.+') { exclude group: 'com.android.support', module: 'animated-vector-drawables' // 保险起见,也可以一并排除其他可能冲突的Support库,比如: // exclude group: 'com.android.support', module: 'support-v4' // exclude group: 'com.android.support', module: 'appcompat-v7' }
方案2:强制所有Support库使用统一版本
如果排除单个依赖还是有遗漏,可添加全局配置,强制所有第三方依赖的Support库都使用你项目指定的26.0.1版本:
configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested if (requested.group == 'com.android.support') { if (!requested.name.startsWith('multidex')) { details.useVersion '26.0.1' } } } }
这个方法一劳永逸,不管哪个第三方库带了不同版本的Support库,都会被强制替换成你指定的版本。
方案3:升级本地Support库版本
如果项目允许,直接把本地Support库版本和Facebook SDK依赖的27.0.1对齐,从根源上消除版本差异:
- 将
compileSdkVersion和targetSdkVersion修改为27 - 把所有
com.android.support开头的依赖版本统一改成27.0.1
修改后的核心配置示例:
android { compileSdkVersion 27 defaultConfig { // ...其他原有配置 targetSdkVersion 27 } } dependencies { compile 'com.android.support:design:27.0.1' compile 'com.android.support:appcompat-v7:27.0.1' compile 'com.android.support:recyclerview-v7:27.0.1' compile 'com.facebook.android:facebook-android-sdk:4.+' // ...其他依赖 }
最后提个小建议:尽量避免使用4.+这种模糊版本号,指定具体的Facebook SDK版本(比如4.38.0)能让依赖更稳定,减少后续版本升级带来的意外冲突。
内容的提问来源于stack exchange,提问作者Adam Varhegyi
相关产品推荐
相关产品推荐

