Я пишу библиотеку, которая используется разработчиками, и у меня есть элементы конфигурации, такие как apiKey
, environment
и другие. Я хочу, чтобы разработчик установил эти значения, моя первая мысль заключалась в использовании файла Java Properties, который я загружаю в классе Application, но я видел, что Google Play и SDK Google Map попросили разработчиков добавить их apiKey в тег метаданных в Android Manifest. Каков рекомендуемый способ?
Конфигурация Android в метаданных или в файле свойств?
Ответ 1
Рекомендуемый андроид, позволяющий пользователю определять значения для вашей библиотеки из модуля приложения через метатеги
это так же просто, как использовать этот код в android-manifest
<meta-data android:name="com.yourproject.apikey" android:value="apikey"/>
и вы можете получить эти значения из своей библиотеки следующим образом
try {
ApplicationInfo applicationInfo = getPackageManager().getApplicationInfo(activity.getPackageName(), PackageManager.GET_META_DATA);
Bundle bundle = applicationInfo.metaData;
String apiKey = bundle.getString("com.yourproject.apikey");
} catch (NameNotFoundException e) {
//Resolve error for not existing meta-tag, inform the developer about adding his api key
}
Основными преимуществами этого подхода являются
1). Вы можете позволить пользователю определять разные значения для каждого типа устройства, например. телефон, планшет или sdk-версия (это может быть неприменимо для вашего дела, но это точно).
2) Вы можете добавить сложные данные в качестве значения в свой метатег, и вы можете использовать это, если хотите добавить строковый массив со всем значением, которое вы хотите объявить.
3) Так как мета-теги являются в основном пакетом, вам легче
-
Прочитайте эти значения в коде вашей библиотеки.
-
Имеют значения по умолчанию, если пользователь не объявил требуемые мета-теги.
(Я считаю, что для разбора свойств из активов требуется больше кода без каких-либо больших преимуществ)
4) Вы также можете добавить метатеги конфигурации для действий, поставщиков и трансляции на вашем AndroidManifest.
5) Также я полагаю, что проще попросить потребителей вашей библиотеки добавить несколько метаинформаций в свой манифест Android, чем добавить файл свойств в свою папку с ресурсами. И я считаю, что это главная причина Многие известные библиотеки используют такой подход, как google-play-service, google-maps, библиотеки отчетов о сбоях и множество библиотек, которые предоставляют пользователю аналитику.
Удача
Ответ 2
Кажется, что использование тега meta-data - это способ Android для этого, хотя я не могу найти официальную документацию, чтобы утверждать, почему.
Используя метаданные, вы можете определить значение свойства, используя ресурс вместо статического значения, таким образом вы можете получить разные значения для одного и того же свойства на основе квалификатора ресурсов. Это очень полезно, если ваша собственность нуждается в интернализации.
Пример:
<meta-data android:value="foo.bar" android:name="@string/hello" />
Ответ 3
легко использовать это
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="API_KEY"/>