it-swarm.com.de

Für den Paketnamen (Google Analytics) wurde kein passender Client gefunden - mehrere productFlavors & buildTypes

Kontext:

Ich versuche, Google Analytics für meine App einzurichten. (mit 4 benutzerdefinierten buildTypes und mehr als ein paar productFlavors)

Es funktioniert einwandfrei, wenn ich das Build Variant auswähle, dessen applicationId auf com.my.app.package.name gesetzt ist (der Paketname, der beim Generieren des google-services.json verwendet wird). Aber meine anderen Geschmacksrichtungen haben andere applicationIds.

Ich folgte dem offiziellen Devguide , um es einzurichten.

Fehler, den ich erhalte, wenn eine andere Build-Variante in Build Variants Tab ausgewählt wird (die einen anderen applicationId (Paketname) hat):

Fehler: Die Ausführung der Aufgabe ': app: processAllcategoriesDebugfreeGoogleServices' ist fehlgeschlagen.

Kein passender Client für Paketname 'com.my.app.package.name.debug' gefunden

Erläuterung der Fehlermeldung:

Im Aufgabennamen in der Fehlermeldung oben ist Debugfree meine benutzerdefinierte buildType und Allcategories ist eine meiner productFlavors.

Ich verstehe den Fehler und weiß, dass der Paketname sich von dem unterscheidet, den ich beim Generieren des JSON verwendet habe. Aber genau das versuche ich, umzugehen.

Problem:

Jetzt befindet sich der google-services.json im Ordner app, und daher kann ich sie nicht für jede Produktversion trennen, indem ich sie in den spezifischen Quellensetordner ablege.

Fragen:

  1. Mein benutzerdefiniertes byildType zum Debuggen von Suffixen .debug in das applicationId (Paketname). Gibt es eine Möglichkeit, wie ich es mit dem google-services.json machen kann, das meine Version applicationId hat (d. H. Ohne das Suffix .debug)?
  2. Gibt es eine Möglichkeit, mehrere Produktvarianten in derselben google-services.json-Datei zu konfigurieren, ohne separate Dateien und Tasks zum Kopieren der erforderlichen Datei in den Ordner app zu verwenden? Ich weiß, dass es mit task gemacht werden kann, wie in dieser Beitrag erwähnt. Gibt es eine einfachere Möglichkeit, nur eine Datei zu haben oder die richtige Datei auszuwählen, basierend auf der Gradle-Konfiguration?
  3. Ich sehe, dass das Feld package_name in google-services.json den Paketnamen com.my.app.package.name hat. Kann ich mehrere Paketnamen manuell hinzufügen, um für alle Build-Varianten zu funktionieren? Wenn ja, wie geht das? In den Dokumentationen wurden keine Anweisungen gefunden.

Ich habe es gefunden:

Die Datei google-services.json wird im Allgemeinen in der App /.__ abgelegt. Verzeichnis , aber ab Version 2.0.0-alpha3 war die Plugin-Unterstützung für Build-Typen hinzugefügt, wodurch das folgende Verzeichnis erstellt wird Struktur gültig:

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

Quelle

Quelle 2

Überprüfen Sie Ihren Paketnamen in Ihrer google-services.json er sollte mit Ihrem lokalen Paketnamen Ihrer App identisch sein

Beispiel

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

In diesem Fall lautet mein lokaler Paketname com.my.app.package.name und ich habe meinen Paketnamen in google-services.json mit meinem lokalen Paketnamen geändert

207
Muhammed Fasil

vergewissern Sie sich, dass der Paketname in der Datei "google-services.json" mit dem Paketnamen Ihrer Apps übereinstimmt.

57
cahit beyaz

Ich habe die Lösung gefunden:

Wir müssen zwei "Apps" im Firebase-Projekt erstellen, und dann können wir die Json-Datei von einer beliebigen App herunterladen (ich habe sie von der Flavour-App heruntergeladen). Es enthält die Daten für beide Apps. Wir können die Json-Datei einfach in das Stammverzeichnis der App kopieren.

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

44
Usman

Immer wenn Sie package name Erstellen oder aktualisieren.) Vergewissern Sie sich, dass Ihr Paketname genau gleich ist. [Groß- und Kleinschreibung]

Führen Sie den folgenden Schritt aus.

1). Überprüfen Sie applicationId in der App-Ebene gradle Datei,

2). Überprüfen Sie package_name In Ihrer google-services.json - Datei,

). Überprüfe package in deiner AndroidManifest Datei

und zur vollständigen Bestätigung geben Sie den Namen Ihres Arbeitspaketverzeichnisses an d. h. ("com.example.app") ist ebenfalls derselbe.

31
Ravi Vaniya

Sie müssen google-services.json in app/ dir ablegen. Und für jeden Build-Typ sollte ein entsprechender Director im Ordner app/src vorhanden sein. 

Zum Beispiel, wenn Sie Release und Debug haben:

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

In allen Dateien von google-services.json sollten Sie den korrekten package_name entsprechend dem Build-Typ angeben. 

Im Debug-Verzeichnis sollte es zum Beispiel wie folgt aussehen: {com.myapp}.debug

25
Bogdan Ustyak

Kein übereinstimmender Client für Paketname 'com.tf' .__ gefunden. Ich bin ziemlich sicher, dass "package_name" in google-services.json nicht mit Ihrer "applicationId" in App Gradle übereinstimmt. 

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

Lösung : Stellen Sie einfach sicher, dass package_name und applicationId gleich sind.

23
Kailash Karki

Öffnen Sie Ihre Datei "Google-services.json" und suchen Sie nach diesem Abschnitt in der Datei:

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

prüfen Sie, ob das Paket mit Ihrem Paketnamen übereinstimmt. Meins war anders, also habe ich es geändert und es hat funktioniert.

13

prüfen Sie, ob client_id und package_name in der google-services.json entsprechend Ihrem Paketnamen einen korrekten Wert hat. 

Sie sollten die erwähnte Datei in das Verzeichnis flavors mit dem entsprechenden Paketnamen im Feld client_id und package_name einfügen. 

12
SHi ON

Stellen Sie sicher, dass Sie ApplicationId in Gradle-Datei umbenennen, nachdem Sie das Paket umbenannt haben

11
Arsalan Shah

Ich komme von native reagieren, aber ich denke, dass dies auch für diese Frage gilt. Spezifizieren.

Suchen Sie in der Datei Android/app/build.gradle nach applicationId (innerhalb von Android, defaultConfig)

und sicherstellen, dass dieser Wert derselbe ist 

client[0]client_info.Android_client_info.package_name 

als Wert innerhalb von google-services.json.

10
ThomasReggi

Wenn der Paketname in der Datei "Google-services.json" in Ordnung ist, gehen Sie in die Datei "gradle.properties". Dann ändern Sie Ihre APPLICATION_ID = "com.yourpackage.name"

7
Dulal Kisku

Sie müssen auch den Paketnamen in google-services.json ändern.

6
S H Mehdi

Fügen Sie dem Anwendungspaket in Gradle zunächst ein Suffix hinzu:

yourFlavor {
   applicationIdSuffix "yourFlavor"
}

Dadurch wird Ihr Paket benannt 

com.domain.yourapp.yourFlavor

Gehen Sie dann zu Firebase unter Ihrem aktuellen Projekt und fügen Sie eine weitere Android-App mit diesem Paketnamen hinzu.

Ersetzen Sie dann die vorhandene Datei google-services.json durch die neue, die Sie generieren, durch die neue App. 

Dann erhalten Sie etwas, das mehrere "client_info" -Abschnitte enthält. Du solltest also mit so etwas enden: 

"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"
    }
  }
5
Droid Chris
Android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.package.name"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    }

stellen Sie sicher, dass die applicationId von Gradle.app Ihrem Paketnamen entspricht. Mein Problem war das und ich habe es so gelöst

4

wenn nichts davon für einen von euch funktionierte, war mein Problem mit einem Paketnamen, der nicht mit einem 'com' begann.

hoffentlich hilft das

4
eiran

Ich denke, Sie haben die Firebase-Json-Datei "google-services" .json mit der neuen Datei hinzugefügt. Stellen Sie sicher, dass Sie eine neue Datei erstellen Überprüfen Sie den Link, wie Sie eine Json-Datei aus Firebase erstellen und sie sollte mit Ihrem Paketnamen übereinstimmen

Zweitens: Wenn Sie den Paketnamen ändern, verwenden Sie die Option "In Pfad ersetzen", wenn Sie mit der rechten Maustaste unter Dateien klicken, wenn Sie ein Projekt aus der Dropdown-Liste auswählen. Sie müssen im gesamten Projekt nach Paketnamen suchen und es ersetzen!

Hoffe das hilft !

4
Ashok Kumar K R

gehen Sie in Ihr Projektverzeichnis und erstellen Sie Ordner für den App/src-Pfad, die Ihre Produktvarianten benannt haben (wie Alpha, Beta, Store oder wie auch immer der Name Ihrer Sorte ist). Kopieren Sie dann Ihre google-services.json-Datei in jeden Ordner. Vergessen Sie nicht, das Feld "package_name" in der google-services.json-Datei jedes Produkttyps zu ändern, die Sie in einem Unterordner gespeichert haben.

3
Osman Yalın

Ich habe das gleiche Problem gelöst. Hier ist eine einfache Lösung: Wenn Sie eine firebase -Verbindung erstellen, folgen Sie diesen Richtlinien:

  • Fügen Sie Ihren Anwendungsnamen in Firebase hinzu

  • Fügen Sie Ihren Anwendungspaketnamen hinzu (schreiben Sie denselben Paketnamen, den Sie in der App verwenden).

  • wenn Firebase google-services.json Datei erstellt, einfach download und einfügen in Ihrem App-Ordner

  • Synchronisieren Sie Ihr Projekt Problem ist gelöst :)

    Vielen Dank 

2

Gehen Sie zur Datei google-services.json, und überprüfen Sie im Client-Teil den Paketnamen. Vergleichen Sie ihn mit dem Namen des App-Pakets, falls sie nicht identisch sind.

google-services.json Datei-> "Paketname": "com.example.application.tracker"

App-Paketname-> Paket "com.example.application.tracker";

2
Shah Rukh

Ich habe es gelöst, indem ich zwei Quellensets erstellt habe, eine kostenlos und eine bezahlt. Beide Ordner enthalten den erforderlichen Java-Code und die Ressourcendateien, die entsprechend den Anforderungen der jeweiligen Variante bearbeitet werden. Sie möchten beispielsweise AdMob-Code in der kostenpflichtigen Version sowohl aus Java-Klassen als auch aus Layoutdateien entfernen.

2
Abhiroj Panwar

Ich löste das gleiche Problem durch erneutes Synchronisieren der Datei google-services.json.

Extras> Firebase> Mit Firebase verbinden> Synchronisieren

2
Nabin Bhandari

Dies bedeutet, dass Ihre google-services.json-Datei entweder nicht zu Ihrer Anwendung gehört (Haben Sie google-services.json für eine andere App heruntergeladen?) ... Gehen Sie folgendermaßen vor, um das Problem zu lösen:

1: Melden Sie sich bei Firebase an und öffnen Sie Ihr Projekt. 2: Klicken Sie auf das Symbol Einstellungen und wählen Sie Projekteinstellungen. 3. 3: Wählen Sie auf der Seite Ihre Apps den Paketnamen der App aus, für die Sie eine Konfigurationsdatei benötigen für aus der Liste . 4: Klicken Sie auf google-services.json. Fügen Sie nach Abschluss des Downloads die neue Datei google-services.json in Ihr Projektverzeichnis ein, und ersetzen Sie die vorhandene Datei .. oder löschen Sie einfach die alte Datei . Es ist ganz normal, die Google-Services herunterzuladen. json für Ihr erstes Projekt und gehen Sie davon aus, dass diese spezifische google-services.json nur für Ihr aktuelles Projekt geeignet ist, da nicht alle anderen Projekte einen eindeutigen Paketnamen haben.

1
RileyManda

Dieses Problem tritt auch auf, wenn ich den Paketnamen meiner Anwendung ändere.

Suchen Sie in Ihrem Android-Studio-Projekt nach der Datei "google-services.json" . Öffnen Sie sie . Und prüfen Sie, ob der Paketname Ihrer Anwendung mit dem in dieser Datei angegebenen übereinstimmt.

Der Paketname Ihrer Anwendung und der in der Datei "google-services.json" geschriebene Paketname muss identisch sein.

1
mehmoodnisar125

Suchen Sie in der build.gradle -Datei Ihrer App nach applicationIdSuffix. Prüfen Sie, ob es Text an Ihre applicationId ankettet. Wenn ja, entferne es.

0
Arsalan Shah

1.Verifizierung Paketname und Anwendungs-ID sollte identisch sein

2.Verify google-services.json Paketname der im App-Ordner verfügbar ist

0

Dieser Fehler tritt auf, wenn Sie in Ihrem Projekt eine Google Services Json-Datei heruntergeladen haben, deren Paketname nicht mit dem Paketnamen Ihres Projekts übereinstimmt.

Kürzlich den Paketnamen des Projekts umbenannt? Es werden alle Klassen aber nicht die Gradle-Datei aktualisiert. Überprüfen Sie daher, ob Ihr Paketname in Ihrem Gradle und möglicherweise auch in Manifest korrekt ist.

0
devDeejay