У меня есть десятки api-ключей для facebook и twitter и многих других сервисов, каков стандартный способ иметь разные значения для ключей в зависимости от того, создаю ли я конструкцию разработки или промежуточную сборку по сравнению с производственной сборкой?
Как иметь разные среды сборки для Android?
Ответ 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, в зависимости от того, что вы делаете.