Google服务3.0.0版缺lessapi_key /当前键

由于我升级了最新版本的谷歌服务和库(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(root):

 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中的播放服务库

你有什么想法的解决scheme?

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

在客户端部分新configuration文件"api_key": [ { "current_key": XXX } ]

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

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

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

是的,对于第一次使用Firebase,我面对这样的。点击你的应用程序菜单,然后单击“pipe理”。

在这里输入图像说明

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

在这里输入图像说明

对于有此问题的所有人,目前为止,您需要在https://developers.google.com/cloud-messaging/android/client#get-config添加任何服务到您的应用;

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

我认为这是一个错误,很快就会修复,直到那个时候。

虽然Jozka Jozin接受的答案和评论,云消息既不相关也不要求。

不过,重新生成google-services.json是解决的关键(所以我投了他)。 以下是我所做的:

如您所知,您可以从Google Developers Guide中为Google Analytics生成configuration文件。

1:select你的应用程序。

1)选择一个应用程序

2:closurespopup窗口! 它隐藏了…

关闭弹出窗口!

3: ADMOB的select!

admob隐藏的选项

4:当然,select并启用它!

启用它!

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

生成配置文件

6:我们做到了! 这一次,configuration文件应该适当地包含api_key

我们做到了!

结论:交互式生成工具的用户界面有点混乱…

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

下载步骤:

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

2)。 点击pipe理。

3)。 你会发现Download the latest config文件选项,下载并replace应用程序中的google-services.json文件。

如果您不使用Firebase,则可以在此处find正确的链接来生成google-services.jsonconfiguration文件。

首先在你的JSON文件中

更换

 "api_key": [] 

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

然后,gradle build会成功,但是当你运行你的应用程序时,你可能会得到像下面这样的错误。

 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' } 

编辑:它后来显示我一些错误,同时build立apk文件。 所以我不得不再次下载json文件。 2次试用后,我得到了一个有效的API密钥的JSON文件。

通过https://developers.google.com/cloud-messaging/android/client#get-config重新生成google-services.json,; 重要的一点是您必须在“Choose services”步骤中启用Cloud Messaging ,打开新的Google -services.json文件,你会看到像

  "api_key": [ { "current_key": "xxxxxxxxxxx" }" 

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

在这里输入图像说明

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

在这里输入图像说明

去下载最新的configuration,并点击google-service.jsonbutton下载文件,并将其保存到应用程序文件夹,再次编译。 请享用!

使用Firebase

 GoogleServices'. > Missing api_key/current_key object 

在将现有项目更新到新的Firebase服务后,我收到了此错误。 从api_key 项目设置页面下载的生成的google-service.json文件不包含所需的api_key

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

所以我在再次下载文件之前在firebase FCM上添加了一个依赖关系,这一次包含了密钥。

包括FCM(GCM)

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

我用这些在这里没有回答的步骤解决了这个问题。 这个答案是不启用云消息传递,它只是检索其服务器密钥。

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

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

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

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

你将得到你的数据库的configuration将包含apiKey 。 只需复制该值并将其放置在下面的XXX所表示的current_key值中即可

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

对于Firebase迁移者:

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