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