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

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

Solutions Collecting From Web of "Как иметь различные среды сборки для Android?"

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

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

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

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