管理Google Maps API密钥

use*_*849 4 android google-maps api-key

我的应用程序使用了大量的MapView屏幕,我正在试图弄清楚如何在调试环境和生产之间管理API密钥.显然,没有办法在Eclipse中更改调试应用程序密钥,因此我必须在该环境中使用调试映射API密钥.相反,如果没有生产应用程序密钥,就无法导出用于beta测试的软件包,因此我必须在每个视图中更改map API密钥以创建工作包.

我的第一个想法是这样做:

所有MapView.xml文件都有:

android:apiKey="@string/googleMapsAPIKey"
Run Code Online (Sandbox Code Playgroud)

然后在strings.xml中我把它:

<string name="googleMapsPIKey">@string/debugGoogleMapsAPIKey</string>
<string name="debugGoogleMapsAPIKey">TheMagicKeyString</string>
Run Code Online (Sandbox Code Playgroud)

如果这样做,它将允许我在strings.xml中更改单行,并且所有MapView将在重建中更新.但它没有用.我猜strings.xml不能自己引用.还有其他想法吗?

谢谢

小智 8

我建议采用一种更简单的方法,即利用一个不太可能但更具体的资产文件夹来存放调试密钥.要进行此设置,请使用以下内容创建文件res/values/maps-apikey.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="maps_apikey">[productionApiKey]</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

然后,每个开发人员将在res/values-v1/maps-apikey.xml中添加从此文件派生的文件,其中提供了调试API密钥.在运行时,Android系统将有利于更具体的版本RES /值-V1 /图-apikey.xml为Android的所有版本(因为都是至少在API级别1或更高).

像Git和SVN源代码控制系统允许您添加其指导的工具,忽略此RES /值-V1 /图-apikey.xml文件,使每个开发人员不小心它提交到库的"忽略"文件.要为git执行此操作,只需添加一个文件res/.gitignore,其中只包含行值-v1,然后提交此文件.

要发布软件,只需在导出发行版之前删除res/values-v1/maps-apikey.xml文件.然后,生成的APK将引用res/values/maps-apikey.xml中的版本,这是您正确的生产密钥.

  • 只想注释,' - '不是`res/values/maps-apikey.xml`中的有效资源名称字符.Excelenet解决方案! (2认同)

Sep*_*phy 3

你做的是正确的事,但不是我认为的正确方式。在 strings.xml 中声明您的字符串,如下所示:

<string name="googleMapsAPIKey">TheMagicKeyString</string>
<!-- You can add this at the end as comment to keep a copy of another key for instance, to exchange it between debug and production-->
Run Code Online (Sandbox Code Playgroud)

请注意,您没有在两个字符串中给出相同的名称...一个称为“调试”,另一个称为“调试”。