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