تقدّم هذه الصفحة نصائح ومعلومات لتحديد المشاكل وحلّها في Unity التي قد تواجهها عند استخدام Firebase.
هل تواجه تحديات أخرى أو لا ترى مشكلتك موضّحة أدناه؟ يُرجى الاطّلاع على الأسئلة الشائعة الرئيسية حول Firebase للحصول على المزيد من الأسئلة الشائعة حول Firebase أو منتجاته.
مشكلة في ملف 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) لإزالة الرموز غير المستخدَمة، ما قد يؤدي إلى تقليل العدد الإجمالي للطُرق التي تتم الإشارة إليها في ملف dex واحد. يمكن العثور على الخيار في إعدادات المشغّل > Android > إعدادات النشر > تصغير. قد تختلف الخيارات في إصدارات Unity المختلفة، لذا يُرجى الرجوع إلى مستندات Unity الرسمية.
إذا كان عدد الطرق المشار إليها لا يزال يتجاوز الحدّ، يمكنك تفعيل multidex
. تتوفّر عدة طرق لتحقيق ذلك في Unity:
- في حال تفعيل
Custom Gradle Template
ضمنPlayer Settings
، عدِّلmainTemplate.gradle
. - إذا كنت تستخدم "استوديو Android" لإنشاء المشروع الذي تم تصديره، عدِّل ملف
build.gradle
على مستوى الوحدة.
يمكنك الاطّلاع على مزيد من التفاصيل في دليل مستخدم multidex.
مشاكل عند إنشاء إصدار Android باستخدام minSdkVersion 23
عند إنشاء إصدار لنظام التشغيل Android، إذا استهدفت الإصدار minSdkVersion
23، قد يتعذّر ذلك في خطوة إنشاء ملفات dex، وعادةً ما يحدث ذلك في مهمة Gradle ':launcher:mergeExtDexDebug'، حيث سيظهر الخطأ "تعذّر التحويل" لأحد مكتبات Android. يرجع السبب في ذلك إلى خطأ في أداة dex التلقائية في حزمة تطوير البرامج (SDK) لنظام التشغيل Android التي تستخدمها معظم برامج تعديل Unity، ويمكن إصلاح هذا الخطأ بعدة طرق مختلفة:
- اضبط قيمة
minSdkVersion
على 24. - فعِّل تصغير Android في إعدادات المشغّل > Android > إعدادات النشر > تصغير
- حدِّد إصدارًا مختلفًا من أداة dex عن طريق إضافة ما يلي إلى ملف
settingsTemplate.gradle
:
buildscript {
repositories {
mavenLocal()
maven { url 'https://maven.google.com' }
mavenCentral()
}
dependencies {
classpath 'com.android.tools:r8:8.3.37'
}
}
مشاكل عند إنشاء إصدار لنظام التشغيل iOS باستخدام Cocoapods
عند إنشاء تطبيق لنظام التشغيل iOS، قد يتعذّر تثبيت Cocoapod بسبب ظهور خطأ بشأن اللغة المحلية أو ترميز UTF-8. هناك حاليًا عدة طرق مختلفة لحلّ المشكلة.
من النافذة الطرفية، شغِّل
pod install
مباشرةً، وافتح ملف xcworkspace الناتج.ارجع إلى الإصدار 1.10.2 من Cocoapods. تحدث هذه المشكلة في الإصدار 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. يمكن استخدام التعليمات أدناه ليس فقط لتعديل إصدار الحِزم الفردية، ولكن أيضًا لنقل إدارة الحِزم إلى "مدير حِزم Unity" (UPM) (طريقة الاستيراد المُوصى بها)، إذا لزم الأمر.
تم استيراد الحِزم كملفات .unitypackage
إلى الدليل Assets/
إذا كانت حِزم Firebase في الدليل Assets/
، يتوفّر لك خياران لتعديل إصدار حزمة SDK:
الخيار 1 (يُنصح به): الانتقال إلى استخدام "إدارة حِزم Unity" (متاحة في Unity 2018.4 والإصدارات الأحدث)
- اتّبِع التعليمات التي تقدّمها Firebase لنقل إدارة الحِزم إلى UPM.
- على الرغم من أنّ هذه الطريقة تتطلّب إعدادًا أوليًا أكثر من مواصلة استخدام سير عمل
.unitypackage
، إلا أنّها توفّر سهولة في إجراء تحديثات لاحقة على إصدار حزمة SDK.
الخيار 2: مواصلة استخدام ملفات
.unitypackage
لاستيرادها إلى الدليلAssets/
استورِد كل حزمة للإصدار المعدَّل.
إذا نزّلت firebase_unity_sdk.zip من موقع Firebase الإلكتروني، تأكَّد من استيراد جميع
.unitypackages
من مجلدdotnet
الصحيح.- إذا كنت تستخدم Unity 2019 أو إصدارًا أحدث، استورِد من المجلد
dotnet4
. - بخلاف ذلك، اختَر إصدار وقت تشغيل البرامج النصية (Scripting Runtime Version) في إعدادات المشغّل (Player Settings)،
وإذا كان الخيار مضبوطًا على ".NET 3.x"، استورِد من المجلد
dotnet3
.
- إذا كنت تستخدم Unity 2019 أو إصدارًا أحدث، استورِد من المجلد
يجب أن تتم معالجة الكتابة فوق إصدارات الحزمة التي تم استيرادها سابقًا تلقائيًا من خلال "أداة إدارة التبعيات الخارجية" (التي يتم تضمينها تلقائيًا عند استيراد
.unitypackages
في Firebase).ومع ذلك، إذا تعذّر إكمال هذه العملية التلقائية، عليك حذف المجلدات التالية يدويًا ثم إعادة محاولة تنفيذ خطوة الاستيراد المذكورة أعلاه.
Assets/Editor Default Resources/Firebase
Assets/ExternalDependencyManager
Assets/Firebase
Assets/Parse
Assets/Plugins/iOS/Firebase
الحِزم التي تديرها "إدارة حِزم Unity"
إذا كانت حِزم Firebase تتم إدارتها من خلال UPM،
استورِد أحدث إصدار من حزمة SDK كـ .tgz
.
سيؤدي هذا الاستيراد تلقائيًا إلى استبدال الإصدار السابق.