تحديد المشاكل وحلّها الأسئلة الشائعة حول 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 ميزة تصغير حجم الرموز في الإصدار 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 التلقائية في حزمة تطوير البرامج (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) (طريقة الاستيراد المُوصى بها) إذا لزم الأمر.