Android如何在主应用及应用模块中添加同一AAR文件
解决多模块Android应用中同一AAR重复引用导致的类重复问题
你遇到的编译错误核心原因是同一个AAR被多个模块独立引入,导致打包时出现重复的类定义。下面是两种靠谱的解决方式:
方案一:项目级统一管理AAR
这种方式适合多个模块都需要用到同一个AAR的场景,避免重复拷贝文件:
- 在项目根目录新建
libs文件夹(如果没有的话),把myaar-1.1.0.aar移动到这个目录下。 - 打开根目录的build.gradle,在
allprojects的repositories里添加本地flat仓库配置:
allprojects { repositories { google() mavenCentral() // 新增本地libs仓库 flatDir { dirs rootProject.file("libs") } } }
- 在MyApp和Module1的
build.gradle中,统一添加如下依赖:
implementation(name: 'myaar-1.1.0', ext: 'aar')
方案二:通过主模块传递依赖
如果只有MyApp和Module1需要用这个AAR,可以让主模块把依赖传递给子模块:
- 修改MyApp的
build.gradle,把原来的implementation改成api(api会让依赖向下传递):
// MyApp模块的build.gradle api files('libs/myaar-1.1.0.aar')
- 删除Module1里的
libs文件夹和对应的依赖代码,然后确保Module1已经依赖了MyApp:
// Module1模块的build.gradle implementation project(':MyApp')
这样Module1就能自动使用MyApp引入的AAR,不会出现重复打包的问题。
关键注意事项
- 绝对不要在多个模块中分别拷贝同一个AAR并单独添加
implementation依赖,这会让每个模块都打包一份AAR,最终合并时必然出现重复类或Manifest组件冲突。 - 如果AAR包含Activity这类Manifest注册的组件,重复引入还会导致Manifest合并失败,上述两种方案都能从根源避免这个问题。
内容的提问来源于stack exchange,提问作者HitMan
相关产品推荐
相关产品推荐

