Android Studio中如何在多项目间共享Common Library模块?
解决多项目共享Common库的实用方案
Hey,我刚好碰到过类似的场景,给你几个实用的解决方案,完美解决你遇到的两个痛点——AAR依赖缺失、多版本维护麻烦:
1. Gradle复合构建(最适合本地开发实时同步)
这个方法完全不需要维护多个版本号,还能自动传递Common库的所有依赖,修改Common代码后app1、app2会实时同步。
步骤:
- 先把三个项目放在同一个父目录下,结构如下:
MyWorkspace/ ├── app1/ ├── app2/ └── Common/ - 在app1和app2的
settings.gradle(或settings.gradle.kts)中添加复合构建配置:
Groovy版本:
Kotlin版本:includeBuild '../Common'includeBuild("../Common") - 最后在app1和app2的
build.gradle中直接依赖Common库(用Common的groupId和artifactId,和依赖远程库一样):dependencies { implementation 'com.yourcompany:common:1.0.0' }
2. 本地Maven仓库发布(适合版本化管理)
如果你需要对Common库做版本控制,同时解决AAR依赖缺失的问题,这个方法最靠谱——发布到本地Maven后,依赖会自动传递,版本也只需要维护一处。
步骤:
- 在Common库的
build.gradle中添加Maven发布插件:
Groovy版本:plugins { id 'maven-publish' } publishing { publications { maven(MavenPublication) { from components.release // 按需选择release/debug groupId = 'com.yourcompany' artifactId = 'common' version = '1.0.0' // 版本号只在这里维护 } } repositories { mavenLocal() // 发布到本地Maven仓库 } } - 打开Common库的Gradle面板,执行
publishToMavenLocal任务,把库发布到本地仓库。 - 在app1和app2的
build.gradle中添加本地Maven仓库(如果没加过):repositories { mavenLocal() google() mavenCentral() } - 最后依赖Common库:
后续更新Common时,只需要修改版本号重新发布,app1、app2同步更新依赖版本即可。dependencies { implementation 'com.yourcompany:common:1.0.0' }
3. Git子模块(适合Git管理的团队项目)
如果你的项目用Git管理,子模块可以让你精准跟踪Common库的版本变更,同时避免多版本维护的麻烦。
步骤:
- 在app1/app2所在的Git仓库根目录,执行命令添加Common作为子模块:
git submodule add https://your-common-repo-url.git Common - 在app1和app2的
settings.gradle中引入Common模块:include ':Common' project(':Common').projectDir = new File(rootProject.projectDir, '../Common') - 之后在app1/app2的
build.gradle中依赖Common:
更新Common时,只需要拉取子模块的最新代码,app1、app2就能同步使用新版本,版本变更由Git提交哈希管理,不用手动维护版本号。dependencies { implementation project(':Common') }
为啥之前的方法有问题?
- 导出AAR的方式:AAR文件本身不包含依赖信息,所以Common的依赖不会被自动导入,而上面的方案都会自动处理依赖传递。
- 直接导入Gradle项目:如果是分开的仓库,确实需要手动同步版本,但复合构建和Git子模块都解决了这个问题,本地Maven也只需要维护一个版本号。
内容的提问来源于stack exchange,提问作者aotian16
相关产品推荐
相关产品推荐

