同一类为两种不同的产品风味

问题描述 投票:0回答:2

我有2种产品口味:

productFlavors {
    first{}
    second{}
}

我在屏幕上有一个具有常数值的类Http

enter image description here

我的问题是:

如果我已经设置了构建first,我希望Http类与CODE = 2000 但如果我已经设置构建second我想Http类与CODE = 1000

我看过这样一个项目看起来像:repo(第一个)和更改后构建repo(第二个)和类http根据当前构建而不同,但不能复制它:/

java android gradle kotlin
2个回答
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的更多信息,请参阅以下答案


3
投票

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

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

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

然后你会用

BuildConfig.CODE

在您的HTTP调用中,根据风格,将保持1000或2000。

© www.soinside.com 2019 - 2024. All rights reserved.