איתור באגים בתהליך הבנייה, ההתקנה וההפעלה של המשחק

מבוא

להלן מדריך לניפוי באגים בתהליך ההידור והבנייה עבור משחקי Unity באמצעות Firebase SDK עבור 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: Level Up With Firebase Edition :
      1. using Firebase.RemoteConfig;
      2. using Firebase.Crashlytics;
  2. ודא שייבאת את חבילות Firebase המתאימות:

    1. כדי לייבא את החבילות המתאימות:
      1. הוסף Firebase Unity SDK בתור .unitypackage s or
      2. בדוק ובצע אחת מהחלופות באפשרויות ההתקנה של Unity נוספות .
    2. ודא שכל מוצר Firebase בפרויקט שלך וב- EDM4U :
      • נמצאים באותה גרסה
      • הותקנו כ-. .unitypackage באופן בלעדי או באופן בלעדי דרך Unity Package Manager.
  3. אם ייבאת את Firebase Unity SDK לפני גרסה "10.0.0" בתור .unitypackage s, ארכיון ה-zip של Firebase Unity SDK מכיל חבילות לתמיכה ב-.NET 3.x וגם ב-.NET 4.x. ודא שכללת רק את רמת ה-.NET Framework התואמת בפרויקט שלך:

    1. תאימות בין גרסאות של Unity Editor ורמות .NET Frameworks נדונה בהוספת Firebase לפרויקט Unity שלך .
    2. אם ייבאת בטעות את חבילות Firebase שלך ​​ברמת .NET Framework שגויה או שאתה צריך לעבור משימוש .unitypackage s לאחת מאפשרויות ההתקנה של 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) בקובץ > הגדרות בנייה . לדיון שלם יותר, קרא את תיעוד ההגדרות של Unity Build .
  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

  1. בדוק גם את התיקיה Assets/ וגם את Unity Package Manager כדי לוודא ש-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. אם ערכות SDK של Firebase הותקנו דרך .unitypackage , בדוק אם כל ספריות FirebaseCppApp תחת Assets/Firebase/Plugins/x86_64/ נמצאות באותה גרסה.
  2. אם ערכות SDK של Firebase הותקנו דרך Unity Package Manager (UPM), פתח את Windows > Package Manager , חפש "Firebase" וודא שכל חבילות Firebase נמצאות באותה גרסה.
  3. אם הפרויקט שלך מכיל גרסאות שונות של Firebase SDK, אנו ממליצים להסיר לחלוטין את כל ערכות Firebase SDK לפני שתתקין שוב את כל Firebase SDKs, הפעם עם אותן גרסאות. הדרך הנקייה ביותר היא להסיר כל חבילת Firebase באמצעות השיטות המוזכרות בסעיף ההעברה הזה .

פותר וטעויות בניית מכשיר יעד

אם המשחק שלך עובד בעורך (מוגדר עבור יעד הבנייה המתאים לבחירתך), לאחר מכן ודא שמנהל התלות החיצוני עבור Unity (EDM4U) מוגדר כהלכה ומתפקד.

מאגר EDM4U GitHub מכיל מדריך שלב אחר שלב לחלק זה של התהליך שעליכם לבדוק ולעקוב אחריו לפני שתמשיך.

בעיות 'Single Dex' והקטנה ( חובה אם משתמשים ב-Cloud Firestore)

במהלך בניית אפליקציית אנדרואיד, אתה עלול להיתקל בכשל בנייה הקשור ליצירת קובץ dex יחיד. הודעת השגיאה נראית דומה להודעה הבאה (אם הפרויקט שלך מוגדר להשתמש במערכת הבנייה Gradle):

Cannot fit requested classes in a single dex file.

קובצי .dex משמשים לשמירה על קבוצה של הגדרות מחלקות ונתוני העזר המשויכים להן עבור יישומי אנדרואיד. קובץ dex בודד מוגבל להתייחסות ל-65,536 שיטות; builds ייכשלו אם המספר הכולל של השיטות מכל ספריות Android בפרויקט שלך חורג מהמגבלה הזו.

ניתן ליישם את שני השלבים הבאים ברצף; אפשר את multidex רק אם הקטנה לא פותרת את הבעיה.

אפשר הקטנה

Unity הציגה Minification בשנת 2017.2 כדי להסיר קוד שאינו בשימוש, מה שיכול להפחית את המספר הכולל של שיטות הפניות בקובץ dex בודד. * ניתן למצוא את האפשרות בהגדרות נגן > אנדרואיד > הגדרות פרסום > צמצום . * האפשרויות עשויות להיות שונות בגרסאות שונות של Unity אז עיין בתיעוד הרשמי של Unity.

אפשר Multidex

אם, לאחר הפעלת הקטנה, מספר השיטות המוזכרות עדיין חורג מהמגבלה, אפשרות נוספת היא להפעיל multidex . ישנן מספר דרכים להשיג זאת ב-Unity:

  • אם תבנית Gradle Custom תחת הגדרות שחקן מופעלת, שנה את 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 זמינים כלי חיפוש נוספים שהופכים יצירת חיפושים פרודוקטיביים לפשוטה יותר.

iOS

בדיקת יומנים

אם מפעיל מכשיר פיזי, חבר אותו למחשב שלך. בדוק את lldb ב-Xcode.

בעיות סוויפט

אם אתה נתקל ביומני שגיאה המאזכרים את המהירות, עיין בסעיף מנהל התלות החיצוני לאחדות לגביהם.

שלבים נוספים

אם במשחק שלך עדיין יש בעיות קומפילציה, בנייה או הפעלה הקשורות ל-Firebase, בדוק את דף הבעיות של Firebase SDK for Unity ושקול להגיש בעיה חדשה. בנוסף, עיין בדף התמיכה של Firebase כדי ללמוד על אפשרויות נוספות.