元数据或属性文件中的Android配置?
我正在编写一个供开发人员使用的库,我有一个配置项,如元数据或属性文件中的Android配置?,android,android-manifest,Android,Android Manifest,我正在编写一个供开发人员使用的库,我有一个配置项,如apiKey,environment等。我想让开发人员设置这些值,我的第一个想法是使用我在应用程序类中加载的Java属性文件,但我看到Google Play和Google Map SDK要求开发人员在Android清单中的元数据标记中添加他们的apiKey。推荐的方法是什么 使用元数据标签似乎是安卓实现这一点的方法,尽管我找不到任何官方文档来说明原因 使用元数据,您可以使用资源而不是静态值来定义属性值,这样您就可以根据资源限定符为同一属性获取不
apiKey
,environment
等。我想让开发人员设置这些值,我的第一个想法是使用我在应用程序类中加载的Java属性文件,但我看到Google Play和Google Map SDK要求开发人员在Android清单中的元数据标记中添加他们的apiKey。推荐的方法是什么 使用元数据标签似乎是安卓实现这一点的方法,尽管我找不到任何官方文档来说明原因
使用元数据,您可以使用资源而不是静态值来定义属性值,这样您就可以根据资源限定符为同一属性获取不同的值。如果您的属性需要内部化,这非常有用
例:
推荐的android方式,让用户为您的库定义值 从应用程序模块到元标记 这就像在android清单上使用此代码一样简单
<meta-data android:name="com.yourproject.apikey" android:value="apikey"/>
这种方法的主要好处是
1) 您可以让用户根据设备类型定义不同的值,例如电话、平板电脑或sdk版本
(这可能不适用于您的情况,但肯定是一个很好的观点)
2) 您可以在元标记中添加复杂数据作为值,
如果要添加一个包含所有要声明的值的字符串数组,则可以使用此函数
3) 由于元标记基本上是一个捆绑包,因此您更容易
- 读取库代码中的这些值
- 如果用户未声明所需的 元标记
<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
}