构建Release版AAR库集成后报Type o.a重复定义错误求助
核心原因
这个错误是混淆后类名冲突导致的:你的库在Release构建时开启了minifyEnabled true,ProGuard会把类名混淆成短名称(比如o.a);当集成到主项目后,主项目的Release模式如果也开启混淆,或者其他依赖库同样做了混淆且生成了相同的短类名,就会出现「Type o.a is defined multiple times」的冲突。
具体解决方法
给库的混淆规则添加唯一前缀
在库的proguard-rules.pro中添加规则,强制混淆后的类名使用专属前缀,避免和其他库撞名:-repackageclasses 'com.yourlibrary.obf'把
com.yourlibrary.obf替换成你的库的唯一包名前缀,这样混淆后的类都会放在这个命名空间下,不会和其他库冲突。关闭库的Release模式混淆
如果你的库是内部依赖、不需要单独混淆,或者希望和主项目统一做混淆,直接修改库的build.gradle配置:release { minifyEnabled false // 改为false debuggable false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.debug }让主项目在Release构建时统一处理所有依赖的混淆,避免重复混淆导致的类名冲突。
排查冲突类的来源
查看主项目或库的build/outputs/mapping/release/mapping.txt文件,找到o.a对应的原始类全限定名,确认是哪个模块或第三方库的类,然后针对性调整该模块的混淆规则,比如给冲突类添加-keep规则,防止被混淆成重复的短类名。验证依赖兼容性
虽然你的AGP和Gradle版本是匹配的(AGP7.3.0对应Gradle7.5),如果以上方法无效,可以尝试升级到更高的兼容版本(比如AGP7.4.2 + Gradle7.6),部分旧版本的混淆工具可能存在类名生成的bug。
内容的提问来源于stack exchange,提问作者Juro

