Android Google 服务:API 密钥和用于发布和调试的 SHA-1 指纹

Android Google Services: API key and SHA-1 fingerprint for release and debug

我能够在 android 个工作室中成功构建一个 release-apk。

我的应用程序使用来自 Google 的一些服务,例如 Google App Invites 和 Google Places for Android。

要获得这些服务,我必须在 google 开发人员控制台上注册一个 API 密钥,如下所示:

我不确定获取 API 密钥的包名称和 SHA-1 指纹部分。

如果我的应用程序既有调试版又有发布版(假设包名是 com.myapp),我是否将 com.myapp 作为包名输入两次但设置分别为每个包名发布和调试 SHA-1?

所以:

com.myapp (SHA-1 fingerprint) S1:2D:3F etc
com.myapp (SHA-1 fingerprint) D2:1W:2V etc

我尝试这样做,但到目前为止,该应用程序的发布版本似乎根本不想工作。

APP_INVITE 说:

No Android client ID is found for package name com.myapp. (APPINVITE_CLIENT_ID_ERROR)

地方自动完成说:

Error getting autocomplete prediction API call: Status{statusCode=PLACES_API_INVALID_APP, resolution=null}

好的 - 经过一些调查,是的,你把你的包名放了两次,然后你分别放了发布版和调试版的 SHA-1 指纹。这将使 PLACES 发挥作用。

此外,根据我的调查,我注意到 APP_INVITE 错误指向未找到该包的客户端 ID。请注意,这是指您的 OAuth 2.0 客户端 ID,可以在 Google 开发者控制台的 API 键下找到。更改该 SHA-1 密钥(在这种情况下,没有选项可以放入开发 SHA-1 和 debud SHA-1)将导致 APP_INVITE 工作。

有点令人困惑,我认为摆脱这种情况的最佳解决方案是添加一个 applicationIdSuffix 这样您(和任何其他服务)就可以区分构建: com.myapp.beta for构建和 ​​com.myapp 发布。

我建议你看看这个详细的教程:http://medyo.github.io/2015/different-android-app-resources-gradle-build-type/

希望这能回答您的问题