Google 服务 3.0.0 缺少 api_key/current 密钥

Posted

技术标签:

【中文标题】Google 服务 3.0.0 缺少 api_key/current 密钥【英文标题】:Missing api_key/current key with Google Services 3.0.0 【发布时间】:2016-09-15 23:36:52 【问题描述】:

由于我用最新版本的谷歌服务和库(9.0.0)升级了项目,我遇到了这个奇怪的问题:

等级控制台:

:app:processDebugGoogleServices
Parsing json file: /Users/cyrilmorales/Documents/Projects/mobilemeans-punainenristi/app/google-services.json
:app:processDebugGoogleServices FAILED
Error:Execution failed for task ':app:processDebugGoogleServices'.
> Missing api_key/current_key object
Information:BUILD FAILED

build.gradle(根):

dependencies 
    classpath 'com.android.tools.build:gradle:2.2.0-alpha1'
    classpath 'com.google.gms:google-services:3.0.0'

build.gradle(应用程序):

dependencies 
    ....
    compile 'com.google.android.gms:play-services-analytics:9.0.0'
    compile 'com.google.android.gms:play-services-gcm:9.0.0'
    compile 'com.google.android.gms:play-services-maps:9.0.0'
    compile 'com.google.android.gms:play-services-location:9.0.0'
    ...

apply plugin: 'com.google.gms.google-services'

但是,它与 8.4.0 和 google-services 2.1.0 中的播放服务库配合得很好

你知道解决办法吗?

【问题讨论】:

我正在使用地图,并且我在 AndroidManifest.xml 文件中定义了 api_key。你那里有 api_key 吗?类似的东西 是的,我有。 Manifest 配置良好,一直有效.. 直到现在。 【参考方案1】:

从https://developers.google.com/cloud-messaging/android/client#get-config 生成新的配置文件 (google-services.json)

客户端部分中带有"api_key": [ "current_key": XXX ]的新配置文件

更新:或在开发者控制台中手动启用服务并生成密钥。

【讨论】:

新在 conf 文件 "api_key": [ "current_key": XXX ] 应该使用哪个 API 密钥? 即使不使用也必须启用云消息,并生成新的 json 文件。启用云消息传递后,您将获得所需的 API 密钥。 我通过启用云消息 API "api_key": [ "current_key": "the_api_key" ] 获得了 JSON 文件中的 API 密钥,但仍然无法使用。我真的不知道它有什么问题。 :-/ 谁知道这个 api_key 是干什么用的?没有它之前它工作得很好......【参考方案2】:

在 google-services.json 文件中添加空的当前键值为我解决了这个问题

"api_key": [ "current_key": "" ]

【讨论】:

只是想补充一下“api_key”值在“client”值内 @Ajax -the Max:这对我也有用。你能解释一下为什么会这样吗? 如果使用旧的 GMS 云消息传递,这似乎是最佳解决方案。新配置文件不包括 GMS 密钥,而是添加 Firebase。【参考方案3】:

是的,对于第一次使用 Firebase,我遇到了这样的情况。点击您的应用菜单,然后点击“管理”。

您可以再次下载 google-services.json。

【讨论】:

是的,我再次下载了它,下次文件更大了,这为我解决了问题 我可以确认:我注册了 Firebase Analytics,它自动下载了一个不包含 API 密钥的 google-services.json。然后我像这样手动下载它,API密钥在json中。 访问此仪表板的 URL 是什么?【参考方案4】:

对于遇到此问题的所有人,现在,您需要通过https://developers.google.com/cloud-messaging/android/client#get-config 向您的应用添加任何服务

在我的情况下,我添加了 admob(已经有分析和 gcm),然后使用 api_key 生成文件。

我认为这是一个错误,很快就会修复,在此之前,去做吧。

【讨论】:

确实有一个错误...我也必须添加应用邀请才能获得新的 json 嗨,我添加了新配置,但 IDE 仍然抱怨缺少 api_key 在你打开IDE之前你可以检查一下配置文件,确定s 'api_key' value. Clearly theres有bug,所以我们需要尝试不同的方法来解决这个问题。 这是否意味着,每次我在我的 gradle 文件中添加新的依赖项时,我都必须下载一个新的 google-services.json,因为它会生成一个新的 api_key ?【参考方案5】:

虽然 Jozka Jozin 接受的答案及其 cmets,但云消息传递既不相关也不是必需的。

尽管如此,重新生成 google-services.json 是解决问题的关键(所以我投了他一票)。以下是我所做的:

如您所知,您可以从 Google Developers Guide 生成 Analytics 的配置文件。

1:选择您的应用。

2:关闭弹出窗口!它隐藏了...

3:ADMOB 的选择!

4:当然选择启用!

5:现在我们可以正确生成配置文件了!

6:我们成功了!这一次,配置文件应该适当地包含 api_key

结论:交互生成工具的UI有点混乱……

【讨论】:

谢谢,我能够获得新的配置,但 IDE 仍然抱怨它缺少 api_key 一个bit令人困惑...太可怕了!!!感谢您的清晰解释。【参考方案6】:

您可以再次下载google-services.json文件。

下载步骤:

1)。在Firebase 控制台中点击您应用的顶部菜单。

2)。点击管理。

3)。您将找到Download the latest config 文件选项,下载并替换您的应用程序中的google-services.json 文件。

【讨论】:

【参考方案7】:

首先在您的 JSON 文件中

替换

"api_key": []

"api_key": [ "current_key": "" ]

然后 gradle 构建将成功,但是当您运行应用程序时,您可能会遇到如下错误..

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/LICENSE
    File1: C:\Users\bucky\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.2.2\d20be6a5ddd6f8cfd36ebf6dea329873a1c41f1b\jackson-core-2.2.2.jar
    File2: C:\Users\bucky\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.2.2\3c8f6018eaa72d43b261181e801e6f8676c16ef6\jackson-databind-2.2.2.jar
    File3: C:\Users\bucky\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.2.2\285cb9c666f0f0f3dd8a1be04e1f457eb7b15113\jackson-annotations-2.2.2.jar

要解决此问题,您可以将以下内容添加到您的 app.gradle 文件中。它对我有用。

packagingOptions 
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/ASL2.0'
    

编辑: 稍后在构建 apk 文件时它向我显示了一些错误。所以我不得不再次下载json文件。经过 2 次试用后,我得到了带有有效 api 密钥的 json 文件。

【讨论】:

【参考方案8】:

如果你没有使用 Firebase,生成 google-services.json 配置文件的正确链接实际上是在 here 找到的。

【讨论】:

【参考方案9】:

在https://developers.google.com/cloud-messaging/android/client#get-config 处重新生成 google-services.json,重要的是您必须在“选择服务”步骤中启用云消息传递,打开您将看到的新 google-services.json 文件像

这样的词
    "api_key": [
     
       "current_key": "xxxxxxxxxxx"
     "

没有这个词或者没有current_key的值不是正确的文件

【讨论】:

【参考方案10】:

我能够通过此处未回答的这些步骤解决此问题。此答案未启用云消息传递,它仅检索其服务器密钥。

首先,转到 Firebase 控制台,然后转到项目设置,然后单击“云消息传递”选项卡。查看“服务器密钥”的位置,如果没有显示长密钥(不是“发件人 ID”编号),请单击“重新生成密钥”,现在应该显示一个长密钥。复制该密钥并将其放入您的 google-services.json 文件中:"api_key": [ "current_key" : "key goes here" ]

这种方法帮助了我,而其他人都没有工作,所以希望这对某人有所帮助。

【讨论】:

【参考方案11】:

点击概览 -> 齿轮图标 -> 项目设置。

转到下载最新配置并单击 google-service.json 按钮下载文件并将其保存到应用程序文件夹并再次编译。享受吧!

【讨论】:

【参考方案12】:

您需要将 SHA 证书指纹添加到您的项目中,然后再次下载 google-services.jason 文件,该文件应自动包含 "api_key": [ "current_key": "xxxxxx" ]。

您可以查看以下页面以了解如何生成指纹:

https://developers.google.com/android/guides/client-auth

在windows上,只需执行以下命令,并使用android作为密码进行调试:

keytool -exportcert -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore

【讨论】:

【参考方案13】:

使用 Firebase

GoogleServices'. > Missing api_key/current_key object

将现有项目更新到新的 Firebase 服务后,我收到此错误。 从firebase project settings page 下载的生成的google-service.json 文件不包含所需的api_key

从此处的其他答案看来,需要添加 Google/Firebase Cloud Messaging (GCM/FCM) 才能包含此 api_keygoogle-service.json 文件中。

所以我在再次下载文件之前添加了对firebase FCM的依赖项,这次包含了密钥。

包括 FCM (GCM)

dependencies 
     compile 'com.google.firebase:firebase-messaging:9.0.0'

【讨论】:

【参考方案14】:

如果您不想重新配置和下载 google-services.json 文件,那么您可以直接从 firebase 控制台获取 api 密钥。去吧

概览 > 添加另一个应用程序 > 网络

您将获得包含apiKey 的数据库配置。只需复制该值并将其放在下面由 XXX 表示的 current_key 值中

"api_key": [ "current_key": "XXX" ]

【讨论】:

【参考方案15】:

对于 Firebase 迁移者:

确保您在项目设置中添加了至少一个指纹并重新下载 google-services.json 文件

【讨论】:

谢谢,我按照代码实验室的说明进行了操作,一开始没有添加 SHA1 密钥。后来我不得不添加我的 ApiKey - CurrentKey 丢失了。不知道是不是这样。但它解决了我的问题。【参考方案16】:

如果您使用的是 firebaes,则必须将 serverKey 从 firebase 复制到 google-services.json

 "api_key": [ "current_key": "SERVER_KEY"

要获取服务器密钥,请转到 ProjectOverview> Project Settings > CloudMessaging > Copy OR generate and copy serverKey..

【讨论】:

【参考方案17】:

将此添加到您的 google-service.json 文件中。你会在 app/google-service.json 下找到它

“api_key”:[ “current_key”:“你的谷歌 API 密钥” ]

【讨论】:

以上是关于Google 服务 3.0.0 缺少 api_key/current 密钥的主要内容,如果未能解决你的问题,请参考以下文章

Maps SDK for Android v.3.0.0 BETA "是否可以在没有Google Play服务的设备上运行?

Google Play 定位服务 9.2.0 缺少 Google 归因 Android 资源

Google Play 服务库更新和缺少符号 @integer/google_play_services_version

OpenCV 3.0.0 JAR 中缺少 HighGUI

错误“模块根文件夹中缺少文件 google-services.json。没有它,Google 服务插件无法运行”[重复]

Google Play 服务修订版 30 缺少 version.xml