我的应用程序使用大量 MapView 屏幕,我正在尝试找出如何管理调试环境和生产环境之间的 API 密钥。显然,无法更改 Eclipse 中的调试应用程序密钥,因此我必须在该环境中使用调试映射 API 密钥。相反,如果没有生产应用程序密钥,则无法导出包进行 beta 测试,因此我必须在每个视图中更改地图 API 密钥才能创建工作包。
我的第一个想法是这样做:
所有 MapView.xml 文件都有:
android:apiKey="@string/googleMapsAPIKey"
然后在 strings.xml 中我添加了以下内容:
<string name="googleMapsPIKey">@string/debugGoogleMapsAPIKey</string>
<string name="debugGoogleMapsAPIKey">TheMagicKeyString</string>
如果这有效,它将允许我更改 strings.xml 中的一行,并且所有 MapViews 将在重建中更新。但这没有用。我猜想 strings.xml 无法对其自身进行引用。还有其他想法吗?
Thanks
我建议采用一种更简单的方法,即利用一个不太可能但更具体的资产文件夹来存放调试密钥。要进行设置,请创建一个包含以下内容的文件 res/values/maps-apikey.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="maps_apikey">[productionApiKey]</string>
</resources>
然后,本地的每个开发人员都会在 res/values-v1/maps-apikey.xml 中添加一个从此文件派生的文件,其中提供了他们的调试 API 密钥。在运行时,Android 系统将支持所有 Android 版本的更具体的版本 res/values-v1/maps-apikey.xml (因为所有版本至少都处于 API 级别 1 或更高级别)。
git 和 svn 等源代码控制系统允许您添加一个“忽略”文件,该文件指示工具忽略此 res/values-v1/maps-apikey.xml 文件,以便每个开发人员不会意外地将其提交到存储库。要对 git 执行此操作,只需添加一个文件 res/.gitignore,其中仅包含行values-v1,然后提交该文件。
要发布您的软件,只需在导出版本之前删除 res/values-v1/maps-apikey.xml 文件即可。然后,生成的 APK 将引用 res/values/maps-apikey.xml 中的版本,这是您正确的生产密钥。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)