تصحيح أخطاء عملية إنشاء اللعبة وتثبيتها وتشغيلها

مقدمة

فيما يلي دليل لتصحيح أخطاء عملية التجميع والإنشاء لألعاب Unity باستخدام Firebase SDK for Unity. وهو يصف كيفية التحقيق في العديد من المشكلات الأكثر شيوعًا التي قد تواجهها وحلها أثناء تكوين لعبتك وإنشائها لمنصة جديدة أو بعد التحديث. يتم ترتيبه حسب وقت حدوث هذه الأخطاء في العملية. استشرهم بالترتيب واستمر في حل كل منهم.

بالإضافة إلى هذا المستند، راجع الأسئلة الشائعة حول Firebase for Unity لمزيد من المعلومات.

مشاكل تجميع وضع التشغيل

يمكن أن تحدث الفئة الأولى من مشكلات البناء أثناء الاختبار في المحرر قبل محاولة بدء إنشاء الهاتف المحمول. يتعلق هذا القسم بجميع أخطاء Firebase التي تحدث قبل وأثناء وضع التشغيل.

عندما يبدأ Unity أو يكتشف تغييرات في التبعيات أو التعليمات البرمجية أو الأصول الأخرى، فإنه سيحاول إعادة بناء المشروع. إذا كان المشروع غير قادر على الترجمة في ذلك الوقت، فسيقوم المحرر بتسجيل أخطاء الترجمة إلى وحدة التحكم وإذا حاولت الدخول إلى وضع التشغيل، فسوف تتلقى رسالة خطأ منبثقة في علامة التبويب " مشهد" الخاصة بـ Unity والتي تنص على All compiler errors have to be fixed before you can enter playmode! .

الأنواع والفئات والأساليب والأعضاء المفقودة

تحدث العديد من مشكلات Firebase بسبب عدم قدرة المحرر والمترجم على العثور على الأنواع والفئات والأساليب والأعضاء الضرورية. الأعراض الشائعة لهذا هي المتغيرات التالية:

The type or namespace name '<CLASS OR NAMESPACE NAME>' could not be found. Are you missing a using directive or an assembly reference?

The type or namespace name <TYPE OR NAMESPACE NAME> does not exist in the namespace 'Firebase<.OPTIONAL NESTED NAMESPACE NAME PATH>' (are you missing an assembly reference?)

'<CLASS NAME>' does not contain a definition for '<MEMBER VARIABLE OR METHOD NAME>'

خطوات الحل:
  1. عندما تستخدم فئات أو أساليب Firebase في التعليمات البرمجية، تأكد من إتاحتها من خلال الحصول على توجيهات using الصحيحة لمنتجات Firebase المحددة المطلوبة.

    1. أمثلة من MechaHamster: المستوى الأعلى مع إصدار Firebase :
      1. using Firebase.RemoteConfig;
      2. using Firebase.Crashlytics;
  2. تأكد من أنك قمت باستيراد حزم Firebase المناسبة:

    1. لاستيراد الحزم المناسبة إما:
      1. أضف Firebase Unity SDK كـ .unitypackage أو
      2. ابحث في أحد البدائل وقم بتنفيذها في خيارات تثبيت Unity الإضافية .
    2. تأكد من أن كل منتج Firebase في مشروعك و EDM4U :
      • موجودين على نفس الإصدار
      • تم تثبيتها إما كـ .unitypackage حصريًا أو حصريًا من خلال Unity Package Manager.
  3. إذا قمت باستيراد Firebase Unity SDK قبل الإصدار "10.0.0" كـ .unitypackage s، فإن أرشيف Firebase Unity SDK المضغوط يحتوي على حزم لدعم كل من .NET 3.x و.NET 4.x. تأكد من أنك قمت فقط بتضمين مستوى .NET Framework المتوافق في مشروعك:

    1. تمت مناقشة التوافق بين إصدارات Unity Editor ومستويات .NET Frameworks في إضافة Firebase إلى مشروع Unity الخاص بك .
    2. إذا قمت عن طريق الخطأ باستيراد حزم Firebase الخاصة بك على مستوى .NET Framework خاطئ أو كنت بحاجة إلى التبديل من استخدام .unitypackage إلى أحد خيارات تثبيت Unity الإضافية ، فإن الطريقة الأنظف هي إزالة كل حزمة Firebase من خلال الطرق المذكورة في قسم الترحيل هذا و ثم أعد استيراد جميع حزم Firebase مرة أخرى.
  4. تأكد من أن المحرر الخاص بك يقوم بإعادة بناء مشروعك وأن محاولاتك للتشغيل تعكس أحدث حالة لمشروعك:

    1. افتراضيًا، يتم تعيين محرر Unity لإعادة البناء عند اكتشاف تغييرات في الأصل أو التكوين.
    2. من الممكن أن تكون هذه الوظيفة قد تم تعطيلها وأن محرر Unity مضبوط على التحديث/إعادة الترجمة يدويًا . تحقق من هذا وحاول التحديث اليدوي إذا كان هذا هو الحال.

أخطاء وقت تشغيل وضع التشغيل

إذا بدأت لعبتك، ولكنها واجهت مشكلات مع Firebase أثناء التشغيل، فجرب ما يلي:

تأكد من موافقتك على حزم Firebase في "الأمان والخصوصية" على نظام التشغيل Mac OS

إذا ظهر لك، عند بدء تشغيل لعبتك في المحرر على نظام التشغيل Mac OS، مربع حوار يقول، "لا يمكن فتح FirebaseCppApp-<version>.bundle لأنه لا يمكن التحقق من المطور."، فيجب عليك الموافقة على ملف الحزمة المحدد هذا في قائمة الأمان والخصوصية في نظام Mac.

للقيام بذلك، انقر فوق أيقونة Apple > تفضيلات النظام > الأمان والخصوصية

في قائمة الأمان، في منتصف الصفحة تقريبًا، يوجد قسم يقول ""FirebaseCppApp-<version>.bundle" تم حظره من الاستخدام لأنه ليس من مطور محدد."

انقر فوق الزر المسمى "السماح على أي حال" .

c35166e224cce720.png

ارجع إلى Unity واضغط على Play مرة أخرى.

سترى بعد ذلك تحذيرًا مشابهًا للأول:

5ad9ddb0d3a52892.png

اضغط على "فتح" وسيتمكن برنامجك من المتابعة؛ لن يتم سؤالك عن هذا الملف بالذات مرة أخرى.

تأكد من أن مشروعك يحتوي على ملفات تكوين صالحة ويستخدمها

  1. تأكد من ضبط إعدادات البناء الخاصة بك على الهدف الذي تريده (iOS أو Android) في ملف > إعدادات البناء . للحصول على مناقشة أكثر اكتمالاً، اقرأ وثائق إعدادات بناء الوحدة .
  2. قم بتنزيل ملف التكوين لتطبيقك ( google-services.json لنظام Android أو GoogleService-Info.plist لنظام التشغيل iOS) وقم ببناء الهدف من وحدة تحكم Firebase في إعدادات المشروع > تطبيقاتك : إذا كان لديك هذه الملفات بالفعل، فاحذفها في مشروعك واستبدلها بأحدث إصدار، مع التأكد من كتابتها تمامًا كما هو معروض أعلاه بدون "(1)" أو أرقام أخرى مرفقة بأسماء الملفات.
  3. إذا كانت وحدة التحكم تحتوي على رسالة بخصوص الملفات الموجودة في Assets/StreamingAssets/ ، فتأكد من عدم وجود رسائل وحدة التحكم تفيد بأن Unity غير قادر على تحرير الملفات هناك
  4. تأكد من إنشاء Assets/StreamingAssets/google-services-desktop.json ومطابقتها لملف التكوين الذي تم تنزيله.
    • إذا لم يتم إنشاؤه تلقائيًا ولم يكن StreamingAssets/ موجودًا، فقم بإنشاء الدليل يدويًا في دليل Assets .
    • تحقق مما إذا كانت Unity قد أنشأت الآن google-services-desktop.json .

تأكد من تثبيت كل منتج Firebase و EDM4U حصريًا من خلال .unitypackage أو Unity Package Manager

  1. تحقق من كل من مجلد Assets/ ومدير الحزم Unity للتأكد من تثبيت Firebase SDK وEDM4U من خلال طريقة أو أخرى بشكل حصري.
  2. قد تعتمد بعض المكونات الإضافية التي طورتها Google ، مثل Google Play، والمكونات الإضافية التابعة لجهات خارجية على EDM4U. قد تتضمن هذه المكونات الإضافية EDM4U في حزم .unitypackage أو Unity Package Manager (UPM) الخاصة بها. تأكد من وجود نسخة واحدة فقط من EDM4U في مشروعك. إذا كانت أي حزم UPM تعتمد على EDM4U، فمن الأفضل الاحتفاظ فقط بإصدارات UPM من EDM4U، والتي يمكن العثور عليها في صفحة Google APIs for Unity Archive .

تأكد من أن كل منتج Firebase في مشروعك موجود في نفس الإصدار.

  1. إذا تم تثبيت حزم Firebase SDK من خلال .unitypackage ، فتحقق مما إذا كانت جميع مكتبات FirebaseCppApp ضمن Assets/Firebase/Plugins/x86_64/ موجودة في نفس الإصدار.
  2. إذا تم تثبيت حزم Firebase SDK من خلال Unity Package Manager (UPM)، فافتح Windows > Package Manager ، وابحث عن "Firebase" وتأكد من أن جميع حزم Firebase في نفس الإصدار.
  3. إذا كان مشروعك يحتوي على إصدارات مختلفة من حزم Firebase SDK، فنوصيك بإزالة جميع حزم Firebase SDK بالكامل قبل تثبيت جميع حزم Firebase SDK مرة أخرى، ولكن هذه المرة بنفس الإصدارات. الطريقة الأنظف هي إزالة كل حزمة Firebase من خلال الطرق المذكورة في قسم الترحيل هذا .

أخطاء إنشاء المحلل والجهاز المستهدف

إذا كانت لعبتك تعمل في المحرر (تم تكوينها لهدف البناء المناسب الذي تختاره)، فتحقق بعد ذلك من تكوين مدير التبعية الخارجية لـ Unity (EDM4U) وتشغيله بشكل صحيح.

يحتوي مستودع EDM4U GitHub على دليل خطوة بخطوة لهذا الجزء من العملية والذي يجب عليك مراجعته ومتابعته قبل المتابعة.

مشكلات "Single Dex" والتصغير ( إلزامية في حالة استخدام Cloud Firestore)

أثناء إنشاء تطبيق Android، قد تواجه فشلًا في البناء يتعلق بوجود ملف dex واحد. تبدو رسالة الخطأ مشابهة لما يلي (إذا تم تكوين مشروعك لاستخدام نظام إنشاء Gradle):

Cannot fit requested classes in a single dex file.

تُستخدم ملفات .dex للاحتفاظ بمجموعة من تعريفات الفئات والبيانات المساعدة المرتبطة بها لتطبيقات Android. يقتصر ملف dex واحد على 65.536 طريقة؛ ستفشل عمليات الإنشاء إذا تجاوز العدد الإجمالي للطرق من جميع مكتبات Android في مشروعك هذا الحد.

ويمكن تطبيق الخطوتين التاليتين بالتسلسل؛ قم بتمكين multidex فقط إذا لم يحل التصغير المشكلة.

تمكين التصغير

قدمت Unity عملية التصغير في عام 2017.2 لإزالة التعليمات البرمجية غير المستخدمة، مما قد يقلل العدد الإجمالي للطرق المشار إليها في ملف dex واحد. * يمكن العثور على الخيار في إعدادات المشغل > Android > إعدادات النشر > تصغير . * قد تختلف الخيارات في إصدارات مختلفة من Unity، لذا راجع وثائق Unity الرسمية.

تمكين Multidex

إذا ظل عدد الطرق المرجعية يتجاوز الحد المسموح به، بعد تمكين التصغير، فهناك خيار آخر وهو تمكين multidex . هناك عدة طرق لتحقيق ذلك في Unity:

  • إذا تم تمكين قالب Gradle المخصص ضمن إعدادات المشغل ، فقم بتعديل mainTemplate.gradle .
  • إذا كنت تستخدم Android Studio لإنشاء المشروع الذي تم تصديره، فقم بتعديل ملف build.gradle على مستوى الوحدة.

يمكن العثور على مزيد من التفاصيل في دليل مستخدم multidex .

فهم وإصلاح أخطاء وقت تشغيل الجهاز المستهدف

إذا كانت لعبتك تعمل في المحرر ويمكن تصميمها وتثبيتها على جهازك المستهدف، ولكنك تواجه أخطاء في وقت التشغيل، فافحص السجلات التي تم إنشاؤها على الجهاز وتحقق منها .

يوضح هذا القسم كيفية التحقق من سجلاتك بحثًا عن الأخطاء المحتملة وأحد الأخطاء التي تحدث فقط في وقت التشغيل على الجهاز أو جهاز المحاكاة.

ذكري المظهر

محاكي

  • افحص السجلات المعروضة في وحدة تحكم المحاكي أو اعرض نافذة Logcat .

جهاز

تعرف على adb و adb logcat وكيفية استخدامهما.

  • على الرغم من أنه يمكنك استخدام الأدوات المتنوعة لبيئة سطر الأوامر لديك لتصفية المخرجات، فكر في البحث في خيارات logcat بدلاً من ذلك.
  • الطريقة البسيطة لبدء جلسة ADB بسجل نظيف هي:

    adb logcat -c && adb logcat <OPTIONS>
    

    حيث تكون OPTIONS هي العلامات التي تقوم بتمريرها إلى سطر الأوامر لتصفية الإخراج.

استخدام Logcat من خلال Android Studio

عند استخدام Logcat من خلال Android Studio ، تتوفر أدوات بحث إضافية تجعل إنشاء عمليات بحث إنتاجية أكثر بساطة.

دائرة الرقابة الداخلية

فحص السجلات

في حالة تشغيل جهاز فعلي، قم بتوصيله بجهاز الكمبيوتر الخاص بك. فحص lldb في Xcode.

قضايا سويفت

إذا واجهت سجلات أخطاء تشير إلى Swift، فاستشر قسم مدير التبعية الخارجية لـ Unity بخصوصها.

خطوات أخرى

إذا كانت لعبتك لا تزال تعاني من مشكلات متعلقة بالترجمة أو الإنشاء أو التشغيل تتعلق بـ Firebase، فتحقق من صفحة مشكلات Firebase SDK for Unity وفكر في تقديم مشكلة جديدة. بالإضافة إلى ذلك، راجع صفحة دعم Firebase للتعرف على الخيارات الإضافية.