基于BuildType的Gradle模块替换

时间:2018-04-04 15:32:23

标签: android gradle

我有一个远程maven服务器设置用于托管工件,以加快Android项目的gradle构建时间。但是,我一直试图找到一种方法来在使用这些远程模块之间切换,并通过在本地构建new_imm = np.expand_dims(imm,axis=-1) 目标来使用这些工件的本地实例,以便我可以测试对库项目的更改。

对于我的项目,我有4种构建变体:

  • 调试
  • debugLocal
  • QA
  • 释放

在我的应用级build.gradle的project部分,我希望能够像这样声明依赖关系:

dependencies

但是,如果我尝试构建debugLocal变体,我会得到dex merge错误,因为implementation 'com.remote:dependency1:x.x.x' implementation 'com.remote:dependency2:x.x.x' debugLocalImplementation project(':dependency1') debugLocalImplementation project(':dependency2') 配置仍然包含远程依赖项。

到目前为止,我发现能够“关闭”远程依赖项的唯一方法是为每个远程依赖项声明特定于变体的配置,如下所示:

implementation

随着库或构建类型数量的增加,这种声明/管理依赖关系的方式也会增长。有没有更好的方法来指定在我们运行debugLocal buildType时使用本地库版本(并排除远程库)?

1 个答案:

答案 0 :(得分:0)

"实施"实际上构建你在android studio中在build variant section.eg中选择的变体 - 如果你选择了debug那么它就像debugImplemention。

为了保持分开,请使用产品口味。

在您的情况下,您可以创建

productFlavors {

        local {

        }

        remote {

        }
}

创建本地文件夹并在那里添加依赖项。 创建远程文件夹并在那里添加依赖项。

现在,当您使用buildvariants构建时,您将看到localDebug。您还可以更改remoteDebug并运行。

您还可以根据Buildtypes.Like localDebug创建文件夹并添加库。