【问题标题】:Android Google Maps v2 - Debug key vs Release keyAndroid Google Maps v2 - 调试键与发布键
【发布时间】:2013-05-05 13:51:42
【问题描述】:

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

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

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

【问题讨论】:

  • 新的基于 Gradle 的构建系统应该在这方面有所帮助。您应该能够定义调试与生产字符串资源,并将您的 API 密钥保存在其中之一中。
  • 拜托,你能给我提供实现谷歌地图在发布模式下工作的步骤吗?我已经尝试了很多东西,但我无法弄清楚如何解决这个问题。
  • Michal给出了答案:可以为同一个key指定多个指纹+包名。 Google 文档对我来说似乎非常准确:developers.google.com/maps/documentation/android-api/signup

标签: android google-maps


【解决方案1】:

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

【讨论】:

  • 太棒了!事实上,我没有注意到 APi 控制台中的这个小指示:每行一个 SHA1 证书指纹和包名称(用分号分隔)。谢谢迈克尔。
  • 仍然建议每个版本类型使用不同的 API 密钥,不是吗?我认为这是为了安全,而不是为了方便。
  • 如果是这样,安全风险是什么?我试图想出一些场景,但只能想到 api 密钥是否被调试 apk 滥用,从而影响生产应用程序......但看不到会发生什么。
【解决方案2】:

可以在 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>"
           ...
       }
    }
}

只需将&lt;debug_key&gt;&lt;release_key&gt; 替换为您的实际密钥即可。

并在AndroidManifest.xml中引用这个资源值:

<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="@string/google_maps_api_key"/>

以下堆栈溢出问题也描述了此解决方案:

Manage Google Maps API Key with Gradle in Android Studio

【讨论】:

  • 如果您有多种语言的本地化,清单值不能保存在字符串资源中。 Studio 不允许生成发布版本。
【解决方案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 文件即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-13
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多