在 GoogleServices3.0.0中缺少 api_key/current key

自从我用最新版本的谷歌服务和图书馆(9.0.0)升级了这个项目,我遇到了一个奇怪的问题:

Error build

等级控制台:

: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

Gradle (root) :

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

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

你有什么解决办法吗?

58943 次浏览

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

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

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

对于每一个有这个问题的人,现在,你需要添加任何服务到你的应用程序在 https://developers.google.com/cloud-messaging/android/client#get-config

在我的示例中,我添加了 admob (已经有了 analytics 和 gcm) ,然后使用 api _ key 生成文件。

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

虽然 Jozka Jozin 的回答和评论被接受,但是云消息既不相关也不是必需的。

然而,重新生成 google-services.json是解决问题的关键(所以我投了他一票):

正如您所知道的,您可以从 谷歌开发者指南为 Analytics 生成配置文件。

第一: 选择你的应用程序。

1) choose an app

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

Close the popup!

第3集: ADMOB 的选择!

the hidden option of admob

当然,选择并启用它!

enable it!

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

generate configuration files

6: 我们做到了! 这一次,配置文件应该包含适当的 Api _ key

we made it!

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

使用 Firebase

GoogleServices'. > Missing api_key/current_key object

我得到这个错误后,更新一个现有的项目到新的 Firebase 服务。 从 Firebase 项目设置页面下载的生成的 Google-service. json文件不包括所需的 api_key

从这里的其他答案来看,它看起来像 Google//Firebase.Google.com/docs/Cloud-message/”rel = “ nofollow”> Firebase Cloud 需要添加消息 (GCM/FCM)以包含此 api_keygoogle-service.json文件中。

因此,在再次下载文件之前,我添加了一个对 Firebase FCM 的依赖项,这次包含了密钥。

包括流式细胞术(GCM)

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

是的,因为第一次使用 Firebase,我的脸就是这样的。点击你的应用程序菜单,然后点击“管理”。

enter image description here

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

enter image description here

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

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

https://developers.google.com/cloud-messaging/android/client#get-config一件重要的事情是,您必须在“选择服务”步骤中启用云消息重新生成 google-services. json,打开新的 google-services. json 文件,你会看到这样的单词

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

没有这个单词或没有 current _ key 的值都不是正确的文件

对于火源迁徙者:

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

如果您不使用 Firebase,那么可以在 给你中找到生成 google-services. json 配置文件的正确链接。

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

所以首先,转到 Firebase Console,然后转到 Project Settings,然后单击选项卡“ Cloud Messaging”。看看它在哪里说“服务器密钥”,如果没有长键显示(不是“发件人 ID”号码)点击“再生密钥”,一个长键现在应该显示。复制这个密钥并将其放在你的谷歌服务中。Json 文件: "api_key": [ {"current_key" : "key goes here"} ]

这个方法帮助了我,而其他的方法都不起作用,所以希望这个方法能帮到某些人。

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

下载步骤:

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

2)。点击管理。

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

enter image description here

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

enter image description here

转到下载最新的配置和点击谷歌服务。Json 按钮下载文件,并保存到应用程序文件夹,再次编译。好好享受吧!

首先在您的 JSON 文件中

替换

"api_key": []

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

然后,渐变构建将会成功,但是当您运行您的应用程序时,您可能会得到如下错误。

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 文件。

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

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

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

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

您需要添加 SHA 证书指纹到您的项目,然后下载谷歌服务。Jason 文件,它应该自动包含“ api _ key”: [{“ current _ key”: “ xxxxx”}]。

你可浏览以下网页,了解如何产生指纹:

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

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

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

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

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

要获取服务器密钥,Goto ProjectOverview > Project Settings > CloudMessaging > CopyOR 生成和拷贝 serverKey。

把它添加到你的 google-service. json 文件中,你会在 app/google-service. json 下面找到它

“ api _ key”: [ { “ current _ key”: “ your-google-api-key” }]