16

我很清楚如何获得与 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]"/>
-->

相关键未注释,另一个已注释。

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

4

3 回答 3

37

使用版本 2 API,您可以使用相同的密钥进行发布和调试。在您的 google api 控制台中编辑您允许的 android 应用程序,并在每一行输入您的调试/发布密钥,然后是您的应用程序名称。您可以使用多行,然后它将与两个键一起使用。

于 2013-05-05T14:20:30.860 回答
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 问题也描述了此解决方案:

在 Android Studio 中使用 Gradle 管理 Google Maps API 密钥

于 2016-04-13T07:48:33.150 回答
3

或者,您可以将调试密钥放入app/src/debug/res/values/google_maps_api.xml类似于以下内容的位置:

<string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">AIzaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx</string>

以同样的方式,将释放键放入app/src/release/res/values/google_maps_api.xml.

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

于 2018-06-05T20:14:06.617 回答