java - BuildConfigField 决定如何定义成员(枚举)

标签 java android build.gradle android-build android-buildconfig

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;
        }
    }
    ....
}

但是这不起作用。是否可以做我想做的事?如果是,那么如何?

最佳答案

您不能只在类定义中编写 if 语句。

Java中没有ifdef和ifndef。

您可以做的是为每个产品风格创建 java 代码文件夹,然后在每个文件夹中正确创建枚举定义。

示例:
应用程序/src/debug/java/my/package/MyEnum.java
应用程序/src/beta/java/my/package/MyEnum.java

然后,当你构建debug时,它将使用debug版本,如果你构建beta,它将使用beta版本。

关于java - BuildConfigField 决定如何定义成员(枚举),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57571415/

相关文章:

android - react native : Update view (ListView) on navigator pop

java - 具有多个源文件夹的 eclipse 项目的 build.gradle

java - 从子上下文引用在父上下文中创建的 Spring Singletons

android - OpenGL ES 2.0 漫射照明 : model shows up black

java - 如何使 JavaFX 上下文菜单中的 MenuItems 支持 onMouseOver 事件

android - 填充来自不同类android的 ListView

intellij-idea - gRPC UnsupportedAddressTypeException,但仅当与 shadowJar 打包时

android - Android Studio 2.3.1

java - 带有注释的模式序列化也被序列化

java - 如何在 spring mvc 中为 LocalDate 注册全局数据绑定(bind)?