如果定义了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定义了项目中包括哪些模块。因此,您的两个团队最终可能会为该项目使用不同的文件。

10-08 07:10