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

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

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

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

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

لذلك ، يوفر الإصدار 5.4.0 من Firebase Unity SDK والإصدارات الأحدث مكونات إضافية متوافقة مع .NET 3.x أو .NET 4.x في dotnet3 و dotnet4 من Firebase Unity 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 الخاص بك ، انتقل إلى Assets > Play Services Resolver > Version Handler > Update لتمكين مكتبات DLL الصحيحة لمشروعك.

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

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

لذلك ، يوفر الإصدار 5.4.0 من Firebase Unity SDK والإصدارات الأحدث إعادة توجيه نوع مكتبات DLL التي تعيد توجيه أنواع التحليل (على سبيل المثال ، تطبيق تحليل 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

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

في Unity 2020 ، يجب أن تكون جميع موارد Android في أدلة مع لاحقة .androidlib . إذا كان مشروعك يستخدم Firebase SDK الذي ينشئ دليل 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 Executable ( .dex ) للاحتفاظ بمجموعة من تعريفات الفئات والبيانات المساعدة المرتبطة بها لتطبيقات Android ( .apk ). يقتصر ملف dex الفردي على الإشارة إلى 65536 طريقة. سيفشل الإصدار إذا تجاوز العدد الإجمالي للطرق من جميع مكتبات Android في مشروعك هذا الحد.

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

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

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

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

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

في مايو 2021 (Firebase BoM v28.0.0) ، قام Firebase بتعطيل إلغاء الأخطاء لجميع مكتبات Android (انظر ملاحظة الإصدار ). عند إنشاء تطبيق 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 فقط. تضيف الإصدارات الأحدث من Unity كتلة compileOptions افتراضيًا في ملفات بناء gradle. لإصلاح خطأ الإصدار هذا في Unity 2017 و Unity 2018 ، قم بأحد الإجراءات التالية:

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

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

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

راجع أيضًا استكشاف أخطاء Android وإصلاحها - إلغاء أخطاء الإنشاء .

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

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

  • من الجهاز ، قم بتشغيل pod install مباشرة ، وافتح ملف xcworkspace الناتج.

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

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

كيفية تحديث إصدار Firebase Unity SDK

تعتمد عملية تحديث إصدارات Firebase Unity SDK على كيفية استيرادها في البداية. فيما يلي طريقتان بديلتان للاستيراد:

  • استيراد ملفات .unitypackage ضمن Assets/ دليل مشروعك
  • الاستيراد باستخدام Unity Package Manager (UPM)
    • هذه هي الطريقة الموصى بها لإدارة الحزم في Unity 2018.4+.
    • استخدم هذه الطريقة لجعل تحديثات الإصدار المستقبلية أسهل ومنظف Assets/ الدليل.

في مشروع Unity الخاص بك ، يجب عليك استخدام طريقة استيراد واحدة فقط لإدارة جميع حزم Firebase الخاصة بك. يمكن استخدام الإرشادات أدناه ليس فقط لتحديث إصدار الحزم الفردية ، ولكن أيضًا ، إذا لزم الأمر ، لترحيل إدارة الحزم إلى UPM (طريقة الاستيراد الموصى بها).