如果定义了projB
,如何创建一个Android Studio(Gradle)多项目配置,使得project(':projA')
取决于projA
,否则使用libs/
中的文件呢?
由于可能会询问,因此在这种情况下projA
是一个SDK; projB
是一个旨在演示SDK的测试应用程序。如果SDK团队收到错误报告,通常会使用projB
包括复制步骤。
当projB
小组工作时,他们会在RC编译projA
上进行工作,而SDK小组则使用projB
并依赖于project(':projA')
,以便可以运行调试 session 。projB
没有对projA
的依赖关系的具体定义;该团队从构建服务器获取projA
输出,并将其放置在libs/
文件夹中,并且具有通配符依赖性。
编辑
我终于在依赖项关闭中使用了这段代码,它的工作原理就像一个魅力:
def sdkRef
project.getRootProject().allprojects.each { proj ->
if (proj.name.equals("Sdk")) {
sdkRef = proj;
return true;
}
}
if (sdkRef) {
println "SDK present in project; using project reference as dependency"
compile sdkRef
} else {
println "SDK is not present in project; using libs/"
}
最佳答案
我想知道您是否可以使用 flavor 和构建变体。
通过代码,您可以尝试构建文件:
dependencies {
if (project.getRootProject().findProject(":projectA")) {
compile project(":projectA")
} else {
compile files("libs/projectA.jar")
}
}
您必须考虑的一件事是,
settings.gradle
定义了项目中包括哪些模块。因此,您的两个团队最终可能会为该项目使用不同的文件。