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:
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
)?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?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 ...
Ü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
vergewissern Sie sich, dass der Paketname in der Datei "google-services.json" mit dem Paketnamen Ihrer Apps übereinstimmt.
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
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.
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
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.
Ö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.
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.
Stellen Sie sicher, dass Sie ApplicationId in Gradle-Datei umbenennen, nachdem Sie das Paket umbenannt haben
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
.
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"
Sie müssen auch den Paketnamen in google-services.json ändern.
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"
}
}
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
wenn nichts davon für einen von euch funktionierte, war mein Problem mit einem Paketnamen, der nicht mit einem 'com' begann.
hoffentlich hilft das
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 !
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.
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
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";
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.
Ich löste das gleiche Problem durch erneutes Synchronisieren der Datei google-services.json
.
Extras> Firebase> Mit Firebase verbinden> Synchronisieren
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.
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.
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.
1.Verifizierung Paketname und Anwendungs-ID sollte identisch sein
2.Verify google-services.json Paketname der im App-Ordner verfügbar ist
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.