تقدّم هذه الصفحة نصائح حول المشاكل المتعلّقة بمبادئ Unity وكيفية تحديد المشاكل وحلّها. التي قد تواجهها عند استخدام Firebase.
هل لديك تحديات أخرى أو لم تظهر مشكلتك الموضّحة أدناه؟ احرص على التحقق من الأسئلة الشائعة حول Firebase للحصول على المزيد من خدمات Firebase الأسئلة الشائعة الخاصة بالمنتج.
التوافق مع .NET عند استخدام Unity 2017.x والإصدارات الأحدث
يتيح Firebase استخدام .NET 4.x كخيار إصدار تجريبي في Unity 2017 لاحقًا. تستخدم مكونات Firebase الإضافية مكونات تحليل حزمة SDK لتوفير بعض 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
- تمكين مكتبات الربط الديناميكي التالية لجميع الأنظمة الأساسية:
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 > معالج الإصدار > تعديل لتمكين مكتبات الربط الديناميكي الصحيحة لمشروعك.
تجميع Unity 2017.1 IL2CPP في مشاريع .NET 4.x
يتيح Firebase استخدام .NET 4.x كخيار إصدار تجريبي في Unity 2017 لاحقًا. تستخدم مكونات Firebase الإضافية مكونات تحليل حزمة SDK لتوفير بعض NET 4.x.في الإصدارات السابقة من .NET.
لذلك، يوفّر الإصدار 5.4.0 والإصدارات الأحدث من حزمة تطوير البرامج (SDK) لنظام التشغيل Firebase Unity النوع
إعادة توجيه مكتبات الربط الديناميكي التي تعيد توجيه أنواع التحليل (على سبيل المثال، تحليل تنفيذ
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 أو إصدار أحدث لاستخدام .NET 4.x في باستخدام IL2CPP.
إنشاء الشبكات في Unity 2017.2
ينشئ Firebase Realtime Database اتصالات شبكة بروتوكول أمان طبقة النقل (TLS) باستخدام شبكات .NET حزمة. تعطّل وظيفة بروتوكول أمان طبقة النقل (TLS) في Unity 2017.2 عند استخدام الإصدار NET 4.6 مما يتسبّب في تعذُّر المكوّن الإضافي Realtime Database في المحرِّرين وعلى أجهزة الكمبيوتر المكتبي.
لا يتوفر حل لهذه المشكلة، لذا يجب استخدام إصدار مختلف من 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
. إذا كان مشروعك يستخدِم حزمة تطوير برامج (SDK) لمنصة Firebase تُنشئ
دليل "Assets/Plugins/Android/Firebase
"، يُرجى إعادة تسميته إلى
Assets/Plugins/Android/Firebase.androidlib
احرص على أن يحتوي على
AndroidManifest.xml
وproject.properties
و
res/values/google-services.xml
مشكلة في دليل المستندات الفردي أثناء إنشاء تطبيق Android
أثناء إنشاء تطبيق Android، قد تواجه خللاً في الإصدار يتعلق بوجود ملف dex واحد. تبدو رسالة الخطأ مماثلة لما يلي، إذا كان لاستخدام نظام إصدار Gradle.
Cannot fit requested classes in a single dex file.
تُستخدم ملفات Dalvik التنفيذية (.dex
) للاحتفاظ بمجموعة من تعريفات الفئة.
والبيانات الإضافية المرتبطة بها لتطبيقات Android (.apk
). ملف dex واحد
بالرجوع إلى 65,536 طريقة فقط. سيفشل الإصدار إذا كان إجمالي
يتجاوز عدد الطرق من جميع مكتبات Android في مشروعك هذا الحد.
مفهوم Unity هو التخفيف من الصعوبات في 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 (الإصدار 8.0.0 أو إصدار أحدث من حزمة تطوير البرامج (SDK) لمنصّة Firebase)
في أيار (مايو) 2021 (الإصدار 28.0.0 من Firebase BoM)، أوقف Firebase ميزة إزالة الأخطاء في جميع مكتبات Android (اطّلِع على ملاحظة الإصدار). عند إنشاء تطبيق Android باستخدام حزمة تطوير البرامج (SDK) Unity من Firebase (الإصدار 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 وحلّها - إزالة أخطاء الإصدارات.
مشاكل متعلقة بالإنشاء لأجهزة iOS باستخدام Cocoapods
عند إنشاء تطبيقات لنظام التشغيل iOS، قد يفشل تثبيت Cocoapod مع ظهور خطأ حول لغة اللغة، أو ترميز UTF-8. تتوفر حاليًا عدة طرق مختلفة لحل هذه المشكلة.
من الوحدة الطرفية، شغِّل
pod install
مباشرةً، وافتح xcworkspace.الرجوع إلى إصدار سابق من Cocoapods إلى الإصدار 1.10.2 المشكلة موجودة فقط في الإصدار 1.11 والإصدارات الأحدث.
في
~/.bash_profile
أو ما يعادله، أضِفexport LANG=en_US.UTF-8
.
طريقة تحديث إصدار حِزم تطوير البرامج (SDK) لمنصة Firebase Unity
تعتمد عملية تحديث إصدارات Firebase Unity SDK على كيفية تم استيرادها في البداية. في ما يلي طريقتا الاستيراد البديلتان:
- استيراد ملفات
.unitypackage
ضمن دليلAssets/
لمشروعك - استيراد البيانات باستخدام
مدير حزم Unity
(UPM)
- وهذه هي الطريقة الموصى بها لإدارة الحزم في إصدار Unity 2018.4 والإصدارات الأحدث.
- استخدِم هذه الطريقة لتسهيل إجراء تحديثات الإصدار المستقبلية وتسهيل مهام
Assets/
. منظف الدليل.
ويجب استخدام طريقة استيراد واحدة فقط في مشروع Unity لإدارة جميع حِزم Firebase. لا تُستخدَم الإرشادات الواردة أدناه لتحديث من الحزم الفردية، وأيضًا لنقل الحزمة إذا لزم الأمر. إدارة المنتجات إلى UPM (طريقة الاستيراد الموصى بها).