4

我想通过实现一个配置参数来简化开发,该参数确定应用程序应该在“DEV”模式还是“PROD”模式下运行。

我希望可以从任何文件访问此参数(基于此参数将执行不同的代码块)。

存储此参数的最实用方法是什么(用户无法访问或更改)?

如何从应用程序中访问它?

4

4 回答 4

5

从 ADT 17 (IIRC) 开始,您会自动将其作为自动生成BuildConfig类的一部分。

DEBUG字段在开发时始终是true,但是当您导出已签名或未签名的 apk 时,它设置为false. 您可以将其用作:

if(BuildConfig.DEBUG) {
    //Debug mode
}

或者反过来:

if(!BuildConfig.DEBUG) {
    //Release mode
}
于 2013-01-14T10:07:13.680 回答
4

您可以使用枚举:

public enum BuildType {

    Release, Pilot, Debug;
}

并将其分配给全局变量:

public static final BuildType BUILD_TYPE = BuildType.Debug;

您甚至可以在枚举中创建一些方法,允许您切换应用程序的非常特定的部分。

现在你可以做这样的事情:

if (MyApplication.BUILD_TYPE != BuildType.Release) {
    // some code that does not go in the release
}
于 2013-01-14T09:59:10.873 回答
1

您的一个 Activity 中的静态字段?或者我错过了什么?

public static boolean isDev = true;

你可以在onCreate你的主要活动中设置它。

于 2013-01-14T09:59:49.967 回答
0

您可以创建一个新类并在那里添加您的变量。您还可以添加一些方法,这些方法将在开发模式下显示有关您的应用程序的一些详细信息。

public class Console{
  public final static boolean isDev = true;
  public static error(String tag, String msg){
    if(isDev){
      Log.e(TAG, msg);
    }
  }
}
于 2013-01-14T10:05:19.290 回答