Aucun client correspondant trouvé pour le nom du package (Google Analytics) - plusieurs productFlavors & buildTypes [fermé]

383

Le contexte:

J'essaie de configurer Google Analytics pour mon application. (ayant 4 personnalisés buildTypeset plus que quelques-uns productFlavors)

Cela fonctionne très bien lorsque je sélectionne celui Build Variantqui a l' applicationIdensemble com.my.app.package.name(le nom du package utilisé lors de la génération de google-services.json). Mais, mes autres saveurs ont des ID d'application différents.

J'ai suivi le guide officiel pour l'installer.

L'erreur que j'obtiens lorsqu'une autre variante de build est sélectionnée dans Build Variants Tab(qui a un applicationId(nom de package) différent est la suivante:

Erreur: l'exécution a échoué pour la tâche ": app: processAllcategoriesDebugfreeGoogleServices".

Aucun client correspondant trouvé pour le nom de package «com.my.app.package.name.debug»

Explication du message d'erreur:

Dans le nom de la tâche dans le message d'erreur ci Debugfree- dessus est ma coutume buildTypeet Allcategoriesest l'une des miennes productFlavors.

Je comprends l'erreur et je sais que le nom du package est différent de celui que j'ai utilisé lors de la génération du json, mais c'est ce que j'essaie de comprendre.

Problème:

Maintenant, le google-services.jsonréside dans le appdossier et, par conséquent, je ne peux pas les séparer pour chaque saveur de produit en les déposant dans le dossier de jeu de sources spécifiques à la saveur.

Des questions:

  1. Ma coutume byildTypepour déboguer les suffixes .debugvers le applicationId(nom du package). Existe-t-il un moyen de le faire fonctionner avec celui google-services.jsonqui a ma version applicationId(c'est-à-dire sans le suffixe .debug)
  2. Existe-t-il un moyen de configurer plusieurs versions de produit dans le même google-services.jsonfichier sans utiliser de fichiers et de tâches distincts pour copier le fichier requis dans le appdossier. Je sais que cela peut être fait en utilisant taskcomme mentionné dans cet article . Existe-t-il un moyen plus simple de n'avoir qu'un seul fichier ou de choisir le bon fichier en fonction de la configuration de Gradle?
  3. Je vois que le package_namechamp google-services.jsoncontient le nom du package com.my.app.package.name. Puis-je ajouter plusieurs noms de packages manuellement pour fonctionner avec toutes les variantes de build? Si oui, comment faire? Impossible de trouver des instructions dans les documentations.
AndroidMechanic - Viral Patel
la source
1
Avez-vous trouvé une soution spécialement pour votre troisième question?
Mate
Je suis dans des situations similaires. J'ai besoin d'une prise en charge analytique pour l'une des versions de saveur prod-release uniquement. Je pourrais limiter la dépendance supplémentaire à prod-flavour mais il recherche toujours le bon package dans le cadre du fichier son. Toute suggestion !
CoDe
1
Je suis également confronté au même problème, faites-moi savoir si quelqu'un trouve la solution à cela?
Deepanshu Sinha

Réponses:

382

Vérifiez le nom de votre package sur votre google-services.json, il devrait être le même que le nom du package local de votre application

Exemple

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

Dans ce cas, mon nom de package local est com.my.app.package.name donc j'ai également changé mon nom de package dans google-services.json avec mon nom de package local

Muhammed Fasil
la source
google-services.json est un fichier !!! dans un répertoire d'application. Devrait trouver ce fichier à l'aide de l'Explorateur Windows (par exemple). Devrait éditer ce fichier par l'éditeur habituel.
user_MGU
pour le trouver, allez dans la vue Projet dans Android Studio et recherchez dans votre package d'application
Gastón Saillén
12
Non ... nous savons tous que google-services.json n'est pas valide dans ce problème ... Ce que nous voulons, c'est comment résoudre ce problème dans une situation de variante de build !!
MJ Studio
bienvenue à Yudi karma
Muhammed Fasil
Si votre activité est dans un sous-package tel que: com.example.aaron.myproject22.Activities .... vous devez aller dans google-services.json et changer le nom_package du client_info en com.example.aaron.myproject22 Assurez-vous également vous avez appliqué le plugin: 'com.google.gms.google-services' en bas de build.grade (Module module)
WHOATEMYNOODLES
224

Trouvé ceci:

Le fichier google-services.json est généralement placé dans le répertoire app /, mais à partir de la version 2.0.0-alpha3 du support du plugin a été ajouté pour les types de build , ce qui rendrait la structure de répertoire suivante valide:

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

La source

Source 2

AndroidMechanic - Viral Patel
la source
16
Existe-t-il un moyen de désactiver facilement l'analyse pour un type de build? Je veux le désactiver pour le débogage? Je pensais qu'il serait désactivé si je n'ajoute pas de fichier google-services, mais même si je le désactive, il demande toujours un fichier google-services.
Gokhan Arik
2
Quelle serait la différence chacun des fichiers josn ajouté dans chaque saveur ??
Android
2
Y a-t-il une possibilité d'utiliser les services google à l'intérieur d'un module (que deux applications partagent) ... car je ne peux même pas synchroniser gradle sans avoir un fichier de service google pour ce package ... l'application d'intégration devrait fournir le json, mais pas le module. est-ce possible?
Georg
99

Aucun client correspondant trouvé pour le nom de package 'com.tf' Je suis sûr que le "package_name" dans google-services.json ne correspond pas à votre "applicationId" dans l'application gradle.

application gradle:

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"
        }
      },

Solution : assurez-vous simplement que le package_nameet applicationIddoit être le même.

Kailash Karki
la source
4
L'auteur demandait une solution à ce problème. Ils ont différents types de build avec différents applicationId
Dmitry Guselnikov
vous avez donné à la solution la plus valable. Bravo l'homme !!
Devansh sadhotra
Le application idgradle de l'application l'a cloué
BlackPearl
69

assurez-vous que le nom de votre package dans le fichier "google-services.json" est le même que le nom du package de vos applications.

cahit beyaz
la source
4
problème courant lors de la création d'un dépôt pour un nouveau projet.
Zapnologica
1
oui si les deux noms de package ne sont pas les mêmes que ceux qui ne fonctionnent pas
Priya
63

J'ai trouvé la solution:

Nous devons créer deux "applications" dans le projet firebase, puis nous pouvons télécharger le fichier json à partir de n'importe quelle application (j'ai téléchargé à partir de l'application aromatisée). Il contiendra les données des deux applications. Nous pouvons simplement copier le fichier json dans le répertoire racine de l'application.

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

Usman
la source
10
C'est la meilleure réponse car toutes les saveurs du produit peuvent être couvertes par un seul fichier json. Pas besoin de créer d'autres jeux de sources.
Tash Pemhiwa
2
Veuillez noter que vous devez créer les applications dans le même projet. L'aperçu du projet dans le coin supérieur gauche comporte une icône de paramètres. Appuyez dessus et il s'ouvrira sur l'onglet Général, faites défiler vers le bas et sous la section Vos applications, il y a un bouton Ajouter une application
galaxigirl
Le plus gros problème se produit lorsque vous oubliez de modifier votre google-service.json et de le pousser vers prod.
Edgar Khimich
36

Vous devez placer google-services.jsondans app/dir. Et pour chaque type de build, il devrait y avoir un directeur d'accord dans le app/srcdossier.

Par exemple, si vous avez une version et un débogage:

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

Dans tous les fichiers google-services.json, vous devez spécifier correct en package_namefonction du type de build.

Par exemple, dans le répertoire de débogage, il devrait ressembler à {com.myapp}.debug

Bogdan Ustyak
la source
5
Apparemment, vous pouvez même simplement dupliquer l'élément de l'ensemble principal dans le "client"tableau de (ajouter une virgule entre les éléments) et modifier uniquement la "package_name"valeur du nouvel élément pour inclure le .debugsuffixe. Reconstruisez ensuite. Cela a fonctionné pour moi sur AS 2.3.3.
et_l
36

Cette erreur se produit lorsque vous avez un fichier Json Google Services téléchargé dans votre projet dont le nom de package ne correspond pas au nom de package de votre projet .

Vous avez récemment renommé le nom du package du projet?

Il met à jour toutes les classes mais pas le fichier Gradle . Vérifiez donc si le nom de votre package est correct dans votre Gradle, et peut-être aussi Manifest.

devDeejay
la source
1
merci, c'était utile
Sirwan Rahimi
32

Chaque fois que vous créez ou mettez à jour package nameAssurez-vous que le nom de votre package est exactement le même [Majuscules et minuscules sont importantes]

Faites ci-dessous l'étape.

1). Archiver le fichier au applicationIdniveau de l'application gradle,

2). Archivez package_namevotre google-services.jsondossier,

3). Archivez packagevotre AndroidManifestdossier

et pour une confirmation complète, faites que le nom du répertoire de votre package de travail, c'est-à-dire ("com.example.app") est également le même.

Ravi Vaniya
la source
2
Merci Bro, cela a fonctionné pour moi .Dans le fichier de niveau d'application, mon package était différent .Lorsque j'ai changé, cela a fonctionné pour moi
fazil
wel come @fazil
Ravi Vaniya
Vous n'avez pas à changer packagedans le manifeste (et tous les fichiers dans tous les packages), comme applicationIdcela changera l'ID de l'application.
CoolMind
22

Tout d'abord, ajoutez un suffixe au package d'application dans Gradle:

yourFlavor {
   applicationIdSuffix "yourFlavor"
}

Cela entraînera le nom de votre package

com.domain.yourapp.yourFlavor

Ensuite, accédez à Firebase sous votre projet actuel et ajoutez-y une autre application Android avec ce nom de package.

Remplacez ensuite le fichier google-services.json existant par le nouveau que vous générez avec la nouvelle application.

Ensuite, vous vous retrouverez avec quelque chose qui a plusieurs sections "client_info". Vous devriez donc vous retrouver avec quelque chose comme ceci:

"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
la source
C'est la bonne réponse! Vous avez besoin des deux applications (identifiants) dans le fichier google-services.json.
Bojan Hrnkas
Ceci est le chemin. +1, voici une ancienne discussion relative à ce problème
lasec0203
Simple et direct.
Umair
20

vérifiez si client_idet package_namedans google-services.json a une valeur correcte en fonction du nom de votre package.

Vous devez ajouter le fichier mentionné dans le répertoire des saveurs avec le nom de package correspondant dans le champ client_idet package_name.

Shayan Amani
la source
20

1.Vérifiez que le nom du package et l' ID d'application doivent être identiques

2.Vérifiez le nom du package google-services.json qui est disponible dans le dossier de l'application

John Ruban Singh
la source
18

Assurez-vous de renommer ApplicationId dans le fichier gradle après avoir renommé votre package

Arsalan Shah
la source
2
M'a sauvé. Merci.
VipulKumar
heureux d'avoir aidé quelqu'un
Arsalan Shah
1
Merci! qui a résolu mon problème.
Riddhi
Résolu mon problème aussi!
Kanagalingam
17

Ouvrez votre fichier Google-services.json et recherchez cette section dans le fichier:

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

vérifiez si le package est identique à votre nom de package. Le mien était différent, alors je l'ai changé et ça a marché.

DAVIS BENNY 15MIS0426
la source
A travaillé :) Merci
Solution Spirit
11

Je viens de réagir natif mais je pense que cela s'applique également à cette question. Spécifier.

Dans le fichier, android/app/build.gradlerecherchez applicationId(dedans android, defaultConfig)

et assurez-vous que cette valeur est la même cette

client[0]client_info.android_client_info.package_name

comme valeur intérieure google-services.json.

ThomasReggi
la source
Moi aussi, merci c'est le plus applicable
Jason Sebring
9

Vous devez également modifier le nom du package dans google-services.json

SH Mehdi
la source
8

Si le nom de votre package dans le fichier Google-services.json est correct, accédez au fichier gradle.properties. Ensuite, changez votre APPLICATION_ID = "com.yourpackage.name"

Dulal Kisku
la source
5

Je pense que vous avez ajouté le fichier json Firebase "google-services" .json avec le nouveau fichier. Assurez-vous de créer un nouveau fichier, vérifiez le lien sur la façon de créer un fichier json à partir de Firebase et il devrait correspondre au nom de votre package

La deuxième chose est que si vous modifiez le nom du package, utilisez l'option "remplacer dans le chemin" lorsque vous cliquez avec le bouton droit sous les fichiers lorsque vous sélectionnez le projet dans la liste déroulante. Vous devez rechercher le nom du package dans l'ensemble du projet et le remplacer!

J'espère que cela t'aides !

Ashok Kumar KR
la source
4

si rien de tout cela n'a fonctionné pour l'un d'entre vous, mon problème était avec un nom de package qui ne commençait pas par un «com». changé, maintenant ça marche.

J'espère que cela pourra aider

eiran
la source
a travaillé pour moi, merci
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"
    }

assurez-vous que l'applicationId de Gradle.app est identique à votre nom de package. mon problème était ceci et j'ai résolu de cette façon

Bayar Şahintekin
la source
3

allez dans le répertoire de votre projet et créez des dossiers sur le chemin app / src qui ont nommé les saveurs de votre produit (comme Alpha, Beta, Store ou quel que soit le nom de votre saveur). puis copiez votre fichier google-services.json dans chaque dossier. n'oubliez pas de modifier le champ "package_name" dans le fichier google-services.json de chaque version de produit que vous avez sous-dossier.

Osman Yalın
la source
3

Accédez au fichier google-services.json et dans la partie client, vérifiez le nom du package et comparez-le avec le nom du package d'application s'ils sont différents, puis modifiez le nom du package client en fonction du nom du package de votre application, cela a fonctionné pour moi.

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

Nom du package d'application-> package "com.example.application.tracker";

Shah Rukh
la source
2

Je l'ai résolu en créant deux sources, une gratuite et une payante. Ces deux dossiers contiendront le code java requis et les fichiers de ressources, qui seront modifiés selon les exigences de la saveur particulière. Par exemple, vous souhaitez supprimer le code AdMob dans le payant à la fois des classes Java et des fichiers de mise en page.

Abhiroj Panwar
la source
2

J'ai résolu le même problème en resynchronisant le fichier google-services.json.

Outils> Firebase> Se connecter à Firebase> Sync

Nabin Bhandari
la source
où as-tu fait ça? que remplace-t-il exactement? Capture d'écran?
Nasenbaer
Vous pouvez le faire dans Android Studio (le plugin Firebase doit être activé). Il met à jour le fichier google-services.json.
Nabin Bhandari
2

J'ai résolu le même problème ici est une solution simple: lorsque vous créez une connexion Firebase , suivez ces instructions:

  • Ajoutez le nom de votre application dans Firebase

  • Ajoutez le nom de votre package d'application (écrivez le même nom de package, que vous utilisez dans l'application)

  • lorsque Firebase crée un fichier google-services.json , téléchargez- le et collez- le dans le dossier de votre application

  • Synchronisez votre projet Le problème est résolu :)

    Je vous remercie

Chaudhary Nouman
la source
2

Je reçois également ce problème lorsque je change le nom du package de mon application.

Dans votre projet de studio Android, recherchez le fichier "google-services.json". Ouvrez-le. et vérifiez si le nom du package de votre application est le même que celui écrit dans ce fichier.

Le nom du package de votre application et le nom du package écrit dans le fichier "google-services.json" doivent être identiques.

mehmoodnisar125
la source
1

Cela signifie que votre fichier google-services.json n'appartient pas non plus à votre application (avez-vous téléchargé le google-services.json pour une autre application?) ... pour résoudre ce problème, procédez comme suit:

1: Connectez-vous à Firebase et ouvrez votre projet. 2: cliquez sur l'icône Paramètres et sélectionnez Paramètres du projet. 3: Dans la carte Vos applications, sélectionnez le nom du package de l'application pour laquelle vous avez besoin d'un fichier de configuration dans la liste. 4: Cliquez sur google-services.json. Une fois le téléchargement terminé, ajoutez le nouveau google-services.json à votre dossier racine de projet, en remplaçant celui existant .. ou supprimez simplement l'ancien. Il est tout à fait normal de télécharger google-services.json pour votre premier projet, puis de supposer ou d'oublier que ce google-services.json spécifique est adapté à votre projet actuel seul, car aucun autre car tous les projets ont un nom de package unique.

RileyManda
la source
1

Vérifiez que applicationIdSuffixdans le fichier build.gradle de votre application. Voyez s'il concatène du texte à votre applicationId. Si oui, supprimez-le.

Arsalan Shah
la source
1

vous pouvez le faire pour résoudre ce problème.

entrez la description de l'image ici

指尖 上 的 Android
la source
3
Cela masquera le problème au lieu de le résoudre. Voir d'autres réponses pour une solution.
Vadim Kotov
Veuillez utiliser du code au lieu d'une capture d'écran, votre réponse est bonne dans mon cas car je veux seulement créer une "maquette" d'un clone d'application.
user2078023
-1

C'est simple. Déconnectez-vous d'Android Studio, fermez-le complètement. Rouvrez Android studio, puis reconnectez-vous à Android Studio.

Essayez ensuite de vous connecter à Firebase à partir de l'IDE du studio Android. Cette procédure a fonctionné pour moi.

Prakash P
la source
cela ne fonctionne pas si google-services.json existe. nous devons supprimer google-services.json s'il existe.
Dika
cela fonctionnera une fois après avoir également modifié le nom du package dans le fichier json et avant de l'enregistrer, vous devez fermer le studio android, puis enregistrer le fichier json et redémarrer le studio.
Anish Kumar
-1

Il est simple de résoudre ce problème: assurez-vous simplement que le nom du package dans votre fichier app / build.gradle est le même nom de package que ceux de votre fichier Manifeste d'application. et assurez-vous que le nom du package est correct. Cela devrait résoudre ce problème

James Idowu
la source