Nessun client corrispondente trovato per il nome del pacchetto (Google Analytics) - multiple productFlavors & buildTypes [chiuso]


383

Contesto:

Sto cercando di configurare Google Analytics per la mia app. (avendo 4 personalizzati buildTypese più di alcuni productFlavors)

Funziona bene quando seleziono il file Build Variantche ha applicationIdimpostato su com.my.app.package.name(il nome del pacchetto utilizzato durante la generazione del google-services.json). Ma i miei altri gusti hanno applicazioni diverse.

Ho seguito la guida ufficiale per installarlo.

L'errore che visualizzo quando viene selezionata un'altra variante di build Build Variants Tab(che ha un diverso applicationId(nome del pacchetto) è il seguente:

Errore: Esecuzione non riuscita per l'attività ": app: processAllcategoriesDebugfreeGoogleServices".

Nessun client corrispondente trovato per il nome del pacchetto 'com.my.app.package.name.debug'

Spiegazione del messaggio di errore:

Nel nome dell'attività nel messaggio di errore sopra Debugfreeè la mia abitudine buildTypeed Allcategoriesè una delle mie productFlavors.

Capisco l'errore e so che il nome del pacchetto è diverso da quello che ho usato durante la generazione del json, ma è quello che sto cercando di capire.

Problema:

Ora, google-services.jsonrisiede nella appcartella e quindi non sono in grado di separarli per ogni sapore del prodotto rilasciandoli nella cartella del set di origini specifico del sapore.

Domande:

  1. La mia abitudine byildTypeper il debug dei suffissi .debugper il applicationId(nome pacchetto). C'è un modo in cui posso farlo funzionare con il google-services.jsonquale ha il mio rilascio applicationId(cioè senza il suffisso .debug)
  2. Esiste un modo per avere più varianti di prodotto configurate nello stesso google-services.jsonfile senza utilizzare file e attività separati per copiare il file richiesto nella appcartella. So che può essere fatto usando taskcome indicato in questo post . C'è un modo più semplice per avere un solo file o scegliere il file giusto in base alla configurazione gradle?
  3. Vedo che il package_namecampo google-services.jsonha il nome del pacchetto com.my.app.package.name. Posso aggiungere manualmente più nomi di pacchetto per funzionare con tutte le varianti di build? Se sì, come farlo? Impossibile trovare istruzioni nelle documentazioni.

1
Hai trovato una soluzione specifica per la tua terza domanda?
Mate

Sono in situazioni simili. Ho bisogno del supporto di analisi solo per una versione di sapore prod-release. Potrei limitare la dipendenza aggiunta a prod-flavour ma cerca ancora il pacchetto giusto come parte del file figlio. Qualche suggerimento !
CoDe

1
Sto anche affrontando lo stesso problema. Fammi sapere se qualcuno trova la soluzione per questo?
Deepanshu Sinha,

Risposte:


382

Controlla il nome del tuo pacchetto sul tuo google-services.json dovrebbe essere lo stesso con il nome del pacchetto locale della tua app

Esempio

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

In questo caso il nome del mio pacchetto locale è com.my.app.package.name, quindi ho anche cambiato il nome del mio pacchetto in google-services.json con il nome del mio pacchetto locale


google-services.json è un file !!! all'interno di una directory dell'app. Dovrebbe trovare questo file con l'aiuto di Windows Explorer (ad esempio). Dovrebbe modificare questo file dal solito editor.
user_MGU

per trovarlo vai alla vista Progetto in Android Studio e cerca nel tuo pacchetto app
Gastón Saillén

12
No ... sappiamo tutti che google-services.json non è valido in questo problema ... Quello che vogliamo è come risolvere questo problema nella situazione della variante build !!
MJ Studio,

benvenuto Yudi karma
Muhammed Fasil,

Se la tua attività è in un pacchetto secondario come: com.example.aaron.myproject22.Activities .... devi andare in google-services.json e cambiare il nome_pacchetto del client_info in com.example.aaron.myproject22 Assicurati anche hai applicato il plug-in: "com.google.gms.google-services" nella parte inferiore di build.grade (app Modulo)
WHOATEMYNOODLES

224

Trovato questo:

Il file google-services.json viene generalmente inserito nella directory app /, ma a partire dalla versione 2.0.0-alpha3 del supporto plug-in è stato aggiunto per i tipi di build , il che renderebbe valida la seguente struttura di directory:

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

fonte

Fonte 2


16
Esiste un modo per disabilitare facilmente l'analisi per un tipo di build? Voglio disabilitarlo per il debug? Ho pensato che sarebbe stato disabilitato se non avessi aggiunto il file dei servizi di Google, ma anche se lo disabilitassi, chiederò comunque il file dei servizi di Google.
Gokhan Arik,

2
Quale sarebbe la differenza ciascuno dei file josn aggiunto in ogni sapore ??
Android

2
Esiste la possibilità di utilizzare i servizi di Google all'interno di un modulo (condiviso da due app) ... perché non riesco nemmeno a sincronizzare gradualmente senza avere un file di servizio di Google per quel pacchetto ... l'app di incorporamento dovrebbe fornire il json, ma non il modulo. è comunque possibile?
Georg,

99

Nessun client corrispondente trovato per il nome del pacchetto 'com.tf' Sono abbastanza sicuro che il "nome_pacchetto" in google-services.json non corrisponda al tuo "applicationId" nel livello dell'app.

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

Soluzione : assicurarsi solo che package_namee applicationIdsia lo stesso.


4
L'autore stava chiedendo una soluzione a questo. Hanno diversi tipi di build con differenti applicationId
Dmitry Guselnikov il

hai dato alla soluzione più valida. Complimenti amico !!
Devansh sadhotra

Il grado application idin-app lo ha inchiodato
BlackPearl

69

assicurati che il nome del tuo pacchetto nel file "google-services.json" coincida con il nome del pacchetto delle tue app.


4
problema comune durante il fork di un repository per un nuovo progetto.
Zapnologica,

1
sì, se il nome di entrambi i pacchetti non è lo stesso di quello che non funziona
Priya

63

Ho trovato la soluzione:

Dobbiamo creare due "app" nel progetto firebase e quindi possiamo scaricare il file json da qualsiasi app (che ho scaricato dall'app aromatizzata). Conterrà i dati per entrambe le app. Possiamo semplicemente copiare il file json nella directory principale dell'app.

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


10
Questa è la risposta migliore poiché tutti gli aromi del prodotto possono essere coperti da un file json. Non è necessario creare altri set di fonti.
Tash Pemhiwa,

2
Nota, devi creare le app all'interno dello stesso progetto. La panoramica del progetto nell'angolo in alto a sinistra ha un'icona delle impostazioni. Premilo e si aprirà la scheda Generale, scorri verso il basso e sotto la sezione Le tue app c'è un pulsante Aggiungi app
galaxigirl

Il problema più grande si verificherà quando ti dimenticherai di cambiare il tuo google-service.json e di spingerlo a prod.
Edgar Khimich,

36

Devi inserire google-services.jsonin app/dir. E per ogni tipo di build, dovrebbe esserci un regista concorde nella app/srccartella.

Ad esempio, se si dispone di rilascio e debug:

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

In tutti i file google-services.json è necessario specificare la corretta in package_namebase al tipo di build.

Ad esempio, all'interno della directory di debug dovrebbe essere come {com.myapp}.debug


5
Apparentemente puoi persino duplicare l'elemento dell'insieme principale "client"nell'array del (aggiungi una virgola tra gli elementi) e cambiare solo il "package_name"valore del nuovo elemento per includere il .debugsuffisso. Quindi ricostruire. Ha funzionato per me su AS 2.3.3.
et_l

36

Questo errore si verifica quando nel tuo progetto è stato scaricato un file Json di Servizi Google il cui nome del pacchetto non corrisponde al nome del pacchetto del progetto .

Recentemente ribattezzato il nome del pacchetto del progetto?

Aggiorna tutte le classi ma non il Gradle File . Quindi controlla se il nome del tuo pacchetto è corretto nel tuo Gradle e forse anche Manifest.


1
grazie è stato utile
Sirwan Rahimi il

32

Ogni volta che crei o aggiorni package nameAssicurati che il nome del tuo pacchetto sia esattamente lo stesso [Questioni maiuscole e minuscole]

Fai di seguito.

1). Controlla applicationIda livello di appgradle file a ,

2). Controlla package_namenel tuogoogle-services.json file,

3). Controlla packagenel tuoAndroidManifest file

e per la conferma completa, il nome della directory del pacchetto di lavoro, ovvero ("com.example.app") è anche lo stesso.


2
Grazie fratello ha funzionato per me. Nel file di livello a livello di app il mio pacchetto era diverso. Quando l'ho cambiato ha funzionato per me
filipp

wel come @fazil
Ravi Vaniya,

Non è necessario modificare packagemanifest (e tutti i file in tutti i pacchetti), poiché applicationIdcambierà l'ID app.
CoolMind,

22

Prima di tutto, aggiungi un suffisso al pacchetto dell'applicazione in Gradle:

yourFlavor {
   applicationIdSuffix "yourFlavor"
}

Ciò causerà il nome del pacchetto

com.domain.yourapp.yourFlavor

Quindi vai su Firebase sotto il tuo progetto corrente e aggiungi un'altra app Android con questo nome di pacchetto.

Quindi sostituisci il file google-services.json esistente con quello nuovo che generi con la nuova app al suo interno.

Quindi finirai con qualcosa che ha più sezioni "client_info". Quindi dovresti finire con qualcosa del genere:

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

Questa è la risposta esatta! Sono necessarie entrambe le app (ID) nel file google-services.json.
Bojan Hrnkas,

questo è il modo. +1, ecco alcune vecchie discussioni relative a questo problema
lasec0203,

Semplice e diretto.
Umair

20

controlla se client_ide package_namein google-services.json ha un valore corretto in base al nome del tuo pacchetto.

Dovresti aggiungere il file menzionato nella directory flavours con il nome del pacchetto corrispondente nel campo client_ide package_name.


20

1.Verificare il nome del pacchetto e l' ID applicazione devono essere uguali

2.Verifica il nome del pacchetto google-services.json disponibile nella cartella dell'app



17

Apri il tuo file Google-services.json e cerca questa sezione nel file:

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

controlla se il pacchetto è uguale al nome del pacchetto. Il mio era diverso, quindi l'ho cambiato e ha funzionato.


Ha funzionato :) Grazie
Soluzione Spirit

11

Vengo da un nativo reattivo, ma penso che questo valga anche per questa domanda. Specificare.

All'interno del file android/app/build.gradlecerca applicationId(entro android,defaultConfig )

e assicurarsi che quel valore sia uguale a questo

client[0]client_info.android_client_info.package_name

come valore all'interno google-services.json.


Anche a me, grazie questo è molto applicabile
Jason Sebring,

9

Devi anche cambiare il nome del pacchetto in google-services.json


8

Se il nome del pacchetto sul file Google-services.json è corretto, vai al file gradle.properties. Quindi modifica APPLICATION_ID = "com.yourpackage.name"


5

Penso che tu abbia aggiunto il file json firebase "google-services" .json con il nuovo file. Assicurati di creare un nuovo file controlla il link su come creare il file json da firebase e dovrebbe corrispondere al nome del pacchetto

La seconda cosa è che se si modifica il nome del pacchetto, utilizzare l'opzione "Sostituisci nel percorso" quando si fa clic con il pulsante destro del mouse sui file quando si seleziona il progetto dal menu a discesa. Devi cercare il nome del pacchetto in tutto il progetto e sostituirlo!

Spero che sia di aiuto !


4

se nessuno di questi ha funzionato per uno di voi ragazzi, il mio problema era con un nome di pacchetto che non era iniziato con una 'com'. cambiato, ora funziona.

spero che aiuti


ha funzionato per me, grazie
Hasan Shouman il

4
android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.package.name"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

assicurati che applicationId di Gradle.app sia uguale al nome del tuo pacchetto. il mio problema era questo e l'ho risolto in questo modo


3

vai alla directory del tuo progetto e crea cartelle sul percorso app / src che hanno chiamato i tuoi gusti di prodotto (come Alpha, Beta, Store o qualunque sia il nome del tuo sapore). quindi copia il tuo file google-services.json in ciascuna cartella. non dimenticare di modificare il campo "nome_pacchetto" sul file google-services.json di ogni sapore di prodotto che hai inserito in una sottocartella.


3

Vai al file google-services.json e nella parte client controlla il nome del pacchetto e confrontalo con il nome del pacchetto dell'app se sono diversi, quindi cambia il nome del pacchetto client in base al nome del pacchetto dell'app che ha funzionato per me buona fortuna.

google-services.json file-> "nome_pacchetto": "com.example.application.tracker"

Nome pacchetto app-> pacchetto "com.example.application.tracker";


2

L'ho risolto realizzando due fonti, una gratuita e una a pagamento. Entrambe queste cartelle conterranno il codice java e i file di risorse necessari, che verranno modificati in base ai requisiti del particolare sapore. Ad esempio, desideri rimuovere il codice AdMob in Pagato sia dalle classi Java sia dai file di layout.


2

Ho risolto lo stesso problema risincronizzando il file google-services.json.

Strumenti> Firebase> Connetti a Firebase> Sincronizza


dove l'hai fatto? cosa sostituisce esattamente? Immagine dello schermo?
Nasenbaer,

Puoi farlo in Android Studio (il plug-in Firebase deve essere abilitato). Aggiorna il file google-services.json.
Nabin Bhandari,

2

Ho risolto lo stesso problema qui è una soluzione semplice: quando si crea una connessione Firebase seguire queste linee guida:

  • Aggiungi il nome della tua applicazione in firebase

  • Aggiungi il nome pakage dell'applicazione (scrivi lo stesso nome pakage, che stai utilizzando nell'app)

  • quando firebase crea il file google-services.json basta scaricarlo e incollarlo nella cartella dell'app

  • Sincronizza il tuo progetto Il problema è stato risolto :)

    Grazie


2

Ottengo anche questo problema quando cambio il nome del pacchetto della mia applicazione.

Nel tuo progetto Android Studio trova il file "google-services.json". Aprilo e controlla se il nome del pacchetto dell'applicazione è lo stesso di quello scritto in questo file.

Il nome del pacchetto dell'applicazione e il nome del pacchetto scritti nel file "google-services.json" devono essere uguali.


1

Ciò significa che il tuo file google-services.json non appartiene alla tua applicazione (hai scaricato google-services.json per un'altra app?) ... quindi per risolvere il problema procedi come segue:

1: Accedi a Firebase e apri il tuo progetto. 2: fare clic sull'icona Impostazioni e selezionare Impostazioni progetto. 3: Nella scheda Le tue app, seleziona il nome del pacchetto dell'app per cui hai bisogno di un file di configurazione dall'elenco. 4: Fai clic su google-services.json. Al termine del download, aggiungi il nuovo google-services.json nella cartella principale del tuo progetto, sostituendo quello esistente ... oppure elimina solo quello vecchio. È molto normale scaricare google-services.json per il tuo primo progetto e quindi assumere o dimenticare che questo specifico google-services.json è personalizzato solo per il tuo progetto attuale, perché non tutti gli altri perché tutti i progetti hanno un nome pacchetto univoco.


1

Controlla applicationIdSuffixnel file build.gradle della tua app. Vedi se sta concatenando qualsiasi testo al tuo applicationId. In tal caso, rimuoverlo.


1

puoi farlo per eliminare questo problema.

inserisci qui la descrizione dell'immagine


3
Questo maschererà il problema invece di risolverlo. Vedi altre risposte per una soluzione.
Vadim Kotov,

Si prega di utilizzare il codice anziché uno screenshot, la mia risposta è buona nel mio caso perché voglio solo creare un "mockup" di un clone dell'applicazione.
user2078023

-1

Semplice. Esci da Android Studio, chiudilo completamente. Riapri Android Studio e poi accedi nuovamente ad Android Studio.

Quindi prova a connetterti a Firebase dall'IDE di Android Studio. Questa procedura ha funzionato per me.


questo non funziona se esiste google-services.json. dobbiamo eliminare google-services.json se esiste.
Dika,

funzionerà una volta dopo aver cambiato anche il nome del pacchetto nel file json e prima di salvarlo, è necessario chiudere Android Studio e quindi salvare il file JSON e riavviare Studio.
Anish Kumar,

-1

È semplice risolvere questo problema: assicurati solo che il nome del pacchetto nel tuo file app / build.gradle abbia lo stesso nome del pacchetto di quelli nel tuo file Manifest App. e assicurarsi che il nome del pacchetto sia corretto. Questo dovrebbe risolvere questo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.