如何为Android拥有不同的构建环境?

11

我有许多Facebook、Twitter和其他服务的API密钥,如果我正在进行开发构建、暂存构建或生产构建,有什么标准方法可以根据这些不同情况为密钥赋予不同的值?

2个回答

5
您可以使用静态标志在switch块中定义您的键。这适用于仅有两个或三个备选键的简单项目。
如果您真的有很多备选键,并且要在多个项目中使用,建议将它们添加到助手类中,以便最小化您的类中的代码更改。例如:
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;
    }
}

并将其用作:

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

最终我进行了类似于这样的字符串变量的运行时检查。 - hunterp

0
我会将它们保存在不同的属性文件中,并根据您所做的事情,在构建脚本/ Eclipse类路径中引用适用的属性文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接