Nenhum cliente correspondente encontrado para o nome do pacote (Google Analytics) - vários produtosFlavors & buildTypes [fechado]

383

Contexto:

Estou tentando configurar o Google Analytics para o meu aplicativo. (com 4 personalizados buildTypese mais do que alguns productFlavors)

Funciona bem quando seleciono o Build Variantque está applicationIddefinido como com.my.app.package.name(o nome do pacote usado ao gerar o google-services.json). Mas, meus outros sabores têm diferentes applicationIds.

Eu segui o guia oficial para configurá-lo.

O erro que recebo quando qualquer outra variante de compilação é selecionada Build Variants Tab(com um diferente applicationId(nome do pacote) é o seguinte:

Erro: falha na execução da tarefa ': app: processAllcategoriesDebugfreeGoogleServices'.

Nenhum cliente correspondente encontrado para o nome do pacote 'com.my.app.package.name.debug'

Explicação da mensagem de erro:

No nome da tarefa na mensagem de erro acima, Debugfreeé meu costume buildTypee Allcategoriesé um dos meus productFlavors.

Entendo o erro e sei que o nome do pacote é diferente do que usei ao gerar o json, mas é isso que estou tentando descobrir.

Problema:

Agora, ele google-services.jsonreside na apppasta e, portanto, não estou conseguindo separá-los para cada sabor do produto, soltando-os na pasta do conjunto de origem específico do sabor.

Questões:

  1. Meu costume byildTypepara depurar sufixos .debugpara o applicationId(nome do pacote). Existe uma maneira de fazê-lo funcionar com o google-services.jsonque tem meu lançamento applicationId(ou seja, sem o sufixo .debug)
  2. Existe uma maneira de ter vários tipos de produto configurados no mesmo google-services.jsonarquivo sem usar arquivos e tarefas separados para copiar o arquivo necessário para a apppasta. Eu sei que isso pode ser feito usando taskcomo mencionado neste post . Existe uma maneira mais simples de ter apenas um arquivo ou escolher o arquivo certo com base na configuração do gradle?
  3. Eu vejo o package_namecampo em google-services.jsontem o nome do pacote com.my.app.package.name. Posso adicionar vários nomes de pacotes manualmente para trabalhar com todas as variantes de compilação? Se sim, como fazer isso? Não foi possível encontrar nenhuma instrução nas documentações.
AndroidMechanic - Viral Patel
fonte
11
Você encontrou uma alma especialmente para sua terceira pergunta?
Companheiro
Estou em situações semelhantes. Preciso de suporte de análise apenas para uma versão de sabor de lançamento de produto. Consegui limitar a dependência adicionada ao prod-flavor, mas ele ainda procura o pacote certo como parte do arquivo filho. Alguma sugestão !
CoDe
11
Também estou enfrentando o mesmo problema, deixe-me saber se alguém encontrar a solução para isso?
Deepanshu Sinha 14/07/2018

Respostas:

382

Verifique o nome do seu pacote no seu google-services.json e deve ser o mesmo do seu pacote local do seu aplicativo

Exemplo

"client_info": {
    "mobilesdk_app_id": "1:6596814400689:android:65d6f25f5006145",
    "android_client_info": {
      "package_name": "com.my.app.package.name"
    }

Nesse caso, o nome do meu pacote local é com.my.app.package.name, então também mudei o nome do meu pacote no google-services.json com o meu nome do pacote local

Muhammed Fasil
fonte
google-services.json é um arquivo !!! dentro de um diretório de aplicativos. Deve encontrar este arquivo com a ajuda do Windows Explorer (por exemplo). Deve editar este arquivo pelo editor usual.
User_MGU
para encontrar este ir para a vista do projeto no Android Studio e procurar dentro de seu pacote de aplicativo
Gastón Saillén
12
Não ... todos sabemos que o google-services.json é inválido neste problema ... O que queremos é como resolver esse problema na situação de variante de compilação !!
MJ Studio
bem-vindo Yudi karma
Muhammed Fasil
Se sua atividade estiver em um subpacote, como: com.example.aaron.myproject22.Activities .... você precisará acessar o google-services.json e alterar o package_name do client_info para com.example.aaron.myproject22. você aplicou o plug-in: 'com.google.gms.google-services' na parte inferior do build.grade (módulo de aplicativo)
WHOATEMYNOODLES
224

Encontrou isto:

O arquivo google-services.json geralmente é colocado no diretório app /, mas a partir da versão 2.0.0-alpha3 do suporte ao plug-in foi adicionado para os tipos de construção , o que tornaria válida a seguinte estrutura de diretório:

app/src/
    main/google-services.json
    dogfood/google-services.json
    mytype1/google-services.json
    ...

Fonte

Fonte 2

AndroidMechanic - Viral Patel
fonte
16
Existe alguma maneira de desativar a análise facilmente para um tipo de construção? Quero desativá-lo para depuração? Eu pensei que seria desativado se eu não adicionar o arquivo google-services, mas mesmo se eu desativá-lo, ele ainda solicitará o arquivo google-services.
Gokhan Arik
2
Qual seria a diferença de cada arquivo josn adicionado em cada sabor?
Android
2
Existe uma possibilidade de usar os serviços do google dentro de um módulo (que dois aplicativos compartilham) ... porque eu não posso nem sincronizar a gradle sem ter um arquivo de serviço do google para esse pacote ... o aplicativo de incorporação deve fornecer o json, mas não o módulo. isso é possível?
Georg
99

Nenhum cliente correspondente encontrado para o nome do pacote 'com.tf' Tenho certeza de que o "package_name" no google-services.json não corresponde ao seu "applicationId" no aplicativo gradle.

gradle app:

defaultConfig {
        applicationId "com.tf" //replace with the package_name in google-services.json =
        minSdkVersion 23
        targetSdkVersion 26
        versionCode 7
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

google-services.json

"client_info": {
        "mobilesdk_app_id": "1:23978655351:android:2b2fece6b961cc70",
        "android_client_info": {
          "package_name": "in.ac.geu.debug"
        }
      },

Solução : verifique se o package_namee applicationIddeve ser o mesmo.

Kailash Karki
fonte
4
O autor estava perguntando sobre uma solução alternativa para isso. Eles têm diferentes tipos de compilação com applicationId diferente
Dmitry Guselnikov
você deu a solução mais válida. Parabéns homem !!
Devansh sadhotra
O application idaplicativo gradle acertou em cheio
BlackPearl
69

verifique se o nome do pacote no arquivo "google-services.json" é igual ao nome do pacote dos seus aplicativos.

cahit beyaz
fonte
4
problema comum ao criar um repositório para um novo projeto.
Zapnologica
11
sim se tanto nome do pacote não são os mesmos do que não está funcionando
Priya
63

Eu encontrei a solução:

Temos que criar dois "aplicativos" no projeto firebase e, em seguida, podemos baixar o arquivo json de qualquer aplicativo (baixei do aplicativo com sabor). Ele conterá os dados para os dois aplicativos. Podemos simplesmente copiar o arquivo json para o diretório raiz do aplicativo.

Fonte: https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html

Usman
fonte
10
Esta é a melhor resposta, pois todos os sabores do produto podem ser cobertos por um arquivo json. Não há necessidade de criar outros conjuntos de fontes.
Tash Pemhiwa
2
Observe que você precisa criar os aplicativos dentro do mesmo projeto. Visão geral do projeto no canto superior esquerdo tem um ícone de configurações. Pressione-o e ele será aberto para a guia Geral, role para baixo e sob sua seção Apps há um botão Adicionar App
galaxigirl
O maior problema acontecerá quando você esquecer de alterar o seu google-service.json e empurrá-lo para prod.
Edgar Khimich
36

Você precisa colocar google-services.jsonem app/dir. E para cada tipo de construção, deve haver um diretor concordante na app/srcpasta.

Por exemplo, se você tiver lançamento e depuração:

app/google-services.json
app/src/debug/google-services.json

Em todos os arquivos google-services.json, você deve especificar correto de package_nameacordo com o tipo de construção.

Por exemplo, dentro do diretório de depuração, deve ser como {com.myapp}.debug

Bogdan Ustyak
fonte
5
Aparentemente, você pode apenas duplicar o elemento do conjunto principal na "client"matriz do (adicionar uma vírgula entre os elementos) e alterar apenas o "package_name"valor do novo elemento para incluir o .debugsufixo. Depois reconstrua. Funcionou para mim no AS 2.3.3.
31517 et_l 31/07
36

Este erro ocorre quando você tem um arquivo Json do Google Services baixado em seu projeto cujo nome do pacote não corresponde ao nome do pacote do seu projeto .

Renomou recentemente o nome do pacote do projeto?

Ele atualiza todas as classes, mas não o arquivo Gradle . Portanto, verifique se o nome do seu pacote está correto no seu Gradle e também talvez o manifesto.

devDeejay
fonte
11
obrigado u foi útil #
Sirwan Rahimi /
32

Sempre que você criar ou atualizar package nameVerifique se o nome do seu pacote é exatamente o mesmo [Maiúsculas e minúsculas são importantes]

Faça o passo abaixo.

1) Faça o check- applicationIdin no gradlearquivo no nível do aplicativo ,

2) Verifique package_nameseu google-services.jsonarquivo,

3) Verifique packageseu AndroidManifestarquivo

e para confirmação completa, faça o nome do diretório do pacote de trabalho, ou seja ("com.example.app") também é o mesmo.

Ravi Vaniya
fonte
2
Obrigado Bro funcionou para mim. No arquivo gradle no nível do aplicativo, meu pacote foi diferente. Quando eu mudei, ele funcionou para mim
fazil
wel vir @fazil
Ravi Vaniya
Você não precisa alterar o packagemanifesto (e todos os arquivos em todos os pacotes), pois applicationIdo ID do aplicativo será alterado.
CoolMind 27/02/19
22

Primeiro, adicione um sufixo ao pacote de aplicativos no Gradle:

yourFlavor {
   applicationIdSuffix "yourFlavor"
}

Isso fará com que seu pacote seja nomeado

com.domain.yourapp.yourFlavor

Em seguida, vá para o Firebase no seu projeto atual e adicione outro aplicativo Android com este nome de pacote.

Em seguida, substitua o arquivo google-services.json existente pelo novo que você gera pelo novo aplicativo.

Então você terminará com algo que possui várias seções "client_info". Então você deve terminar com algo assim:

"client_info": {
    "mobilesdk_app_id": "YOUR APP INFO",
    "android_client_info": {
      "package_name": "com.domain.yourapp"
    }
  }

"client_info": {
    "mobilesdk_app_id": "YOUR APP INFO - will be different then other app info",
    "android_client_info": {
      "package_name": "com.domain.yourapp.yourFlavor"
    }
  }
Droid Chris
fonte
Esta é a resposta certa! Você precisa dos dois aplicativos (IDs) no arquivo google-services.json.
Bojan Hrnkas 01/07/19
este é o caminho. +1, aqui vai uma velha discussão que se refere a esta questão
lasec0203
Simples e direto.
Umair
20

verifique se client_ide package_nameno google-services.json tem um valor correto de acordo com o nome do seu pacote.

Você deve adicionar o arquivo mencionado no diretório flavors com o nome do pacote correspondente no campo client_ide package_name.

Shayan Amani
fonte
20

1.Verifique o nome do pacote e o ID do aplicativo devem ser os mesmos

2.Verifique o nome do pacote google-services.json, disponível na pasta do aplicativo

John Ruban Singh
fonte
18

Renomeie ApplicationId no arquivo gradle após renomear seu pacote

Arsalan Shah
fonte
2
Me salvou. Obrigado.
VipulKumar
feliz que ajudou alguém
Arsalan Shah
11
obrigado! isso resolveu meu problema.
Riddhi
Também resolveu o meu problema!
Kanagalingam 29/04
17

Abra seu arquivo Google-services.json e procure esta seção no arquivo:

"client": [
{
  "client_info": {
    "mobilesdk_app_id": "1:857242555489:android:46d8562d82407b11",
    "android_client_info": {
      "package_name": "com.example.duke_davis.project"
    }
  }

verifique se o pacote é igual ao seu nome de pacote. O meu era diferente, então eu mudei e funcionou.

DAVIS BENNY 15MIS0426
fonte
Trabalhou :) Obrigado
Solution Spirit
11

Estou vindo de reagir nativo, mas acho que isso se aplica a esta questão também. Especificar.

Dentro do arquivo android/app/build.gradlepesquisa applicationId(dentro android, defaultConfig)

e garantir que esse valor seja o mesmo

client[0]client_info.android_client_info.package_name

como o valor dentro google-services.json.

ThomasReggi
fonte
Eu também, graças isso é mais aplicável
Jason Sebring
9

Você também precisa alterar o nome do pacote no google-services.json

SH Mehdi
fonte
8

Se o nome do seu pacote no arquivo Google-services.json estiver bom, vá para o arquivo gradle.properties. Então mude seu APPLICATION_ID = "com.yourpackage.name"

Dulal Kisku
fonte
5

Eu acho que você adicionou o arquivo json do firebase "google-services" .json ao novo arquivo. Certifique-se de criar um novo arquivo, verifique o link sobre como criar o arquivo json a partir do firebase e ele deve corresponder ao nome do seu pacote

A segunda coisa é que, se você estiver alterando o nome do pacote, use a opção "substituir no caminho" quando clicar com o botão direito do mouse nos arquivos ao selecionar o projeto na lista suspensa. Você precisa procurar o nome do pacote em todo o projeto e substituí-lo!

Espero que isto ajude !

Ashok Kumar KR
fonte
4

se nada funcionou para um de vocês, meu problema foi com um nome de pacote que não começou com um 'com'. mudou, agora funciona.

espero que ajude

eiran
fonte
trabalhou para mim, graças
Hasan Shouman
4
android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.package.name"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

verifique se applicationId do Gradle.app é o mesmo nome do pacote. meu problema era esse e eu resolvi assim

Bayar Şahintekin
fonte
3

acesse o diretório do projeto e crie pastas no caminho app / src que nomeou os sabores do seu produto (como Alpha, Beta, Store ou qualquer que seja o nome do seu sabor). copie seu arquivo google-services.json para cada pasta. não se esqueça de alterar o campo "package_name" no arquivo google-services.json de cada produto, que você subpastou.

Osman Yalın
fonte
3

Vá para o arquivo google-services.json e, na parte do cliente, verifique o nome do pacote e compare-o com o nome do pacote do aplicativo, se eles forem diferentes. Altere o nome do pacote do cliente de acordo com o nome do pacote do aplicativo, que funcionou para mim, boa sorte ..

arquivo google-services.json-> "package_name": "com.example.application.tracker"

Nome do pacote de aplicativos-> pacote "com.example.application.tracker";

Shah Rukh
fonte
2

Eu o resolvi criando dois conjuntos de fontes, um gratuito e um pago. Ambas as pastas conterão o código java e os arquivos de recursos necessários, que serão editados de acordo com os requisitos do tipo específico. Por exemplo, você deseja remover o código da AdMob no pago de classes Java e arquivos de layout.

Abhiroj Panwar
fonte
2

Resolvi o mesmo problema sincronizando novamente o arquivo google-services.json.

Ferramentas> Firebase> Conectar ao Firebase> Sincronizar

Nabin Bhandari
fonte
onde você fez isso? o que ele substitui exatamente? Screenshot?
Nasenbaer
Você pode fazer isso no Android Studio (o plug-in Firebase deve estar ativado). Atualiza o arquivo google-services.json.
Nabin Bhandari
2

Eu resolvi o mesmo problema aqui é uma solução simples: quando você cria uma conexão firebase, siga estas orientações:

  • Adicione o nome do seu aplicativo no firebase

  • Adicione o nome do seu aplicativo pakage (escreva o mesmo nome do pacote, você está usando no aplicativo)

  • quando o firebase cria o arquivo google-services.json, basta fazer o download e colar na pasta do aplicativo

  • Sincronize seu projeto Problema resolvido :)

    Obrigado

Chaudhary Nouman
fonte
2

Também recebo esse problema quando altero o nome do pacote do meu aplicativo.

No seu projeto do android studio, encontre o arquivo "google-services.json". Abra. e verifique se o nome do pacote do seu aplicativo é o mesmo que está escrito neste arquivo.

O nome do pacote do seu aplicativo e o nome do pacote gravados no arquivo "google-services.json" devem ser iguais.

mehmoodnisar125
fonte
1

Isso significa que o arquivo google-services.json não pertence ao seu aplicativo (você baixou o google-services.json para outro aplicativo?) ... então, para resolver isso, faça o seguinte:

1: Entre no Firebase e abra seu projeto. 2: Clique no ícone Configurações e selecione Configurações do projeto. 3: No cartão Your apps, selecione o nome do pacote do aplicativo para o qual você precisa de um arquivo de configuração na lista. 4: Clique em google-services.json. Após a conclusão do download, adicione o novo google-services.json à pasta raiz do projeto, substituindo o existente .. ou apenas exclua o antigo. É muito normal fazer o download do google-services.json para o seu primeiro projeto e, em seguida, supor ou esquecer que esse google-services.json específico é adaptado apenas ao seu projeto atual, porque não a nenhum outro, porque todos os projetos têm um nome de pacote exclusivo.

RileyManda
fonte
1

Verifique applicationIdSuffixno arquivo build.gradle do seu aplicativo. Veja se está concatenando algum texto para o seu applicationId. Se sim, remova-o.

Arsalan Shah
fonte
1

você pode fazer isso para resolver esse problema.

insira a descrição da imagem aqui

Android 上 的 Android
fonte
3
Isso irá mascarar o problema em vez de resolvê-lo. Veja outras respostas para uma solução.
Vadim Kotov
Por favor, use código em vez de uma captura de tela, sua resposta é boa no meu caso, porque eu só quero criar uma "maquete" de um clone de aplicativo.
user2078023
-1

Simples. Saia do Android Studio, feche-o completamente. Reabra o Android studio e, em seguida, entre novamente no Android Studio.

Em seguida, tente conectar-se ao firebase a partir do IDE do Android studio. Este procedimento funcionou para mim.

Prakash P
fonte
isso não funcionará se o google-services.json existir. devemos excluir google-services.json, se existir.
Dika 23/05
Isso funcionará assim que você alterar o nome do pacote no arquivo json e, antes de salvá-lo, feche o android studio, salve o arquivo json e reinicie o estúdio.
Anish Kumar
-1

É simples resolver isso: verifique se o nome do pacote no arquivo app / build.gradle é o mesmo nome do pacote no arquivo do manifesto do aplicativo. e verifique se o nome do pacote está correto. Isso deve resolver isso

James Idowu
fonte