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

如何创建Android统一依赖管理模块并向其他模块输出部分依赖

依赖管理模块实现方案

这个需求是多模块Android项目的通用最佳实践,目前有两种成熟的实现方式:

方案1:Gradle版本目录(官方推荐,适合分类分组管理依赖)

该方案可以直接把不同类型的依赖打包成依赖组,其他模块按需引入即可:

  • 首先创建独立的依赖管理模块(命名可自定义,比如dependency-manager),该模块不需要任何业务代码,仅保留配置文件即可。
  • 在模块根目录下新建gradle/libs.versions.toml文件,分类声明app、wearOSApp、core三类依赖,示例如下:
[versions]
core-ktx = "1.12.0"
wear-compose = "1.3.0"
appcompat = "1.6.1"

[libraries]
# core类依赖
core-ktx = { module = "androidx.core:core-ktx", version.ref = "core-ktx" }
# app类依赖
app-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }
# wearOS类依赖
wear-compose-material = { module = "androidx.wear.compose:compose-material", version.ref = "wear-compose" }

[bundles]
# 同类型依赖打包,方便批量引入
core = ["core-ktx"]
app = ["app-appcompat"]
wear = ["wear-compose-material"]
  • 在项目根目录的settings.gradle(.kts)中关联该版本目录:
// settings.gradle.kts 示例
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
    // 关联自定义模块中的版本目录
    versionCatalogs {
        create("libs") {
            from(files("./dependency-manager/gradle/libs.versions.toml"))
        }
    }
}
  • 其他模块按需引入对应依赖即可,不需要单独声明版本:
// 比如wearOSApp模块的build.gradle.kts
dependencies {
    // 批量引入wear类所有依赖
    implementation(libs.bundles.wear)
    // 也可以单独引入某一个core类依赖
    implementation(libs.core.ktx)
}

方案2:Java Platform插件(适合强制全项目统一依赖版本)

如果需要严格限制所有模块的依赖版本,避免出现版本不一致问题,可以使用该方案:

  • 给依赖管理模块的build.gradle(.kts)引入java-platform插件,声明所有需要统一管理的依赖:
// dependency-manager模块的build.gradle.kts示例
plugins {
    `java-platform`
}

dependencies {
    constraints {
        // core类依赖
        api("androidx.core:core-ktx:1.12.0")
        // app类依赖
        api("androidx.appcompat:appcompat:1.6.1")
        // wearOS类依赖
        api("androidx.wear.compose:compose-material:1.3.0")
    }
}
  • 其他模块先引入该platform依赖,再按需引入对应包,不需要写版本号:
// app模块的build.gradle.kts示例
dependencies {
    implementation(platform(project(":dependency-manager")))
    // 直接引入需要的依赖,版本会自动从platform模块获取
    implementation("androidx.appcompat:appcompat")
    implementation("androidx.core:core-ktx")
}

通用性说明

该实现已经被大量Android多模块项目采用,包括Google官方的架构示例项目、多数中大厂的商用项目,核心优势是统一依赖版本,降低后续版本升级的维护成本。

内容的提问来源于stack exchange,提问作者Kacper Królikowski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:48:02