Cordova-plugin-firebase: خطأ في البناء الثاني

تم إنشاؤها على ٢٩ يونيو ٢٠١٦  ·  22تعليقات  ·  مصدر: arnesson/cordova-plugin-firebase

مرحبا،
شكرا لك على هذا المشروع وعلى عملك الرائع!

لدي مشكلة في المشروع الأيوني.
أولاً ، أقوم بإضافة السلسلة في ملف config.xml الخاص بي:
<plugin name="cordova-plugin-firebase" spec="https://github.com/arnesson/cordova-plugin-firebase" />
ثانيًا ، وضعت google-services.json (التي حصلت عليها من وحدة تحكم الويب Firebase) في الدليل الجذر.
أدير بنائي ، وهذا يعمل:

$ 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

لكن بنائي الثاني يفشل دائمًا ...

$ 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

كنت أحاول تثبيت البرنامج المساعد بواسطة cordova plugin add https://github.com/arnesson/cordova-plugin-firebase.git --save . ولكن في هذه الحالة ، تعطل الإصدار الأول حتى مع Error: Invalid data, chunk must be a string or buffer, not object

وعندما أبدأ تطبيق android مع أول إصدار ، لا يعمل الكود أدناه بالنسبة لي:

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

  });
})

يقوم هذا الرمز بإرجاع ["رمز مميز" ، "فارغ"] لوحدة التحكم.

شكرا لكم مقدما.

ال 22 كومينتر

هل تحصل على أي مغفلين أو قيم غريبة في platform / andoid / res / القيم / strings.xml؟

حاول تشغيل كوردوفا ، جهز android قبل البناء (على الرغم من أنه يجب أن يعمل بدونه)

نفس المشكلة هنا. في ملف strings.xml ، لدي:

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

قم بإزالة google_app_id من string.xml وحاول مرة أخرى. لقد قمت بإزالة وهو يعمل بالنسبة لي.

ماذا عن iOS؟ هل لديك أي فكرة؟

لا. ليس لدي أي فكرة عن iOS. أعتقد أنك بحاجة إلى إضافة ملف GoogleService-Info.plist في مشروع iOS وتثبيت Pod.
بالنسبة لك ، هل بدأ العمل في Android الآن؟

كلا ، أتلقى خطأ: بيانات غير صالحة عندما أحاول محاكاتها. أعتقد أن خطاف إعداد كوردوفا يغير الملف مرة أخرى.

لكنني مهتم أكثر بجعلها تعمل في iOS. في iOS لدي مشكلة في الإصدار: https://github.com/arnesson/cordova-plugin-firebase/issues/11

raducostea - أقترح عليك استخدام APN (إشعار Apple Push). هنا رابط البرنامج المساعد: https://github.com/phonegap-build/PushPlugin. إنه يعمل بدقة كبيرة بالنسبة لي في iOS.

@ dhruv270 أنا أستخدم ذلك بالفعل. أريد هذا المكون الإضافي لجزء التحليلات لتسجيل الأحداث وإضافتها داخل تحليلات جوجل.

خطأ: ظهرت google-services.json و googleService-info.plist إلى مجلد الأنظمة الأساسية ، إذا لم يكن مجلد الأنظمة الأساسية و json موجودًا ، فسيظهر خطأ في plist.
لقد أصلحت عن طريق إضافة مجلد الأنظمة الأساسية وملف json ، plist. اسف على سوء لغتي الانجليزية

نعم ، أنت بحاجة إلى إنشاء مشروع في وحدة تحكم Firebase. وأضف تطبيقًا في هذا المشروع عن طريق إضافة اسم حزمة التطبيق / معرف الحزمة. سوف تحصل على google-services.json لنظام Android و GoogleService-Info.plist لنظام التشغيل iOS. هذا الملف الذي تحتاج إلى إضافته في مشروعك.

تأكد من وضع الملفات في ROOT لمشروعك ، جنبًا إلى جنب مع config.xml وما إلى ذلك ، وليس في الأنظمة الأساسية أو www.

raducostea @ dhruv270 فيما يتعلق بـ APN والدفع ، أقترح استخدام هذا المكون الإضافي لذلك أيضًا. سيتحول PushPlugin في النهاية إلى Firebase FCM أيضًا (منذ إيقاف GCM). يستخدم FCM APN لـ IOS لذا فهو نفس الشيء ، لكنك تستفيد من واجهة مشتركة عبر جميع الأنظمة الأساسية

فعلت ذلك بالفعل ولكني أتلقى أخطاء في التجميع. تحقق من https://github.com/arnesson/cordova-plugin-firebase/issues/11

ليس لدي أي مغفلين أو قيم غريبة في ملف strings.xml.
أعدت تثبيت cordova-plugin-firebase وعملت "cordova Preparation". بعد ذلك رأيت قيمًا جديدة في ملف strings.xml:

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

وعندما أقوم ببناء نفس الخطأ مرة أخرى:
خطأ: بيانات غير صالحة ، يجب أن تكون المجموعة سلسلة أو مخزنًا مؤقتًا ، وليس كائنًا

هل أضفت كلاً من نظامي iOS و android؟

بمجرد أن أقوم ببناء android ، حصلت على هذا الخطأ

** استثناء عالي المستوى غير متوقع:
com.android.dex.DexException: ملفات dex المتعددة تحدد Lcom / google / firebase / FirebaseException ؛
في com.android.dx.merge.DexMerger.readSortableTypes (DexMerger.java:579)
في com.android.dx.merge.DexMerger.getSortedTypes (DexMerger.java:535)
في com.android.dx.merge.DexMerger.mergeClassDefs (DexMerger.java:517)
في com.android.dx.merge.DexMerger.mergeDexes (DexMerger.java:164)
على com.android.dx.merge.DexMerger.merge (DexMerger.java:188)
في com.android.dx.command.dexer.Main.mergeLibraryDexBuffers (Main.java:504)
في com.android.dx.command.dexer.Main.runMonoDex (Main.java:334)
في com.android.dx.command.dexer.Main.run (Main.java:277)
في com.android.dx.command.dexer.Main.main (Main.java:245)
في com.android.dx.command.Main.main (Main.java:106)

فشل**

لدي نفس المشكلة مثل neosekar . أيه أفكار؟

تعديل:

تم العثور على المزيد حول هذا على الإنترنت:

يبدو أننا وصلنا إلى حد عدد الطرق بسبب التبعيات الكبيرة. سأحاول إيجاد حل.

تحرير 2:

أصلحته عن طريق القيام بما يلي:

  • قم بإزالة السطر 5،6،7 من /plugins/cordova-plugin-firebase/src/android/build.gradle
  • قم بإزالة السطر 1 من /plugins/cordova-plugin-firebase/src/android/build-extras.gradle
  • إزالة / منصات / مجلد android
  • إضافة منصة (منصة كوردوفا إضافة أندرويد)
  • بناء / تشغيل (كوردوفا تشغيل android - جهاز)

ومع ذلك ، أعتقد أن هذا لا يعمل إلا عندما يكون لديك بالفعل "com.google.gms.google-services" مثبت بواسطة مكون إضافي آخر.

فيما يتعلق بملفات dex المتعددة ، حدد Lcom / google / firebase / FirebaseException:

يحدث هذا بسبب تبعيات مكررة ، على الأرجح مكون إضافي آخر يستخدم أيضًا com.google. gms: خدمات google أو Firebase SDK أو أجزاء منها. لم أختبر هذا بنفسي ولكن يجب أن تكون قادرًا على سرد جميع التبعيات المستخدمة في مشروعك والعثور على التكرارات:
http://stackoverflow.com/questions/30648172/gradle-library-duplicates-in-dependencies

سيؤدي وجود GoogleService-Info.plist في حالة عدم وجود نظام أساسي لنظام ios إلى "خطأ الإصدار الثاني". أوصي بنسخ GoogleService-Info.plist فقط في حالة وجود النظام الأساسي / iOS ....

يمكنك تصحيح after_prepare.js للتغلب على هذا ، على الرغم من أنني لم أختبر التصحيح الخاص بي حتى الآن. سأقوم بنشره إذا كان يعمل

@ st8st8 تم إصلاح المشكلة بالفعل (في إصدار git)

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

لقد واجهت نفس المشكلة الآن وبعد فترة من الوقت أعدت تنزيل ملفات GoogleService-Info.plist و google-services.json وعملت بشكل جيد.

أواجه نفس المشكلة مع الأيونية. أقوم بإصلاح ذلك عن طريق إزالة النظام الأساسي والمكوِّن الإضافي ثم إضافة النظام الأساسي والمكوِّن الإضافي مرة أخرى ، ثم يصبح كل شيء طبيعيًا تمامًا مرة أخرى.
لهذه المشكلة في أيوني 2 أكتب هذا البرنامج التعليمي .

عملت إعادة تثبيت cordova-plugin-firebase بالنسبة لي

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات