Как иметь разные среды сборки для Android?

У меня есть десятки api-ключей для facebook и twitter и многих других сервисов, каков стандартный способ иметь разные значения для ключей в зависимости от того, создаю ли я конструкцию разработки или промежуточную сборку по сравнению с производственной сборкой?

Ответ 1

Вы можете использовать статический флаг для использования его в блоке коммутатора для определения ваших ключей. Это работает для простого проекта с двумя или тремя альтернативными ключами.

Если у вас действительно много, чтобы использовать в нескольких проектах, я предлагаю вам добавить их в класс-помощник, поэтому вы минимизируете изменение кода в своих классах. Что-то вроде:

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

Ответ 2

Я бы сохранил их в отдельных файлах свойств и ссылался на соответствующий файл свойств в вашем классе script/eclipse, в зависимости от того, что вы делаете.