Cordova-plugin-firebase: Fehler beim zweiten Build

Erstellt am 29. Juni 2016  ·  22Kommentare  ·  Quelle: arnesson/cordova-plugin-firebase

Hallo,
Vielen Dank für dieses Projekt und Ihre tolle Arbeit!

Ich habe ein Problem im ionischen Projekt.
Zuerst füge ich die Zeichenfolge in meiner config.xml hinzu:
<plugin name="cordova-plugin-firebase" spec="https://github.com/arnesson/cordova-plugin-firebase" />
Zweitens habe ich google-services.json (die ich von der Firebase-Webkonsole erhalten habe) im Stammverzeichnis abgelegt.
Ich führe meinen Build aus und das funktioniert:

$ cordova run android
Running command: /home/user/android-app/App/hooks/after_prepare/010_add_platform_class.js /home/user/android-app/App
add to body class: platform-android
**Discovered plugin "cordova-plugin-firebase" in config.xml. Adding it to the project**
Fetching plugin "https://github.com/arnesson/cordova-plugin-firebase" via git clone
Repository "https://github.com/arnesson/cordova-plugin-firebase" checked out to git ref "master".
Installing "cordova-plugin-firebase" for android
ANDROID_HOME=/home/user/Android/Sdk/
JAVA_HOME=/opt/java/jdk1.8.0_92
No target specified, deploying to device 'F9AZCY31J032'.
:preBuild UP-TO-DATE

Aber mein zweiter Build schlägt immer fehl...

$ cordova run android
Running command: /home/user/android-app/App/hooks/after_prepare/010_add_platform_class.js /home/user/android-app/App
add to body class: platform-android
Error: Invalid data, chunk must be a string or buffer, not object

Ich habe versucht, das Plugin von cordova plugin add https://github.com/arnesson/cordova-plugin-firebase.git --save zu installieren. Aber in diesem Fall stürzt sogar der erste Build mit Error: Invalid data, chunk must be a string or buffer, not object

Und wenn ich die Android-Anwendung mit dem ersten Build starte, funktioniert der folgende Code nicht für mich:

angular.module('app', ['ionic', 'app.controllers', 'app.routes', 'app.services', 'app.directives', 'firebase'])

.run(function($ionicPlatform) {
  $ionicPlatform.ready(function() {
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
    // for form inputs)
    if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
      cordova.plugins.Keyboard.disableScroll(true);
    }
    if (window.StatusBar) {
      // org.apache.cordova.statusbar required
      StatusBar.styleDefault();
    }

    window.FirebasePlugin.getInstanceId(function(token) {
      // save this server-side and use it to push notifications to this device
      console.log("Token", token);
    }, function(error) {
      console.error(error);
    });

  });
})

Dieser Code gibt ["Token", "null"] an die Konsole zurück.

Vielen Dank im Voraus.

Alle 22 Kommentare

Erhalten Sie Duplikate oder seltsame Werte in der platform/andoid/res/values/strings.xml?

Versuchen Sie, Cordova Prepare android vor dem Bauen auszuführen (obwohl es auch ohne funktionieren sollte)

Gleiches Problem hier. In strings.xml habe ich:

    <string name="google_app_id">727247059290</string>
    <string name="google_app_id">@string/google_app_id</string>
    <string name="google_api_key">@string/google_api_key</string>

Entfernen Sie google_app_id aus string.xml und versuchen Sie es erneut. Ich habe es entfernt und es funktioniert für mich.

Wie wäre es mit ios? hast du irgendeine Idee?

NÖ. Für iOS habe ich keine Ahnung. Ich denke, Sie müssen die Datei GoogleService-Info.plist im iOS-Projekt hinzufügen und Pod installieren.
Funktioniert es für Sie jetzt in Android?

Nein, ich erhalte Fehler: ungültige Daten, wenn ich versuche, sie zu emulieren. Ich vermute, dass der Cordova-Vorbereitungshaken die Datei zurück ändert.

Aber ich bin mehr daran interessiert, dass es in ios funktioniert. In iOS habe ich ein Build-Problem: https://github.com/arnesson/cordova-plugin-firebase/issues/11

@raducostea - Ich empfehle Ihnen, APN (Apple Push Notification) zu verwenden. Hier ist der Link des Plugins: https://github.com/phonegap-build/PushPlugin. Unter iOS funktioniert es bei mir sehr genau.

@dhruv270 Ich verwende das bereits. Ich möchte, dass dieses Plugin für den Analyseteil Ereignisse aufzeichnet und in Google Analytics hinzufügt.

Fehler: Aufgrund der Kopie von google-services.json und googleService-info.plist in den Plattformordner sind ungültige Daten aufgetreten. Wenn der Plattformordner und die plist nicht vorhanden sind, wird ein Fehler angezeigt .
Ich habe das behoben, indem ich den Plattformordner und die json , plist-Datei hinzugefügt habe. Entschuldigung für mein schlechtes Englisch

Ja, Sie müssen ein Projekt in der Firebase-Konsole erstellen. Fügen Sie diesem Projekt eine Anwendung hinzu, indem Sie Ihren Anwendungspaketnamen / Ihre Bundle-ID hinzufügen. Sie erhalten google-services.json für Android und GoogleService-Info.plist für iOS. Diese Datei müssen Sie Ihrem Projekt hinzufügen.

Stellen Sie sicher, dass Sie die Dateien im ROOT Ihres Projekts neben config.xml usw. ablegen, nicht in zB Plattformen oder www.

@raducostea @dhruv270 In Bezug auf APN und Push würde ich vorschlagen, dieses Plugin auch dafür zu verwenden. PushPlugin wird schließlich auch zu Firebase FCM wechseln (da GCM veraltet ist). FCM verwendet APN für IOS, also ist es dasselbe, aber Sie profitieren von einer gemeinsamen Schnittstelle für alle Plattformen

Habe das schon gemacht, aber ich bekomme Kompilierungsfehler. Überprüfen Sie https://github.com/arnesson/cordova-plugin-firebase/issues/11

Ich habe keine Duplikate oder seltsamen Werte in strings.xml.
Ich habe cordova-plugin-firebase neu installiert und "cordova Prepare" gemacht. Danach sah ich neue Werte in strings.xml:

<string name="google_app_id">@string/google_app_id</string>
<string name="google_api_key">@string/google_api_key</string>

Und wenn ich den gleichen Fehler wieder baue:
Fehler: Ungültige Daten, Chunk muss eine Zeichenfolge oder ein Puffer sein, kein Objekt

Sind sowohl iOS- als auch Android-Plattformen hinzugefügt?

Sobald ich Android baue, bekomme ich diesen Fehler

**UNERWARTETE AUSNAHME AUF HÖCHSTER EBENE:
com.android.dex.DexException: Mehrere Dex-Dateien definieren Lcom/google/firebase/FirebaseException;
unter com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:579)
unter com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:535)
unter com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:517)
unter com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164)
unter com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
unter com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)
unter com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
unter com.android.dx.command.dexer.Main.run(Main.java:277)
unter com.android.dx.command.dexer.Main.main(Main.java:245)
unter com.android.dx.command.Main.main(Main.java:106)

FEHLGESCHLAGEN**

Ich habe das gleiche Problem wie @neosekar . Irgendwelche Ideen?

BEARBEITEN:

Mehr dazu im Internet gefunden:

Es scheint, als hätten wir aufgrund der großen Abhängigkeiten das Limit für die Methodenanzahl erreicht. Ich werde versuchen, eine Lösung zu finden.

BEARBEITEN 2:

Ich habe es wie folgt behoben:

  • Entfernen Sie Zeile 5,6,7 aus /plugins/cordova-plugin-firebase/src/android/build.gradle
  • Entfernen Sie Zeile 1 aus /plugins/cordova-plugin-firebase/src/android/build-extras.gradle
  • /platforms/android-Ordner entfernen
  • Plattform hinzufügen (cordova-Plattform Android hinzufügen)
  • Erstellen/Ausführen (cordova run android --device)

Ich denke jedoch, dass dies nur funktioniert, wenn Sie die 'com.google.gms.google-services' bereits von einem anderen Plugin installiert haben.

In Bezug auf mehrere Dex-Dateien definieren Sie Lcom/google/firebase/FirebaseException:

Dies wird durch doppelte Abhängigkeiten verursacht, höchstwahrscheinlich ein anderes Plugin, das auch com.google verwendet. gms:google-services , Firebase SDK oder Teile davon. Ich habe dies nicht selbst getestet, aber Sie sollten in der Lage sein, alle in Ihrem Projekt verwendeten Abhängigkeiten aufzulisten und die Duplikate zu finden:
http://stackoverflow.com/questions/30648172/gradle-library-duplicates-in-dependencies

Wenn Sie eine GoogleService-Info.plist haben, wenn keine iOS-Plattform vorhanden ist, wird der "zweite Build-Fehler" verursacht. Ich würde empfehlen, dass GoogleService-Info.plist nur kopiert wird, wenn Plattform/ios vorhanden ist....

Sie können after_prepare.js patchen, um dies zu umgehen, obwohl ich meinen Patch noch nicht getestet habe. Ich poste es, wenn es funktioniert

@st8st8 Das Problem ist bereits behoben (in der Git-Version)

...
if(fileExists("GoogleService-Info.plist") && directoryExists("platforms/ios/")){
...

Ich bin gerade auf das gleiche Problem gestoßen und habe nach einer Weile sowohl die Dateien GoogleService-Info.plist als auch google-services.json erneut heruntergeladen und es hat einwandfrei funktioniert.

Ich habe das gleiche Problem mit ionisch. Ich behebe das, indem ich Plattform und Plugin entferne, dann Plattform und Plugin wieder hinzufüge, dann ist alles wieder ganz normal.
Für dieses Thema in ionic 2 schreibe ich dieses Tutorial .

Die Neuinstallation von cordova-plugin-firebase hat bei mir funktioniert

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen