BuildConfigField 决定如何定义成员(枚举)
BuildConfigField to decide how to define the member (enum)
build.gradle(模块):
productFlavors {
mytest {
...
buildConfigField "boolean", "SHORT_ENUM", "false"
}
mysecondtest {
buildConfigField "boolean", "SHORT_ENUM", "true"
}
在 MyClass 中,我想根据我定义的 buildConfigField 在构建期间定义枚举成员:
public class MyClass {
// members initialization
public enum MYENUM {
if (BuildConfig.SHORT_ENUM) {
FIRST(0),
SECOND(1);
}
else { // SHORT_ENUM is false
FIRST(0),
SECOND(1),
THIRD(2),
FORTH(3);
}
private int value;
MYENUM(int v) {
value = v;
}
}
....
}
但是没用。有没有可能做我想做的事?如果是,那又如何?
在这种情况下 BuildConfig.SHORT_ENUM
是 boolean
。
只需使用
if (BuildConfig.SHORT_ENUM){
...
}
无论如何你不能这样做。
这取决于您想如何使用它们。您有多种选择:
- 您可以在不同的 buildType 中使用 2 个不同的 类。
- 只需创建一个方法,该方法将 return 根据条件
的值
您不能只在 class 定义中编写 if
语句。
Java中没有ifdef和ifndef。
您可以做的是为每个产品口味创建 java 代码文件夹,然后在每个文件夹中正确创建枚举定义。
示例:
app/src/debug/java/my/package/MyEnum.java
app/src/beta/java/my/package/MyEnum.java
然后,当您构建调试时,它将使用调试版本,如果您构建测试版,它将使用测试版。
build.gradle(模块):
productFlavors {
mytest {
...
buildConfigField "boolean", "SHORT_ENUM", "false"
}
mysecondtest {
buildConfigField "boolean", "SHORT_ENUM", "true"
}
在 MyClass 中,我想根据我定义的 buildConfigField 在构建期间定义枚举成员:
public class MyClass {
// members initialization
public enum MYENUM {
if (BuildConfig.SHORT_ENUM) {
FIRST(0),
SECOND(1);
}
else { // SHORT_ENUM is false
FIRST(0),
SECOND(1),
THIRD(2),
FORTH(3);
}
private int value;
MYENUM(int v) {
value = v;
}
}
....
}
但是没用。有没有可能做我想做的事?如果是,那又如何?
在这种情况下 BuildConfig.SHORT_ENUM
是 boolean
。
只需使用
if (BuildConfig.SHORT_ENUM){
...
}
无论如何你不能这样做。 这取决于您想如何使用它们。您有多种选择:
- 您可以在不同的 buildType 中使用 2 个不同的 类。
- 只需创建一个方法,该方法将 return 根据条件 的值
您不能只在 class 定义中编写 if
语句。
Java中没有ifdef和ifndef。
您可以做的是为每个产品口味创建 java 代码文件夹,然后在每个文件夹中正确创建枚举定义。
示例:
app/src/debug/java/my/package/MyEnum.java
app/src/beta/java/my/package/MyEnum.java
然后,当您构建调试时,它将使用调试版本,如果您构建测试版,它将使用测试版。