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



Answers

Vérifiez le nom de votre paquet sur google-services.json

Exemple

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

Le contexte:

J'essaie de configurer Google Analytics pour mon application. (ayant 4 buildTypes personnalisés et plus de quelques productFlavors )

Cela fonctionne très bien lorsque je sélectionne la Build Variant dont l' com.my.app.package.name applicationId défini sur com.my.app.package.name (nom du package utilisé lors de la génération de google-services.json ). Mais, mes autres goûts ont des applicationsIds différentes.

J'ai suivi le devguide officiel pour le mettre en place.

Erreur que je reçois quand une autre variante de construction est sélectionnée dans l' Build Variants Tab (qui a un différent applicationId (nom du paquet) 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-dessus, Debugfree est mon buildType personnalisé et Allcategories est l'un de mes productFlavors .

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

Problème:

Maintenant, google-services.json réside dans le dossier de l' app et je ne peux donc pas les séparer pour chaque saveur de produit en les déposant dans le dossier du jeu de sources spécifique à la saveur.

Des questions:

  1. Mon byildType personnalisé pour le débogage des suffixes .debug à l' applicationId (nom du paquet). Y at-il un moyen de le faire fonctionner avec le google-services.json qui a ma version applicationId (c'est-à-dire sans le suffixe .debug )
  2. Est-il possible de configurer plusieurs versions de produit dans le même fichier google-services.json sans utiliser de fichiers et de tâches distincts pour copier le fichier requis dans le dossier de l' app . Je sais que cela peut être fait en utilisant la task comme mentionné dans ce post . Existe-t-il un moyen plus simple d'avoir un seul fichier ou de choisir le bon fichier en fonction de la configuration de gradation?
  3. Je vois le champ package_name dans google-services.json a le nom de package com.my.app.package.name . Puis-je ajouter plusieurs noms de paquets manuellement pour toutes les variantes de construction? Si oui, comment faire cela? Impossible de trouver des instructions dans les documentations.



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




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

Outils> Firebase> Connexion à Firebase> Synchronisation




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 pakage de votre application (écrivez le même nom de pakage, que vous utilisez dans l'application)

  • quand firebase fabrique le fichier google-services.json il suffit de le télécharger et de le coller dans le dossier de votre application

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

    Je vous remercie




Cela signifie que votre fichier google-services.json n'appartient pas à votre application (avez-vous téléchargé 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 dont 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 fichier google-services.json à votre dossier racine du projet, en remplaçant le fichier existant ... ou simplement supprimez le fichier existant. Il est très normal de télécharger google-services.json pour votre premier projet, puis d'assumer ou d'oublier que ce google-services.json spécifique est adapté à votre projet actuel seul, car pas tous les autres parce que tous les projets ont un nom de paquet unique.




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 paquet est le même que le nom de votre paquet. Le mien était différent, donc je l'ai changé et ça a marché.




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




J'ai trouvé la solution:

Nous devons créer deux "apps" dans le projet firebase, et ensuite nous pouvons télécharger le fichier json à partir de n'importe quelle application (j'ai téléchargé depuis l'application aromatisée). Il contiendra les données pour les 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




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

Ensuite, essayez de vous connecter à Firebase à partir de l'IDE studio Android. Cette procédure a fonctionné pour moi.




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




Links