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

如何在Android项目中结合复合构建与类型安全项目访问器?

问题:复合构建引入的模块无法通过类型安全项目访问器引用

我的Android应用模块结构如下:

app
 |> presentation (android module)
 |> domain (jvm module)
 |> androidkit (公司共享模块;通过Git子模块以复合构建方式引入)

原可正常运行的Gradle配置

settings.gradle.kts

include(
    ":app",
    ":presentation",
    ":domain",
)

// 以复合构建方式引入androidkit
includeBuild("androidkit")

app模块的build.gradle.kts

dependencies {
    implementation(project(":domain"))
    implementation(project(":presentation"))
    implementation("androidkit")
    ...
}

使用类型安全项目访问器后的问题

启用Gradle的TYPESAFE_PROJECT_ACCESSORS特性后,projects.domain和projects.presentation可以正常引用,但复合构建引入的androidkit无法编译通过,配置代码如下:

settings.gradle.kts

enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")

app模块的build.gradle.kts

dependencies {
    implementation(projects.domain)
    implementation(projects.presentation)
    implementation(projects.androidkit) // 此处编译失败
}

解决方案

类型安全项目访问器仅为当前构建中通过include()声明的项目生成访问代码,复合构建引入的androidkit属于独立的外部构建,不在当前构建的项目集合内,因此无法通过projects.androidkit直接引用。可以通过以下两种方式解决:

  • 方式一:使用模块的完整依赖坐标
    如果androidkit已发布到内部或公共仓库,直接使用它的完整Maven坐标引用,例如:
dependencies {
    implementation(projects.domain)
    implementation(projects.presentation)
    implementation("com.yourcompany:androidkit:1.0.0")
}
  • 方式二:保留复合构建+依赖替换
    如果需要继续使用本地复合构建的androidkit,可以在settings.gradle.kts中配置依赖替换规则,将坐标引用替换为本地复合构建的模块:
    在settings.gradle.kts中添加:
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")

includeBuild("androidkit") {
    dependencySubstitution {
        // 替换规则:将坐标com.yourcompany:androidkit替换为复合构建中的:androidkit项目
        substitute(module("com.yourcompany:androidkit")).using(project(":androidkit"))
    }
}

然后在app模块的依赖中使用坐标引用,Gradle会自动替换为本地复合构建的模块:

dependencies {
    implementation(projects.domain)
    implementation(projects.presentation)
    implementation("com.yourcompany:androidkit")
}

内容的提问来源于stack exchange,提问作者m.reiter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:05:16