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

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版本:
    includeBuild '../Common'
    
    Kotlin版本:
    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库:
    dependencies {
        implementation 'com.yourcompany:common:1.0.0'
    }
    
    后续更新Common时,只需要修改版本号重新发布,app1、app2同步更新依赖版本即可。

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:
    dependencies {
        implementation project(':Common')
    }
    
    更新Common时,只需要拉取子模块的最新代码,app1、app2就能同步使用新版本,版本变更由Git提交哈希管理,不用手动维护版本号。

为啥之前的方法有问题?

  • 导出AAR的方式:AAR文件本身不包含依赖信息,所以Common的依赖不会被自动导入,而上面的方案都会自动处理依赖传递。
  • 直接导入Gradle项目:如果是分开的仓库,确实需要手动同步版本,但复合构建和Git子模块都解决了这个问题,本地Maven也只需要维护一个版本号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:31:19