在构建发布版本时更改常量值

sho*_*kri 5 eclipse android build-process release-mode debug-mode

我正在使用ADT for eclipse开发eclipse.
在我的应用程序中,我有一些常量可以帮助我轻松地调试我的应用程序.
作为一个例子,我有:
public static final boolean DEBUG_TOAST_LOGS = true;
它帮助我在屏幕上烘烤一些日志.
每次我打算构建一个版本时,我都必须通过我的常量并将它们的值设置为适合发布版本的版本,这在某种程度上是痛苦的.
现在我想要的是一种构建我的应用程序的方法,使用两种配置:一种用于调试模式,另一种用于发布模式.在释放模式应为我设置常量相应的值.我怎么能这样做?你的建议是什么?什么是满足我需求的最佳方式?

任何帮助,将不胜感激.

hid*_*dro 10

我不确定您是否使用Gradle作为构建系统.如果这样做,您可以设置构建类型特定资源,例如,布尔debug值将true用于调试构建类型,而false用于版本构建类型.

的build.gradle

android {

    defaultConfig {
        ...
        resValue "bool", "debug", "true"
    }

    buildTypes {
        release {
            ...
            resValue "bool", "debug", "false"
        }
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

Application.java

public class Application extends android.app.Application {
    @Override
    public void onCreate() {
        super.onCreate();
        if (getResources().getBoolean(R.bool.debug)) {
            ... // debug logic here
        }
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)


Ora*_*bîg 6

@ hidro的解决方案很好,但getResources()...每次要访问该值时都需要不必要的调用.

还有另一种可能性:

的build.gradle

android {
  buildTypes {
    debug {
      buildConfigField "boolean", "DEBUG_TOAST_LOGS", "true"
    }

    release {
      buildConfigField "boolean", "DEBUG_TOAST_LOGS", "false"
    }
}
Run Code Online (Sandbox Code Playgroud)

}

然后,在您的代码中,您可以编写:

if (BuildConfig.DEBUG_TOAST_LOGS) {
  // ... enjoy your toasts ...
}
Run Code Online (Sandbox Code Playgroud)