Cordova-plugin-firebase: Kesalahan pada build kedua

Dibuat pada 29 Jun 2016  ·  22Komentar  ·  Sumber: arnesson/cordova-plugin-firebase

Halo,
Terima kasih untuk proyek ini dan pekerjaan Anda yang luar biasa!

Saya punya masalah dalam proyek ionik.
Pertama, saya menambahkan string di config.xml saya:
<plugin name="cordova-plugin-firebase" spec="https://github.com/arnesson/cordova-plugin-firebase" />
Kedua, saya meletakkan google-services.json (yang saya dapatkan dari konsol web firebase) di direktori root.
Saya menjalankan build saya, dan ini berfungsi:

$ 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

Tapi build kedua saya selalu gagal ...

$ 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

Saya mencoba menginstal plugin dengan cordova plugin add https://github.com/arnesson/cordova-plugin-firebase.git --save . Namun dalam kasus ini, build pertama pun crash dengan Error: Invalid data, chunk must be a string or buffer, not object

Dan ketika saya memulai aplikasi Android dengan build pertama, kode di bawah ini tidak berfungsi untuk saya:

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);
    });

  });
})

Kode ini mengembalikan ["Token", "null"] ke konsol.

Terima kasih sebelumnya.

Semua 22 komentar

apakah Anda mendapatkan penipuan atau nilai aneh di platform/andoid/res/values/strings.xml?

coba jalankan cordova, persiapkan Android sebelum membangun (walaupun seharusnya berfungsi tanpa itu)

Masalah yang sama di sini. Di strings.xml saya punya:

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

Hapus google_app_id dari string.xml dan coba lagi. Saya telah menghapus dan itu berfungsi untuk saya.

Bagaimana dengan ios? Apakah kamu punya ide?

Tidak. Saya tidak punya ide untuk iOS. Saya pikir Anda perlu menambahkan file GoogleService-Info.plist di proyek iOS dan menginstal Pod.
Untuk Anda, apakah ini mulai berfungsi di Android sekarang?

Tidak, saya mendapatkan Kesalahan: data tidak valid ketika saya mencoba menirunya. Saya kira kait persiapan cordova mengubah file kembali.

Tetapi saya lebih tertarik untuk membuatnya bekerja di ios. Di ios saya memiliki masalah build: https://github.com/arnesson/cordova-plugin-firebase/issues/11

@raducostea - Saya menyarankan Anda untuk menggunakan APN (Apple Push Notification). Berikut ini tautan plugin: https://github.com/phonegap-build/PushPlugin. Ini bekerja sangat akurat untuk saya di iOS.

@dhruv270 saya sudah menggunakan itu. Saya ingin plugin ini untuk bagian analitik merekam peristiwa dan menambahkannya di dalam analitik google.

Kesalahan: Data tidak valid muncul karena salinan google-services.json dan googleService-info.plist ke folder platform , jika folder platform dan json, plist tidak ada itu menunjukkan kesalahan.
Saya memperbaikinya dengan menambahkan folder platform dan json , file plist. Maaf untuk bahasa Inggris saya yang buruk

Ya, Anda perlu membuat proyek di konsol firebase. Dan tambahkan aplikasi dalam proyek itu dengan menambahkan nama paket aplikasi/id bundel Anda. Anda akan mendapatkan google-services.json untuk Android dan GoogleService-Info.plist untuk iOS. File itu yang perlu Anda tambahkan di proyek Anda.

pastikan Anda meletakkan file di ROOT proyek Anda, di samping config.xml dll, bukan di misalnya platform atau www.

@raducostea @dhruv270 Mengenai APN dan push, saya sarankan menggunakan plugin ini untuk itu juga. PushPlugin pada akhirnya akan beralih ke Firebase FCM juga (karena GCM tidak digunakan lagi). FCM menggunakan APN untuk IOS jadi hal yang sama, tetapi Anda mendapatkan manfaat dari antarmuka umum di semua platform

Sudah melakukan itu tetapi saya mendapatkan kesalahan kompilasi. Periksa https://github.com/arnesson/cordova-plugin-firebase/issues/11

Saya tidak memiliki penipuan atau nilai aneh di strings.xml.
Saya menginstal ulang cordova-plugin-firebase dan membuat "cordova bersiap". Setelah itu saya melihat nilai baru di strings.xml:

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

Dan ketika saya membuat kesalahan yang sama lagi:
Kesalahan: Data tidak valid, potongan harus berupa string atau buffer, bukan objek

Apakah Anda menambahkan platform ios dan android?

Setelah saya membangun Android, saya mendapatkan kesalahan ini

** PENGECUALIAN TOP-LEVEL YANG TAK TERDUGA:
com.android.dex.DexException: Beberapa file dex mendefinisikan Lcom/google/firebase/FirebaseException;
di com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:579)
di com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:535)
di com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:517)
di com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164)
di com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
di com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)
di com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
di com.android.dx.command.dexer.Main.run(Main.java:277)
di com.android.dx.command.dexer.Main.main(Main.java:245)
di com.android.dx.command.Main.main(Main.java:106)

GAGAL**

Saya memiliki masalah yang sama dengan @neosekar . Ada ide?

EDIT:

Ditemukan lebih lanjut tentang ini di internet:

Sepertinya kami mencapai batas jumlah metode karena ketergantungan yang besar. Saya akan mencoba mencari perbaikan.

EDIT 2:

Saya memperbaikinya dengan melakukan hal berikut:

  • Hapus baris 5,6,7 dari /plugins/cordova-plugin-firebase/src/Android/build.gradle
  • Hapus baris 1 dari /plugins/cordova-plugin-firebase/src/Android/build-extras.gradle
  • Hapus /platform/folder android
  • Tambahkan platform (platform cordova tambahkan android)
  • Bangun/Jalankan (cordova menjalankan Android --device)

Namun saya pikir ini hanya berfungsi ketika Anda sudah menginstal 'com.google.gms.google-services' oleh plugin lain.

Mengenai Beberapa file dex, tentukan Lcom/google/firebase/FirebaseException:

Ini disebabkan oleh ketergantungan duplikat, kemungkinan besar plugin lain yang juga menggunakan com.google. gms:google-services , Firebase SDK atau bagiannya. Saya belum menguji ini sendiri tetapi Anda harus dapat membuat daftar semua dependensi yang digunakan dalam proyek Anda dan menemukan duplikatnya:
http://stackoverflow.com/questions/30648172/gradle-library-duplicates-in-dependencies

Memiliki GoogleService-Info.plist ketika tidak ada platform ios akan menyebabkan "kesalahan build kedua". Saya akan merekomendasikan GoogleService-Info.plist disalin hanya jika platform/ios ada....

Anda dapat menambal after_prepare.js untuk mengatasi ini, meskipun saya belum menguji tambalan saya. Saya akan mempostingnya jika berhasil

@st8st8 Masalahnya sudah diperbaiki (pada versi git)

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

Saya baru saja menemukan masalah yang sama dan setelah beberapa saat baru saja mengunduh ulang file GoogleService-Info.plist dan google-services.json dan itu berfungsi dengan baik.

Saya menghadapi masalah yang sama dengan ionic. Saya memperbaikinya dengan menghapus platform dan plugin kemudian menambahkan lagi platform dan plugin, maka semuanya benar-benar normal kembali.
Untuk masalah ini di ionic 2 saya menulis tutorial ini.

Menginstal ulang cordova-plugin-firebase bekerja untuk saya

Apakah halaman ini membantu?
0 / 5 - 0 peringkat