相同类别的两种不同的产品风味

时间:2019-04-29 20:53:48

标签: java android gradle kotlin

我有2种产品口味:

productFlavors {
    first{}
    second{}
}

并且我有一个Http类,其值恒定,如屏幕上所示:

enter image description here

我的问题是:

如果我设置了构建first,我希望Http的{​​{1}}类
但是如果我设置了构建CODE = 2000,我想使用second的{​​{1}}类

我看过这样的项目,看起来像:repo(first)和更改后 版本库repo(second)和类http因当前版本而有所不同,但无法复制它:/

2 个答案:

答案 0 :(得分:3)

如果您的类相同,但唯一的不同是常量,那么您无需复制代码,只需要做的是创建可通过BuildConfig类访问的gradle常量:

productFlavors {
    flavor1 {
        buildConfigField 'int', 'CODE', '1000'
    }

    flavor2 {
        buildConfigField 'int', 'CODE', '2000'
    }
}

然后您将使用

BuildConfig.CODE

在您的HTTP调用中,根据类型,可以容纳1000或2000。

答案 1 :(得分:0)

创建Http类的两个副本,一个在src/first/com.androidapp.testproject/repo中,另一个在src/second/com.androidapp.testproject/repo中,然后从src/main/...中删除副本。

src/first/...中您班级的第一个版本将根据您的口味first构建,而src/second/...中班级中的第一个版本将根据您的口味second构建。当然,您必须在相应的类副本中调整CODE的值。

有关更多信息,请参见以下答案https://stackoverflow.com/a/16746755/3286819