You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:30:48