Google Services 3.0.0缺少api_key /当前密钥


157

自从我使用最新版本的google服务和库(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(app):

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吗?类似于<meta-data android:name =“ com.google.android.geo.API_KEY” android:value =“ AIzaSdfdfdfdfdfdfdfdfdfdRVxThQsNaqY” />
GrzegorzBielański,2016年

对,我有。清单配置正确,直到现在一直可以正常工作。
palmsnipe

Answers:


162

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

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

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


1
最新位于conf文件“ api_key”中:[{“ current_key”:XXX}]
Jozka Jozin '16

1
哪个API密钥应该放在那儿?
Marco Zanetti

8
即使不使用它,也必须启用Cloud Messaging并生成一个新的json文件。启用云消息传递后,您将获得API密钥。
拉斐尔·古铁雷斯

2
通过启用Cloud Messaging API“ api_key”:[{“ current_key”:“ the_api_key”}],我在JSON文件中获得了API密钥,但仍然无法正常工作。我真的不知道这是怎么回事。:-/
Marco Zanetti

7
谁知道这个api_key是干什么用的?没有它,它就可以很好地工作……
Pavel Biryukov,

89

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

"api_key": [{ "current_key": "" }]


1
只是想我要补充的是,“API_KEY”值“客户端”里面的值

2
@Ajax -The Max:这也对我有用。您能不能解释一下它为什么起作用?
Pineda

1
如果利用旧的GMS云消息传递,这似乎是最好的解决方案。新的配置文件不包含GMS密钥,而是添加Firebase。
GordonW

34

是的,我第一次面对Firebase时就是这样。单击您的应用程序菜单,然后单击“管理”。

在此处输入图片说明

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

在此处输入图片说明


2
是的,我再次下载了它,下一次它是更大的文件,这对我来说解决了这个问题
Hatem Badawi

1
我可以确认:我注册了Firebase Analytics,它自动下载了一个不包含API密钥的google-services.json。然后我像这样手动下载它,并且API密钥在json中。
chichilatte

要访问此仪表板的URL是什么?
肖恩海滩

9

对于目前遇到此问题的每个人,您现在都需要在https://developers.google.com/cloud-messaging/android/client#get-config上向您的应用添加任何服务

就我而言,我添加了admob(已经具有分析功能和gcm),然后使用api_key生成了文件。

我认为这是一个错误,将很快得到修复,直到做到这一点。


确实存在一个错误...我也必须添加应用程序邀请才能获取新的json
Jivraj S Shekhawat

嗨,我添加了新的配置,但IDE仍在抱怨它缺少api_key
代码

在打开IDE之前,您可以检查配置文件以确保存在s 'api_key' value. Clearly there错误,因此我们需要尝试其他方法来解决问题。
猫王奥利维拉

这是否意味着,每次我在gradle文件中添加新的依赖项时,我都必须下载新的google-services.json,因为它会生成新的api_key?
Ashok Bijoy Debnath

8

尽管Jozka Jozin接受了答案及其评论,但Cloud Messaging既不相关,也不是必需的。

不过,重新生成google-services.json是解决方案的关键(因此我投票给他)。以下是我的工作:

如您所知,您可以从Google开发者指南中为Analytics生成配置文件。

1:选择您的应用。

1)选择一个应用

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

关闭弹出窗口!

3:选择ADMOB!

admob的隐藏选项

4:当然,选择并启用它!

启用它!

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

生成配置文件

6:我们做到了!这次,配置文件应适当包含api_key

我们做到了!

结论:交互式生成工具的UI有点令人困惑。


1
谢谢,我能够获得新的配置,但是IDE仍在抱怨它缺少api_key
代码

一个有点别扭......这是可怕的!感谢您的明确解释。
尼尔斯

7

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

下载步骤:

1)。单击Firebase控制台中应用程序的顶部菜单。

2)。点击管理。

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


4

首先在您的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文件。


3

如果您没有使用Firebase,则实际上可以在此处找到生成google-services.json配置文件的正确链接。



2

我能够通过以下未解决的步骤解决此问题。此答案未启用Cloud Messaging,仅在检索其服务器密钥。

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

当没有其他人在工作时,这种方法对我有所帮助,因此希望可以对某人有所帮助。


2

在此处输入图片说明

单击概述->齿轮图标->项目设置。

在此处输入图片说明

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


2

您需要将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

1

使用Firebase

GoogleServices'. > Missing api_key/current_key object

将现有项目更新为新的Firebase Services之后,出现此错误。从firebase项目设置页面下载的生成的google-service.json文件不包含所需文件。api_key

从这里的其他答案看来,似乎需要添加Google / Firebase云消息传递(GCM / FCM)才能将api_key其包含在google-service.json文件中。

因此,在再次下载文件之前,我在firebase FCM上添加了依赖项,这次包含了密钥。

包括FCM(GCM)

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

1

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

概述>添加另一个应用程序>网站

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

"api_key": [{ "current_key": "XXX" }]

0

对于Firebase迁移者:

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


谢谢,我按照代码实验室的说明去了,一开始并没有添加SHA1密钥。后来我不得不添加为我的ApiKey-CurrentKey丢失了。不知道是不是这种情况。但这解决了我的问题。
Rana Ranvijay Singh,

0

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

 "api_key": [{ "current_key": "SERVER_KEY"}

要获取服务器密钥,请转到ProjectOverview>项目设置> CloudMessaging>复制或生成并复制serverKey。


0

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

“ api_key”:[{“ current_key”:“ your-google-api-key”}]

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.