تقدّم هذه الصفحة نصائح وحلولاً للمشاكل المتعلّقة بـ 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على مستوى الوحدة.
يتوفّر المزيد من المعلومات في دليل مستخدمي ملفات DEX المتعددة.
مشاكل عند إنشاء تطبيقات لنظام التشغيل Android باستخدام minSdkVersion 23
عند إنشاء إصدار لنظام التشغيل Android، إذا كنت تستهدف الإصدار minSdkVersion 23، قد يتعذّر تنفيذ خطوة dexing، عادةً في مهمة Gradle ':launcher:mergeExtDexDebug'، حيث ستظهر رسالة "تعذّر تحويل" إحدى مكتبات Android. يحدث ذلك بسبب خطأ في أداة dex التلقائية في حزمة تطوير البرامج (SDK) لنظام التشغيل Android التي تستخدمها معظم برامج تحرير Unity، ويمكن إصلاح هذا الخطأ بعدة طرق مختلفة:
- اضبط قيمة
minSdkVersionعلى 24. - فعِّل ميزة إزالة البيانات غير الضرورية في Android من خلال الانتقال إلى Player Settings (إعدادات المشغّل) > Android > Publishing Settings (إعدادات النشر) > Minify (إزالة البيانات غير الضرورية)
- حدِّد إصدارًا مختلفًا من أداة 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
(UPM)
- هذه هي الطريقة المقترَحة لإدارة الحِزم في Unity 2018.4 والإصدارات الأحدث.
- استخدِم هذه الطريقة لتسهيل تحديثات الإصدارات المستقبلية وجعل دليل
Assets/أكثر تنظيمًا.
في مشروع Unity، يجب استخدام طريقة استيراد واحدة فقط لإدارة جميع حزم Firebase. يمكن استخدام التعليمات أدناه ليس فقط لتحديث إصدار الحزم الفردية، ولكن أيضًا، إذا لزم الأمر، لنقل إدارة الحزم إلى UPM (طريقة الاستيراد المقترَحة).