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

解决MobileNetwork-runtime与Secure-agent-runtime模块重复类冲突

解决Android构建中AAR重复类冲突(go.Seq相关)

问题背景

构建项目时出现重复类冲突,报错显示MobileNetwork-runtime(MobileNetwork.aar)与Secure-agent-runtime(Secure-agent.aar)中存在重复类:go.Seq、go.Seq$GoObject、go.Seq$GoRef等。

已尝试操作:

  • 确认无冗余依赖引入
  • 验证模块版本兼容性
  • 尝试排除冲突依赖但无效
  • 清理构建缓存后重新编译仍未解决

具体解决方法

1. 精准定位冲突根源

先执行Gradle命令拉取完整依赖树,搞清楚重复类是两个AAR自带的,还是其中一个依赖的子依赖引入的:

./gradlew app:dependencies --configuration releaseRuntimeClasspath

在输出结果里搜索go.Seq相关关键词,就能明确类的来源路径,避免盲目操作。

2. 用packagingOptions强制选择单个类文件

如果确认两个AAR都自带这些重复类,直接在app模块的build.gradle里添加配置,指定优先保留第一个找到的类:

android {
    packagingOptions {
        pickFirst '**/go/Seq.class'
        pickFirst '**/go/Seq$GoObject.class'
        pickFirst '**/go/Seq$GoRef.class'
        // 有其他重复类就继续添加对应路径
    }
}

注意:这么做前要确认两个AAR里的这些类逻辑完全一致,否则可能引发运行时异常。

3. 强制统一子依赖版本(若重复类来自共同依赖)

如果重复类是两个AAR依赖的同一个子模块导致的,就用resolutionStrategy强制指定版本,让两个AAR共用同一版:

configurations.all {
    resolutionStrategy {
        force 'com.example:common-go-lib:1.0.0' // 替换为实际依赖坐标和版本
    }
}

4. 手动修改AAR(极端情况)

要是上面的方法都无效,就手动处理AAR文件:

  1. 把两个AAR分别解压到不同文件夹
  2. 删除其中一个文件夹里的go/Seq.class、go.Seq$GoObject.class等重复文件
  3. 用jar命令重新打包成新的AAR:
    jar cvf new-mobile-network.aar -C ./解压后的文件夹/ .
    
  4. 将新的AAR替换项目中原有的依赖

内容的提问来源于stack exchange,提问作者Savaliya Yash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 19:57:19