Где хранить глобальные константы в приложении для Android?

Я бы знал, какая наилучшая практика для хранения глобальных констант, которые могут измениться с помощью среды (debug, preprod, prod, release и т. Д.) Во время компиляции.

В iOS я использовал все глобальные константы в файле заголовка и менял его с помощью макропроцессора, чтобы увидеть этот ответ:

Где хранить глобальные константы в приложении iOS?

Какое решение я должен использовать для Android?

    Создайте константы класса в папке базового пакета.

    (Или создать интерфейс вместо класса, поэтому нет необходимости ссылаться на класс каждый раз, однако это плохая практика из-за читаемости кода, но она будет работать)

    Заполните его public static final значениями.

    Более того, как class так и interface также могут быть объявлены abstract .

    Если значения ваших констант зависят от среды (плотность, локаль и т. Д.), Вы должны использовать ресурсы для их хранения (целое число, строка, размер и т. Д.).

    В другом случае вы можете поместить свои глобальные константы в один файл (лучшие практики – использовать префиксы для каждого набора констант) или поместить локальные константы в связанные классы (например, Intent содержит флаги, дополнения, категории и т. Д.).

    Используйте public static final values. И сохраните их в отдельном файле java следующим образом:

      static String QC = "http:/************"; static String DEV = "http:/************"; static String CLOUD = "http:/************"; static String SERVICEURL = CLOUD ; //Use this SERVICEURL in your code at run time 

    Другим решением может быть использование файла ресурсов (если вы довольствуетесь сохранением только строковых значений).

    Это можно использовать для хранения констант, таких как учетная запись, которой управляет это приложение:

    Ex. WelcomeActivity.java

     AccountManager am = AccountManager.get(WelcomeActivity.this); Account account = am.getAccountsByType(getResources().getString(R.string.ACCOUNT_TYPE))[0]; 

    Ex. RES / значения / strings.xml

     <resources> <string name="ACCOUNT_NAME">com.acme.MyAccountSignature</string> </resources> 

    Это также позволит вам изменить это без необходимости перекомпиляции (подобно тому, как вы обычно отделяете переводы, для которых лучше всего использовать файл strings.xml).