我正在编写一个由开发人员使用的库,我有一个配置项,如apiKey,环境和其他.我想让开发人员设置这些值,我的第一个想法是使用我在应用程序类中加载的
Java属性文件,但是我看到Google Play和Google Map SDK要求开发人员在
Android中的元数据标签中添加他们的apiKey表现.推荐的方法是什么?
解决方法
推荐的android方式让用户为您的库定义值
从应用模块是通过元标签
从应用模块是通过元标签
就像在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 Manifest上,请求消费者更容易的添加一些元信息,而不是在他们的资产文件夹中添加一个属性文件.我认为这是主要原因许多已知的库使用这种方法,如google-play-service,google-maps,崩溃报告库和许多提供用户分析的库.
祝你好运