Catch up on everthing we announced at this year's Firebase Summit. Learn more

استكشاف الأخطاء وإصلاحها والأسئلة الشائعة حول Unity و Firebase

تقدم هذه الصفحة نصائح واستكشاف الأخطاء وإصلاحها للمشكلات الخاصة بالوحدة التي قد تواجهها عند استخدام Firebase.

هل لديك تحديات أخرى أو لا ترى مشكلتك موضحة أدناه؟ تأكد من إطلاعك على Firebase التعليمات الرئيسي للالتعليمات أكثر عموم Firebase أو منتج معين.

توافق .NET عند استخدام Unity 2017.x والإصدارات الأحدث

يدعم Firebase .NET 4.x كخيار بناء تجريبي في Unity 2017 والإصدارات الأحدث. الإضافات Firebase استخدام مكونات SDK تحليل لتوفير بعض الفئات 4.x من صافي في الإصدارات السابقة من .NET.

ولذلك، فإن الوحدة Firebase SDK النسخة 5.4.0 وبعد ذلك تقدم الإضافات التي تتوافق مع أي من صافي 3.x أو صافي 4.x من في dotnet3 و dotnet4 الدلائل من Firebase الوحدة SDK.

إذا قمت باستيراد مكون إضافي لـ Firebase غير متوافق مع إصدار .NET المُمكّن في مشروعك ، فسترى أخطاء تجميع من بعض الأنواع في .NET framework التي يتم تنفيذها بواسطة Parse SDK.

لحل خطأ الترجمة ، إذا كنت تستخدم .NET 3.x:

  1. قم بإزالة أو تعطيل مكتبات DLL التالية لجميع الأنظمة الأساسية:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. قم بتمكين مكتبات DLL التالية لجميع الأنظمة الأساسية:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

لحل خطأ الترجمة ، إذا كنت تستخدم .NET 4.x:

  1. قم بإزالة أو تعطيل مكتبات DLL التالية لجميع الأنظمة الأساسية:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. قم بتمكين مكتبات DLL التالية لجميع الأنظمة الأساسية:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

إذا قمت باستيراد مكوّن إضافي Firebase آخر:

  • في مشروع الوحدة، انتقل إلى الأصول> لعب الخدمات محلل> نسخة معالج> تحديث لتمكين دلس الصحيحة للمشروع الخاص بك.

Unity 2017.1 تجميع IL2CPP في مشاريع .NET 4.x.

يدعم Firebase .NET 4.x كخيار بناء تجريبي في Unity 2017 والإصدارات الأحدث. الإضافات Firebase استخدام مكونات SDK تحليل لتوفير بعض الفئات 4.x من صافي في الإصدارات السابقة من .NET.

ولذلك، فإن الوحدة Firebase SDK النسخة 5.4.0 وبعد ذلك يوفر نوع دلس الشحن التي الأمام أنواع تحليل (على سبيل المثال، تنفيذ تحليل من System.Threading.Tasks.Task ) إلى إطار .NET. لسوء الحظ ، لا يقوم IL2CPP (مترجم يقوم بتحويل C # إلى C ++) الذي يتم شحنه في Unity 2017.1.x بمعالجة إعادة توجيه نوع DLL بشكل صحيح مما ينتج عنه أخطاء إنشاء مشابهة لما يلي:

Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>

لا يوجد حاليًا حل بديل متاح لأخطاء إنشاء .NET 4.x IL2CPP في Unity 2017.1 ، لذلك يجب عليك الترقية إلى Unity 2017.2 أو أحدث لاستخدام .NET 4.x في المشروعات المترجمة باستخدام IL2CPP.

Unity 2017.2 الشبكات

تنشئ قاعدة بيانات Firebase Realtime اتصالات شبكة TLS باستخدام مكدس الشبكات .NET. تتعطل وظيفة TLS في Unity 2017.2 عند استخدام .NET 4.6 مما يتسبب في فشل المكون الإضافي لقاعدة بيانات Realtime في المحررين وعلى سطح المكتب.

لا يوجد حل بديل لهذه المشكلة ، لذلك يجب عليك استخدام إصدار مختلف من Unity ، على سبيل المثال الإصدار 2017.1 أو 2017.3.

ملف تهيئة Firebase Android مفقود في Unity 2020

من أجل الإصدارات دعم الوحدة التي ليس لديها القدرة على تخصيص بناء Gradle، يولد Firebase أداة محرر Assets/Plugins/Android/Firebase/res/values/google-services.xml كمورد الروبوت ليتم تعبئتها إلى إصدار Android ، بحيث يمكن لـ Firebase SDK استخدامه لتهيئة مثيل FirebaseApp الافتراضي.

في الوحدة عام 2020، ويجب أن تكون جميع الموارد الروبوت في الدلائل مع .androidlib لاحقة. إذا كان المشروع يستخدم SDK Firebase أن يولد Assets/Plugins/Android/Firebase دليل تسميته إلى Assets/Plugins/Android/Firebase.androidlib . تأكد من أنه يحتوي على AndroidManifest.xml ، project.properties و res/values/google-services.xml .

مشكلة في dex واحد أثناء إنشاء تطبيق Android

أثناء إنشاء تطبيق Android ، قد تواجه إخفاقًا في الإنشاء يتعلق بامتلاك ملف dex واحد. تبدو رسالة الخطأ مشابهة لما يلي ، إذا تم تكوين مشروعك لاستخدام نظام إنشاء Gradle.

Cannot fit requested classes in a single dex file.

في Dalvik قابل للتنفيذ ( .dex تستخدم) الملفات لعقد مجموعة من تعريفات فئة وما يرتبط بها من بيانات مساعد من أجل تطبيقات الروبوت ( .apk ). يقتصر ملف dex الفردي على الإشارة إلى 65536 طريقة. سيفشل الإصدار إذا تجاوز العدد الإجمالي للطرق من جميع مكتبات Android في مشروعك هذا الحد.

أدخلت وحدة تصغير الحجم في 2017.2، والذي يستخدم Proguard (أو أدوات أخرى في بعض الإصدارات الوحدة) لتجريد من التعليمات البرمجية غير المستخدمة، والتي يمكن أن تقلل من عدد من الطرق المشار إليها في ملف التنفيذ المباشر واحد. يمكن العثور على الخيار في إعدادات لاعب> الروبوت> تحرير إعدادات> صغر. قد تختلف الخيارات في إصدار مختلف من Unity ، لذا يرجى الرجوع إلى وثائق الوحدة الرسمية.

وإذا كان عدد من الطرق المشار إليها لا يزال يتجاوز الحد، هناك خيار آخر هو تمكين multidex . هناك طرق متعددة لتحقيق ذلك في الوحدة:

  • إذا Custom Gradle Template تحت Player Settings تمكين تعديل mainTemplate.gradle .
  • إذا كنت تستخدم الروبوت Studio لإنشاء المشروع تصديرها، تعديل مستوى الوحدة النمطية build.gradle الملف.

مزيد من التفاصيل يمكن العثور عليها في دليل المستخدم multidex .

دعم Java 8 وإلغاء تحديده لنظام Android الذي تم إنشاؤه في Unity 2017 و Unity 2018 (Firebase Unity SDK 8.0.0 والإصدارات الأحدث)

في مايو 2021 (Firebase BOM v28.0.0)، Firebase desugaring المعوقين لجميع المكتبات الروبوت (انظر الملاحظة الإفراج ). عند إنشاء تطبيق Android باستخدام Firebase Unity SDK (8.0.0 والإصدارات الأحدث) ، قد ترى خطأ الإصدار التالي:

> Error while dexing.
 The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle

يؤثر هذا التغيير على إصدارات Android في Unity 2017 و Unity 2018 فقط. إصدارات أحدث من الوحدة تضاف compileOptions كتلة افتراضيا في ملفات البناء gradle. لإصلاح خطأ الإصدار هذا في Unity 2017 و Unity 2018 ، قم بأحد الإجراءات التالية:

  • إضافة compileOptions كتلة قالب gradle الخاص بك:

    1. استخدام Gradle كنظام بناء.
    2. تمكين Custom Gradle Template تحت Player Settings .
    3. أضف الأسطر التالية إلى mainTemplate.gradle (أو على مستوى وحدة build.gradle إذا تصدير مشروع لالروبوت ستوديو):

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • بدلاً من ذلك ، قم بزيادة minSdkVersion لمشروع Android الخاص بك إلى 26 أو أعلى.

انظر أيضا استكشاف الأخطاء وإصلاحها الروبوت - desugaring فشل بناء .

مشكلات عند الإنشاء لنظام iOS باستخدام Cocoapods

عند الإنشاء لنظام iOS ، قد يفشل تثبيت Cocoapod مع وجود خطأ حول لغة اللغة ، أو ترميز UTF-8. توجد حاليًا عدة طرق مختلفة للتغلب على هذه المشكلة.

  • من محطة، تشغيل pod install مباشرة، وفتح ملف xcworkspace الناتجة عن ذلك.

  • قم بتخفيض إصدار Cocoapods إلى 1.10.2. المشكلة موجودة فقط في الإصدار 1.11 والإصدارات الأحدث.

  • في حياتك ~/.bash_profile أو ما يعادلها، إضافة export LANG=en_US.UTF-8