تحديد المشاكل وحلّها الأسئلة الشائعة حول Unity وFirebase

تقدّم هذه الصفحة نصائح وتساعد في تحديد المشاكل وحلّها في ما يتعلّق بمشاكل 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 ميزة Minification في الإصدار 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، قد تفشل عملية الإنشاء في خطوة dexing، وعادةً في مهمة Gradle ':launcher:mergeExtDexDebug'، حيث سيظهر أنّ "تعذّر تحويل" إحدى مكتبات Android. يرجع ذلك إلى خطأ في أداة dex التلقائية في Android SDK التي تستخدمها معظم برامج تعديل Unity، ويمكن حلّها بعدة طرق مختلفة:

  • اضبطوا minSdkVersion على 24.
  • فعِّلوا ميزة Android minification في إعدادات المشغّل > 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. يمكن استخدام التعليمات أدناه ليس فقط لتحديث إصدار الحزم الفردية، ولكن أيضًا لنقل إدارة الحزم إلى UPM (طريقة الاستيراد المُوصى بها)، إذا لزم الأمر.