Android依赖冲突:com.payu.gpay如何正确排除重复类冲突依赖
Android依赖重复类冲突解决方案
问题根因说明
你之前的排除配置不生效,是因为指定的排除group错误:冲突的installreferrer依赖所属group为com.android.installreferrer,并非你配置的com.google.android。另外如果payu-gpay直接将installreferrer的类打包到自身aar(非传递依赖引入),常规排除配置也会失效。
方案1:排除传递依赖(优先尝试)
如果payu-gpay是通过传递依赖引入的installreferrer,使用如下配置即可排除冲突依赖:
api ('com.payu.gpay:payu-gpay:1.1.4'){ exclude group: 'com.android.installreferrer', module: 'installreferrer' }
配置完成后同步项目即可。你可以执行以下命令验证payu-gpay的依赖树,确认是否存在installreferrer传递依赖:
# Windows环境执行时去掉开头的./,将app替换为你的业务模块名 ./gradlew app:dependencies --configuration releaseRuntimeClasspath | grep -A 10 "payu-gpay"
如果查询结果中payu-gpay下无installreferrer依赖记录,说明installreferrer是被直接打入payu-gpay的aar包中,需要使用方案2处理。
方案2:packagingOptions优先级配置
对于aar内嵌的重复类,你可以在模块级build.gradle的android闭包中添加packagingOptions规则,指定重复类的选择优先级:
android { // 原有配置保持不变 packagingOptions { // 优先选用官方installreferrer库中的重复类,也可根据业务需要调整选择逻辑 pickFirst "com/google/android/a/a.class" pickFirst "com/google/android/a/b.class" pickFirst "com/google/android/a/c.class" } }
兜底方案:全局强制依赖版本
如果上述方案仍未解决问题,可在项目根目录build.gradle的allprojects闭包中添加全局版本强制规则:
allprojects { configurations.all { resolutionStrategy { // 全局强制使用2.1版本的installreferrer force 'com.android.installreferrer:installreferrer:2.1' } } }
内容的提问来源于stack exchange,提问作者Rahul Gupta
相关产品推荐
相关产品推荐

