元数据或属性文件中的Android配置?

Jim*_*mmy 10 android android-manifest

我正在编写一个供开发人员使用的库,我有一些配置项,比如apiKey,environment和其他.我想开发人员设置这些值,我首先想到的是使用我在Application类中加载的Java Properties文件,但我看到Google Play和Google Map SDK要求开发人员在Android的元数据标记中添加他们的apiKey表现.推荐的方式是什么?

Man*_*rom 8

推荐的android方法让用户从应用程序模块定义库的值是通过元标记

它就像在android-manifest上使用这个代码一样简单

<meta-data android:name="com.yourproject.apikey" android:value="apikey"/>
Run Code Online (Sandbox Code Playgroud)

你可以像这样从你的库中获取这些值

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
}
Run Code Online (Sandbox Code Playgroud)

这种方法的主要好处是

1)您可以让用户为每种设备类型定义不同的值,例如手机,平板电脑或sdk版本(这可能不适用于您的情况,但这肯定是一个好点)

2)您可以在元标记中添加复杂数据作为值,如果要添加包含要声明的所有值的字符串数组,则可以使用此数据.

3)由于元标记基本上是一个包,因此更容易

  • 在库代码中读取这些值.

  • 如果用户尚未声明所需的元标记,则具有默认值.

(我相信从资产中解析属性需要更多代码而没有任何好处)

4)您还可以在AndroidManifest上为活动,提供者和广播接收者添加配置元标记.

5)此外,我认为更容易请求您的库的消费者在他的Android Manifest上添加一些元信息,而不是在他们的资产文件夹中添加属性文件.我相信这是许多已知库的主要原因使用这种方法,如google-play-service,google-maps,崩溃报告库和许多提供用户分析的库.

祝好运