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

时间:2016-03-20 18:49:18

标签: android release android-debug google-play-services

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

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

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

enter image description here

我不确定获取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说:

  

找不到包名com.myapp的Android客户端ID。   (APPINVITE_CLIENT_ID_ERROR)

PLACES AUTOCOMPLETE说:

  

获取自动填充预测API调用时出错:   状态{statusCode = PLACES_API_INVALID_APP,resolution = null}

2 个答案:

答案 0 :(得分:1)

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

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

希望能回答你的问题

答案 1 :(得分:0)

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

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