【问题标题】:Missing api_key/current key with Google Services 3.0.0Google 服务 3.0.0 缺少 api_key/current 密钥
【发布时间】: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 配置良好,一直有效.. 直到现在。

标签: android android-gradle-plugin google-play-services


【解决方案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 密钥” }]

                      【讨论】:

                        猜你喜欢
                        • 2016-09-16
                        • 2019-02-11
                        • 2016-09-22
                        • 2014-11-06
                        • 1970-01-01
                        • 2018-01-26
                        • 1970-01-01
                        • 2012-11-26
                        相关资源
                        最近更新 更多