تقدّم هذه الصفحة نصائح وخطوات تحديد المشاكل وحلّها المتعلّقة بمنصّة Unity التي قد تواجهها عند استخدام Firebase.
هل لديك مشاكل أخرى أو لا تظهر مشكلتك الموضّحة أدناه؟ يُرجى الاطّلاع على الأسئلة الشائعة الرئيسية حول Firebase للحصول على المزيد من الأسئلة الشائعة حول Firebase بشكل عام أو حول منتج معيّن.
التوافق مع .NET عند استخدام Unity 2017.x والإصدارات الأحدث
تتوافق Firebase مع .NET 4.x كخيار لإنشاء إصدار تجريبي في Unity 2017 والإصدارات اللاحقة. تستخدِم مكوّنات Firebase الإضافية مكونات حزمة تطوير البرامج (SDK) من Parse لتوفير بعض فئات .NET 4.x في الإصدارات السابقة من .NET.
لذلك، يقدّم الإصدار 5.4.0
من حزمة SDK Firebase Unity والإصدارات الأحدث منها مكوّنات إضافية
متوافقة مع .NET 3.x أو .NET 4.x في الدليلَين dotnet3
وdotnet4
لحزمة SDK Firebase Unity.
في حال استيراد مكوّن إضافي في Firebase غير متوافق مع إصدار .NET المفعَّل في مشروعك، ستظهر لك أخطاء تجميع من بعض الأنواع في إطار عمل .NET التي تنفّذها حزمة تطوير البرامج Parse SDK.
لحلّ خطأ الترجمة، إذا كنت تستخدم .NET 3.x:
- أزِل ملفات DLL التالية أو أوقِفها على جميع الأنظمة الأساسية:
Parse/Plugins/dotNet45/Unity.Compat.dll
Parse/Plugins/dotNet45/Unity.Tasks.dll
- فعِّل ملفات DLL التالية لجميع المنصات:
Parse/Plugins/Unity.Compat.dll
Parse/Plugins/Unity.Tasks.dll
لحلّ خطأ الترجمة، إذا كنت تستخدم .NET 4.x:
- أزِل ملفات DLL التالية أو أوقِفها على جميع الأنظمة الأساسية:
Parse/Plugins/Unity.Compat.dll
Parse/Plugins/Unity.Tasks.dll
- فعِّل ملفات DLL التالية لجميع المنصات:
Parse/Plugins/dotNet45/Unity.Compat.dll
Parse/Plugins/dotNet45/Unity.Tasks.dll
في حال استيراد مكوّن إضافي آخر من Firebase:
- في مشروعك على Unity، انتقِل إلى الأصول > Play Services Resolver > Version Handler > Update لتفعيل ملفات DLL الصحيحة لمشروعك.
تجميع IL2CPP في Unity 2017.1 في مشاريع .NET 4.x
تتوافق Firebase مع .NET 4.x كخيار لإنشاء إصدار تجريبي في Unity 2017 والإصدارات اللاحقة. تستخدِم مكوّنات Firebase الإضافية مكونات حزمة تطوير البرامج (SDK) من Parse لتوفير بعض فئات .NET 4.x في الإصدارات السابقة من .NET.
لذلك، يقدّم الإصدار 5.4.0 من حزمة تطوير البرامج (SDK) لنظام التشغيل Firebase Unity والإصدارات الأحدث مكتبات DLL لإعادة توجيه الأنواع التي تعيد توجيه أنواع Parse (على سبيل المثال، تنفيذ Parse ل
System.Threading.Tasks.Task
) إلى إطار عمل .NET. لا يعالج IL2CPP
(أداة تحويل تحوّل C# إلى C++) المضمّنة في الإصدار 2017.1.x من Unity
بشكل صحيح ملفات 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 Database اتصالات شبكة بروتوكول أمان طبقة النقل (TLS) باستخدام بنية برمجة التطبيقات .NET لشبكات الكمبيوتر. لا تعمل وظيفة بروتوكول أمان طبقة النقل (TLS) في Unity 2017.2 عند استخدام .NET 4.6، ما يؤدي إلى تعطُّل مكوّن Realtime Database الإضافي في المحرّرات وعلى أجهزة الكمبيوتر المكتبي.
لا تتوفّر طريقة بديلة لحلّ هذه المشكلة، لذا عليك استخدام إصدار مختلف من IDE IDE، مثل الإصدار 2017.1 أو 2017.3.
عدم توفّر ملف إعدادات Firebase لنظام التشغيل Android في Unity 2020
لكي تتوافق أداة Firebase Editor مع إصدارات Unity التي لا تتيح
تخصيص إصدار Gradle، تُنشئ الأداة ملف Assets/Plugins/Android/Firebase/res/values/google-services.xml
بصفته موارد Android
لتعبئته في إصدار Android، حتى تتمكّن حزمة تطوير البرامج (SDK) لمنصّة Firebase من استخدام
هذا الملف لإعداد مثيل FirebaseApp التلقائي.
في Unity 2020، يجب أن تكون جميع موارد Android في أدلة ذات إضافة
.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 Executable (.dex
) لتضمين مجموعة من تعريفات الفئات
والبيانات الملحقة المرتبطة بها لتطبيقات Android (.apk
). يقتصر ملف dex
واحد على الإشارة إلى 65,536 طريقة. سيتعذّر إنشاء الحِزمة إذا تجاوز إجمالي
عدد الطرق من جميع مكتبات Android في مشروعك هذا الحدّ.
طرحت Unity ميزة التصغير في الإصدار 2017.2، والتي تستخدِم أداة Proguard (أو أدوات أخرى في بعض إصدارات Unity) لإزالة الرموز البرمجية غير المستخدَمة، ما يمكن أن يؤدي إلى تقليل إجمالي عدد methods المُشار إليها في ملف dex واحد. يمكن العثور على الخيار في إعدادات المشغّل > Android > إعدادات النشر > تصغير. قد تختلف الخيارات في إصدارات Unity المختلفة، لذا يُرجى الرجوع إلى مستندات Unity الرسمية.
إذا استمر عدد الطرق المُشار إليها في تجاوز الحدّ المسموح به، يمكنك
تفعيل multidex
كخيار آخر. هناك عدة طرق لتحقيق ذلك في Unity:
- إذا كان الخيار
Custom Gradle Template
ضمنPlayer Settings
مفعّلاً، عدِّلmainTemplate.gradle
. - إذا كنت تستخدم "استوديو Android" لإنشاء المشروع الذي تم تصديره، عدِّلملف
build.gradle
على مستوى الوحدة.
يمكنك الاطّلاع على مزيد من التفاصيل في دليل مستخدم حِزم multidex.
إتاحة استخدام Java 8 وإزالة الترميز البرمجي لإصدارات Android في Unity 2017 وUnity 2018 (الإصدار 8.0.0 من حزمة تطوير البرامج (SDK) لبرنامج Firebase في Unity والإصدارات الأحدث)
في أيار (مايو) 2021 (الإصدار 28.0.0 من حِزم Firebase BoM)، أوقفت Firebase ميزة إزالة رمز Sugar لجميع مكتبات Android (اطّلِع على ملاحظة الإصدار). عند إنشاء تطبيق Android باستخدام حزمة تطوير البرامج (SDK) لمنصة Firebase في Unity (الإصدار 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:- استخدِم
Gradle
كنظام إنشاء. - فعِّل
Custom Gradle Template
ضمنPlayer Settings
. أضِف السطور التالية إلى
mainTemplate.gradle
(أوbuild.gradle
على مستوى الوحدة في حال تصدير مشروع إلى "استوديو Android"):android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }
- استخدِم
بدلاً من ذلك، يمكنك زيادة الإصدار minSdkVersion لمشروع Android إلى 26 أو إصدار أحدث.
اطّلِع أيضًا على تحديد مشاكل Android وحلّها - أخطاء الإنشاء في إزالة الترميز البرمجي المتوافق مع لغة Java القديمة.
مشاكل عند إنشاء تطبيق لنظام التشغيل iOS باستخدام Cocoapods
عند إنشاء تطبيق لنظام التشغيل iOS، قد يتعذّر تثبيت Cocoapod مع ظهور خطأ بشأن لغة التطبيق أو ترميز UTF-8. هناك حاليًا عدة طرق مختلفة لحلّ هذه المشكلة.
من نافذة Terminal، يمكنك تشغيل
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)
- هذه هي الطريقة المُقترَحة لإدارة الحِزم في الإصدار 2018.4 من Unity والإصدارات الأحدث.
- استخدِم هذه الطريقة لتسهيل تحديثات الإصدارات المستقبلية وجعل
Assets/
الدليل أكثر وضوحًا.
في مشروع Unity، يجب استخدام طريقة استيراد واحدة فقط لإدارة كل حِزم Firebase. يمكن استخدام التعليمات أدناه ليس فقط لتعديل إصدار حزم فردية، ولكن أيضًا لنقل إدارة الحزم إلى أداة UPM (طريقة الاستيراد المقترَحة) إذا لزم الأمر.