Android Google Maps v2 - 调试密钥与发布密钥

时间:2013-05-05 13:51:42

标签: android google-maps

我很清楚如何获得用于Google Maps v2库的调试密钥,以及如何获取发布密钥。目前,我的清单文件的相关部分如下所示:

<!-- Debug -->
<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="[my debug key here]"/>

<!-- Release        
<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="[my release key here]"/>
-->

相关密钥未注释,另一个已注释。

任何人都可以指出一种舒适的方法来避免在每次需要调试而不是发布版本时对这些清单文件进行注释/取消注释的烦恼吗?

3 个答案:

答案 0 :(得分:36)

使用版本2 API,您可以使用相同的密钥进行发布和调试。在你的谷歌api的控制台编辑你允许的Android应用程序,并在每一行放置你的调试/释放密钥,然后你的应用程序名称。您可以使用多行,然后它将适用于两个键。

答案 1 :(得分:5)

可以在 build.gradle 中定义用于调试构建和发布版本的不同Google Map API密钥:

...
android {
    ...
    buildTypes {
       debug {
           resValue "string", "google_maps_api_key", "<debug_key>"
           ...
       }
       release {
           resValue "string", "google_maps_api_key", "<release_key>"
           ...
       }
    }
}

只需用实际密钥替换<debug_key><release_key>

请参阅 AndroidManifest.xml

中的此资源值
<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="@string/google_maps_api_key"/>

此解决方案也在以下Stack Overflow问题中进行了描述:

Manage Google Maps API Key with Gradle in Android Studio

答案 2 :(得分:1)

或者,您可以将调试密钥放在var myString = "abcde werrty qweert"; var newStr = WildCardMatch("a*e", myString); //newStr = "abcde werrty qwee" newStr = WildCardMatch("a*e", myString, Greedy: true); //newStr = "abcde" 中,其内容与此类似:

app/src/debug/res/values/google_maps_api.xml

以同样的方式,将发布密钥放在<string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">AIzaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx</string>

以这种方式,您拥有密钥和相同的源代码。对于要发布源代码而不是API密钥的开源项目,这非常方便。你只需要忽略/不上传google_maps_api.xml,你就可以了。