Api_key / chave atual ausente no Google Services 3.0.0

157

Desde que atualizei o projeto com a versão mais recente dos serviços e bibliotecas do Google (9.0.0), tenho esse problema estranho:

Erro ao criar

Console da classe:

: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 (raiz):

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'

No entanto, ele funciona bem com as bibliotecas do serviço play no 8.4.0 e no google-services 2.1.0

Você tem alguma ideia da solução?

palmsnipe
fonte
Estou usando mapas e tenho api_key definido no arquivo AndroidManifest.xml. Você tem api_key lá? Algo assim <android de meta-dados: name = "com.google.android.geo.API_KEY" android: value = "AIzaSdfdfdfdfdfdfdfdfdfRRVxThQsNaqY" />
Grzegorz Bielański
Sim eu tenho. O manifesto está bem configurado, sempre funcionou .. até agora.
Palmsnipe 19/05/19

Respostas:

162

Gere um novo arquivo de configuração (google-services.json) em: https://developers.google.com/cloud-messaging/android/client#get-config

Recém arquivo de configuração com "api_key": [ { "current_key": XXX } ]na seção cliente

Atualização: ou serviço ativado manualmente no console do desenvolvedor e gere a chave.

Jozka Jozin
fonte
1
Recentemente está no arquivo conf "api_key": [{"current_key": XXX}]
Jozka Jozin
1
Qual chave de API deve ir para lá?
Marco Zanetti
8
Você deve ativar o Cloud Messaging mesmo se não o usar e gerar um novo arquivo json. Ao ativar o Cloud Messaging, você obtém a chave da API necessária.
Rafael Gutiérrez
2
Eu obtive a chave da API no arquivo JSON ativando a API do Cloud Messaging "api_key": [{"current_key": "the_api_key"}], mas ainda não funciona. Eu realmente não sei o que há de errado com isso. : - /
Marco Zanetti
7
Quem sabe para que serve esta api_key? Funcionou muito bem sem ele antes ...
Pavel Biryukov
89

A adição do valor da chave atual vazia no arquivo google-services.json resolveu esse problema para mim

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

Ajax - o Max
fonte
1
Só pensei que eu gostaria de acrescentar que o valor "api_key" está dentro do valor "cliente"
Janeiro
2
@ Ajax-the Max: Isso funcionou para mim também. Você poderia explicar por que isso funciona?
Pineda
1
essa parece ser a melhor solução se você usar mensagens antigas na nuvem GMS. O novo arquivo de configuração exclui a chave GMS, em vez de adicionar o Firebase.
GordonW
34

Sim, como pela primeira vez usando o Firebase, eu me deparo com isso. Clique no menu do aplicativo e clique em "Gerenciar".

insira a descrição da imagem aqui

você pode baixar o google-services.json novamente.

insira a descrição da imagem aqui

Htoo Aung Hlaing
fonte
2
sim eu baixei-lo novamente e foi maior arquivo na próxima vez e essa correção do problema para mim
Hatem Badawi
1
Posso confirmar: me inscrevi no Firebase Analytics e ele baixou automaticamente um google-services.json que não contém chave de API. Então eu baixei manualmente assim e a chave da API estava no json.
precisa saber é o seguinte
Qual é o URL para acessar este painel?
21717 Sean Beach
9

Para todos os que têm esse problema, por enquanto, você precisará adicionar qualquer serviço ao seu aplicativo em https://developers.google.com/cloud-messaging/android/client#get-config

No meu caso, adicionei admob (já possui analytics e gcm) e, em seguida, o arquivo foi gerado com api_key.

Eu acho que é um bug e será corrigido em breve, até isso, faça-o.

Elvis Oliveira
fonte
na verdade, há um bug ... eu tinha para adicionar convida app também para obter novos JSON
Jivraj S Shekhawat
oi, eu adicionei a nova configuração, mas o IDE ainda está reclamando que está faltando api_key
código
Antes de abrir o IDE, você pode verificar o arquivo de configuração para verificar se há s 'api_key' value. Clearly therealgum erro, portanto, precisamos tentar abordagens diferentes para resolver o problema.
Elvis Oliveira
isso significa que, sempre que adiciono uma nova dependência no meu arquivo gradle, tenho que baixar um novo google-services.json, pois ele gera uma nova api_key?
Ashok Bijoy Debnath
8

Embora a resposta aceita por Jozka Jozin e seus comentários, o Cloud Messaging não seja relacionado nem necessário.

No entanto, re-gerar google-services.jsoné a chave para a solução (então eu votei nele). Abaixo está o que eu fiz:

Como você sabe, pode gerar o arquivo de configuração para o Analytics no Guia do desenvolvedor do Google .

1: Escolha seu aplicativo.

1) escolha um aplicativo

2: Feche o pop-up! Esconde ...

Feche o pop-up!

3: A OPÇÃO DA ADMOB!

a opção oculta do admob

4: Claro, selecione e ative-o!

habilitá-lo!

5: Agora podemos gerar corretamente arquivos de configuração!

gerar arquivos de configuração

6: Nós conseguimos! Desta vez, o arquivo de configuração deve incluir a api_key adequadamente.

conseguimos!

Conclusão: A interface do usuário da ferramenta de geração interativa é um pouco confusa ...

hata
fonte
1
obrigado, consegui obter a nova configuração, mas o IDE ainda está reclamando que está faltando api_key
código
UMA pouco confuso ... É horrível !!! Parabéns pela sua explicação clara.
Niels
7

Você pode baixar o google-services.jsonarquivo novamente.

Etapas para baixar:

1) Clique no menu superior do seu aplicativo no Firebaseconsole.

2) Clique em gerenciar.

3) Você encontrará a Download the latest configopção de arquivo, faça o download e substitua o google-services.jsonarquivo no seu aplicativo.

Anubhav
fonte
4

Primeiro no seu arquivo JSON

Substituir

"api_key": []

com

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

Em seguida, a compilação gradle será bem-sucedida, mas quando você executar o aplicativo, poderá ocorrer erros como os seguintes.

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

Para corrigir esse problema, você pode adicionar o seguinte ao seu arquivo app.gradle .. Funcionou para mim.

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

Edit: Ele me mostrou algum erro mais tarde ao criar o arquivo apk. Então eu tive que baixar o arquivo json novamente. Após 2 tentativas, obtive o arquivo json com uma chave api válida.

Doge
fonte
3

Se você não estiver usando o Firebase, o link correto para gerar o arquivo de configuração google-services.json será encontrado aqui .

Phileo99
fonte
2

regenerar o google-services.json em https://developers.google.com/cloud-messaging/android/client#get-config , uma coisa importante é que você deve ativar o Cloud Messaging na etapa "Escolher serviços" , abra o novo google arquivo -services.json, você verá palavras como

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

sem essas palavras ou sem o valor de current_key não é o arquivo certo

dx3906
fonte
2

Consegui resolver esse problema com essas etapas que não são respondidas aqui. Esta resposta NÃO está ativando o Cloud Messaging, está apenas recuperando sua chave de servidor.

Então, primeiro, vá para o Firebase Console, depois para Configurações do Projeto, e clique na guia "Cloud Messaging". Veja onde está escrito "chave do servidor" e, se não houver uma chave longa exibida (não o número "ID do remetente"), clique em "Regenerar chave" e uma chave longa deve aparecer agora. Copie essa chave e coloque-a no seu arquivo google-services.json em:"api_key": [ {"current_key" : "key goes here"} ] .

Esse método me ajudou enquanto nenhum dos outros estava trabalhando, por isso espero que ajude alguém.

David Velasquez
fonte
2

insira a descrição da imagem aqui

Clique em Visão geral -> Ícone de engrenagem -> Configurações do projeto.

insira a descrição da imagem aqui

Vá para Download da última configuração e clique no botão google-service.json para baixar o arquivo e salvá-lo na pasta do aplicativo e compilar novamente. Aproveitar!

Pinkesh Darji
fonte
2

Você precisa adicionar impressões digitais de certificado SHA ao seu projeto e fazer o download do arquivo google-services.jason novamente, que deve conter "api_key": [{"current_key": "xxxxxx"}] automaticamente.

Você pode visualizar a página a seguir para ver como gerar as impressões digitais:

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

No Windows, basta executar o seguinte comando e usar android como senha para fins de depuração:

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

Usando Firebase

GoogleServices'. > Missing api_key/current_key object

Eu recebi esse erro após atualizar um projeto existente para os novos Serviços Firebase. O arquivo google-service.json gerado baixado da página de configurações do projeto firebase não incluiu o api_keynecessário.

Das outras respostas aqui, parece que o Google / Firebase Cloud Messaging (GCM / FCM) precisa ser adicionado para que isso api_keyseja incluído no google-service.jsonarquivo.

Então, eu adicionei uma dependência no firebase FCM antes de baixar o arquivo novamente e, desta vez, a chave foi incluída.

Incluir FCM (GCM)

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

Se você não deseja reconfigurar e baixar o google-services.jsonarquivo, pode buscar a chave api diretamente no console do firebase. Basta ir para

Visão geral> Adicionar outro aplicativo> Web

Você obterá a configuração do seu banco de dados que conterá apiKey. Apenas copie esse valor e coloque-o no current_keyvalor indicado por XXX abaixo

"api_key": [{ "current_key": "XXX" }]
Shakti
fonte
0

Para migradores de firebase:

verifique se você adicionou pelo menos uma impressão digital nas configurações do projeto e faça o download novamente do arquivo google-services.json

Su-Au Hwang
fonte
Obrigado cara, fui conforme as instruções do laboratório de código e não adicionei a chave SHA1 no início. Mais tarde, tive que adicionar como meu ApiKey - CurrentKey estava ausente. Não tenho certeza se foi esse o caso ou não. Mas isso resolveu meu problema.
Rana Ranvijay Singh
0

Se você estiver usando firebaes, precisará copiar serverKey da firebase para o google-services.json

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

Para obter a chave do servidor, vá para Visão geral do projeto> Configurações do projeto> CloudMessaging> Copiar OU gere e copie a chave do servidor.

Tarun Voora
fonte
0

adicione isso ao seu arquivo google-service.json. você o encontrará em app / google-service.json

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

Hamza Fareed
fonte