EDIT: Ich sollte betonen, dass ich Aromen habe, für die ich keinen dieser Google-Dienste verwenden möchte, und versuche, das Google-Dienste-Plugin in einem solchen Fall anzuwenden, ohne über entsprechende Google-Dienste zu verfügen. json, würde zu einem fehlgeschlagenen Build führen.
Ich möchte in der Lage sein, das Firebase-SDK zu initialisieren, speziell um die Remote-Konfiguration ohne die Verwendung von google-services.json zu verwenden.
Ich sehe, dass FirebaseApp eine Initialisierungsmethode hat, die ein FirebaseOptions-Objekt empfängt.
Ich habe die FirebaseOptions mit den Werten in der Datei google-services.json erstellt, und nach einem Aufruf von FirebaseApp.initialize mit diesen Optionen bekomme ich immer
%Vor%Ich weiß, dass es die empfohlene Methode ist, die Datei google-services.json zu verwenden, aber ich muss in der Lage sein, abhängig von Debug / Release-Builds unterschiedliche Firebase-Projekte aufzurufen, während der Paketname beibehalten wird.
Das möchte ich tun, indem ich ein Debug / Release-Paar für alle Werte, die zum Initialisieren von Firebase notwendig sind, habe und dann dynamisch die Initialisierung mache.
%Vor%Bisher scheint es nicht zu funktionieren.
Alle Hilfe wird sehr geschätzt!
Hier finden Sie paar Hinweise zur Verwendung mehrerer Firebase-Apps / Datenbanken im selben Android-Projekt. Firebase-Blog und Neue Konfigurationsdokumente
Allerdings sprechen diese über die Verwendung einer sekundären App zusätzlich zur Standard-App - die immer noch die google-services.json verwendet. Ich habe ein wenig geforscht und in ihrem Slack-Kanal herumgestochert. Firebase verwendet einen ContentProvider namens FirebaseInitProvider. Dies verwendet die Datei "google-services.json", um die DEFAULT-App beim Start zu initialisieren. Es rastet ein, wenn die JSON-Datei nicht vorhanden ist. Ich habe folgende Schritte gemacht:
FirebaseInitProvider wird über das Zusammenführen von Manifesten hinzugefügt. Im Manifest auf der obersten Ebene können Sie jedoch ein node = remove-Tag angeben, um zu verhindern, dass es im endgültigen Manifest hinzugefügt wird.
%Vor%Aber selbst danach sehe ich immer noch eine Ausnahme:
%Vor%Sieht so aus, als ob FirebaseInstanceIdService weiterhin nach der Instanz-App sucht. Wenn Sie den Dienst mithilfe der gleichen Methode zum Entfernen von Manifestknoten deaktivieren, wird diese Ausnahme aufgehoben. Aber ich denke, dass dieser Dienst wichtige Synchronisations- / Messaging-Sachen macht. Also nicht sicher, ob es klug ist, das zu entfernen. Lange Rede, kurzer Sinn - Ich bin immer noch auf der Suche nach der perfekten Lösung, um die Standard-App zu deaktivieren / nicht mit google-services.json. Alle weiteren Hinweise werden sehr geschätzt.
UPDATE:
Sieht so aus, als würde diese Lösung funktionieren - ohne FirebaseInstanceIdService zu deaktivieren und FirebaseInitProvider nur wie oben erwähnt zu entfernen. Stellen Sie nur sicher, dass Firebase.initializeApp das erste Element in der Application :: onCreate-Methode aufgerufen hat.
%Vor% Ich habe eine interessante Problemumgehung gefunden. Versuche Folgendes:
Setzen Sie Ihre google-services.json
auf eine beliebige Beispiel-App, die Google für die Firebase-Integration bereitstellt . Kompiliere es.
Sehen Sie sich den Pfad app/build/generated/res/google-services/debug/values/
an, dort sollte values.xml
file mit einer Menge von Strings generiert werden, die in den von Ihnen beschriebenen Fehlern erwähnt wurden. Kopieren Sie diese Zeichenfolgen in die Datei value.xml Ihres Projekts. Das war's.
Ich verwende auch Build-Varianten, um verschiedene Konfigurationen für verschiedene Umgebungen anzuwenden.
Ich hatte das gleiche Problem, da einige der Varianten keinen passenden Eintrag in der Datei google-services.json
hatten. Dies führte dazu, dass einige meiner Builds beim Generieren eines App-Pakets fehlschlugen, das nicht in Firebase konfiguriert war.
Meine Problemumgehung bestand darin, Dummy-Anwendungseinträge für die fehlenden Pakete in den entsprechenden Firebase-Projekten auf dem Firebase-Dashboard hinzuzufügen und dann die aktualisierte google-services.json
-Datei von ihr zu erhalten.
Vielleicht nicht die beste Praxis, aber hat die Arbeit in meinem Fall getan.
Tags und Links android firebase firebase-remote-config