应用运行报错:authorizationsdk与iHealthSDK存在重复类a.a
解决Duplicate class a.a冲突问题
当同时集成authorizationsdk.aar和iHealthSDK_2.9.6两个依赖库时,出现以下错误:
Duplicate class a.a found in modules jetified-authorizationsdk-runtime (authorizationsdk.aar) and jetified-iHealthSDK_2.9.6 (iHealthSDK_2.9.6.jar)
这是因为两个库经过混淆后生成了同名的a.a类,导致编译冲突。以下是几种可行的解决方法:
排除重复依赖模块
在模块级build.gradle中,给其中一个库添加规则移除冲突依赖。若不清楚具体冲突模块,可尝试关闭依赖传递(注意可能引发其他依赖缺失,需测试):// 关闭authorizationsdk.aar的依赖传递 implementation(name: 'authorizationsdk', ext: 'aar') { transitive = false } // 或关闭iHealthSDK_2.9.6.jar的依赖传递 implementation files('libs/iHealthSDK_2.9.6.jar') { transitive = false }若明确冲突类来自某个子依赖,可精准排除:
implementation(name: 'authorizationsdk', ext: 'aar') { exclude group: 'com.example.conflict', module: 'conflict-module' }设置Gradle冲突解决策略
在模块级build.gradle中配置规则,指定优先使用其中一个库的类:configurations.all { resolutionStrategy { // 强制使用指定库的版本,替换为实际库坐标 force 'com.yourgroup:authorizationsdk:1.0.0' } }手动修改混淆类名
解压其中一个库(aar/jar),找到a.a类文件重命名为唯一名称(如auth_a.a),同时修改库中所有引用该类的代码,重新打包成aar/jar。此方法繁琐,需确保遵守SDK许可协议。联系SDK厂商修复
向两个SDK的开发者反馈类名冲突问题,请求提供无冲突的更新版本。
内容的提问来源于stack exchange,提问作者Ahmad Nasser
相关产品推荐
相关产品推荐

