如何为Android设置不同的构建环境?

hun*_*erp 11 android

我有几十个api键到facebook和twitter以及许多其他服务,根据我是在进行开发构建而不是分段构建还是生产构建,具有不同的键值的标准方法是什么?

Ale*_*dam 5

您可以使用静态标志在开关块中使用它来定义键.这适用于带有两个或三个备用键的简单项目.

如果您真的拥有那么多,要在多个项目中使用,我建议您将它们添加到帮助程序类中,这样您就可以最小化类中的代码更改.就像是:

public class BuildHelper {
    public static final int DEBUG=0;
    public static final int STAGING=1;
    public static final int PRODUCTION=2;

    public static int BUILD;

    public static String getFbKey() {
      switch(BUILD) {
        case DEBUG: return "xxx";
        case STAGING: return "yyy";
        case PRODUCTION: return "zzz"; 
      }
      return null;
    }
    public static String getTwitterKey() {
      switch(BUILD) {
        case DEBUG: return "xxx";
        case STAGING: return "yyy";
        case PRODUCTION: return "zzz"; 
      }
      return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

并将其用作:

public class YourClass extends Activity {

    public static String FB_KEY;
    public static String TWITTER_KEY;
    //etc.

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    BuildHelper.BUILD=BuildHelper.DEBUG; // or STAGING or PRODUCTION
    FB_KEY = BuildHelper.getFbKey();
    TWITTER_KEY = BuildHelper.getTwitterKey();
    //etc.
  }
}
Run Code Online (Sandbox Code Playgroud)