تقدّم هذه الصفحة نصائح وخطوات تحديد المشاكل وحلّها المتعلّقة بمنصّة 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:
- إزالة مكتبات الربط الديناميكي التالية أو إيقافها على جميع الأنظمة الأساسية:
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:
- إزالة مكتبات الربط الديناميكي التالية أو إيقافها على جميع الأنظمة الأساسية:
Parse/Plugins/Unity.Compat.dll
Parse/Plugins/Unity.Tasks.dll
- تفعيل مكتبات الربط الديناميكي التالية لجميع الأنظمة الأساسية:
Parse/Plugins/dotNet45/Unity.Compat.dll
Parse/Plugins/dotNet45/Unity.Tasks.dll
في حال استيراد مكوّن إضافي آخر من Firebase:
- في مشروع Unity، انتقِل إلى مواد العرض > أداة حل خدمات Play > معالج الإصدار > تحديث لتفعيل مكتبات الربط الديناميكي الصحيحة لمشروعك.
تجميع 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++ ) الذي تم شحنه في Unity 2017.1.x
مكتبات الربط الديناميكي الخاصة بنوع إعادة التوجيه بشكل صحيح، ما يؤدي إلى إنشاء أخطاء
تشبه ما يلي:
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
لدعم إصدارات Unity التي لا تتضمّن إمكانية تخصيص إصدار Gradle، تُنشئ أداة تعديل Firebase
Assets/Plugins/Android/Firebase/res/values/google-services.xml
كمورد Android يتم تضمينه في إصدار Android، بحيث يمكن لحزمة تطوير البرامج (SDK) لمنصة Firebase استخدامها لإعداد مثيل Firebase التلقائي.
في 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 نموذج Minification في العام 2017.2، وهي تستخدم Proguard (أو أدوات أخرى في بعض إصدارات Unity) لإزالة الرموز البرمجية غير المستخدَمة، ما قد يؤدي إلى تقليل إجمالي عدد الأساليب المُشار إليها في ملف dex واحد. يمكن العثور على الخيار في إعدادات المشغّل > Android > إعدادات النشر > تصغير حجم الملف. قد تختلف الخيارات في إصدارات Unity المختلفة، لذا يُرجى الرجوع إلى مستندات Unity الرسمية .
إذا استمر عدد الطرق المُشار إليها في تجاوز الحدّ المسموح به، يمكنك
تفعيل multidex
كخيار آخر. تتوفّر عدة طرق لتحقيق ذلك في مفهوم الانسجام:
- إذا كان الخيار
Custom Gradle Template
ضمنPlayer Settings
مفعّلاً، عدِّلmainTemplate.gradle
. - إذا كنت تستخدم "استوديو Android" لإنشاء المشروع الذي تم تصديره، عدِّلملف
build.gradle
على مستوى الوحدة.
يمكنك الاطّلاع على مزيد من التفاصيل في دليل مستخدم حِزم multidex.
إتاحة استخدام Java 8 وإزالة الترميز البرمجي لإصدارات Android في Unity 2017 وUnity 2018 (حزمة تطوير البرامج (SDK) لـ Firebase Unity 8.0.0 والإصدارات الأحدث)
في أيار (مايو) 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: أخطاء الإنشاء في إزالة الترميز البرمجي المتوافق مع الإصدارات القديمة من 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
تعتمد عملية تحديث إصدارات حزم Unity SDK من Firebase على طريقة استيرادها في البداية. في ما يلي الطريقتان البديلتان للاستيراد:
- استيراد ملفات
.unitypackage
ضمن دليلAssets/
في مشروعك - الاستيراد باستخدام
Unity Package Manager
(UPM)
- هذه هي الطريقة المُقترَحة لإدارة الحِزم في الإصدار 2018.4 من Unity والإصدارات الأحدث.
- استخدِم هذه الطريقة لتسهيل تحديثات الإصدارات المستقبلية وجعل
Assets/
الدليل أنظف.
في مشروع Unity، يجب استخدام طريقة استيراد واحدة فقط لإدارة كل حِزم Firebase. يمكن استخدام التعليمات أدناه ليس فقط لتعديل إصدار حزم فردية، ولكن أيضًا لنقل إدارة الحزم إلى أداة UPM (طريقة الاستيراد المقترَحة) إذا لزم الأمر.