פתרון בעיות ושאלות נפוצות עבור Unity ו- Firebase

דף זה מציע טיפים ופתרון בעיות לבעיות ספציפיות לאחדות שבהן אתה עלול להיתקל בעת שימוש ב- Firebase.

האם יש לך אתגרים אחרים או שאינך רואה את הבעיה המתוארת למטה? הקפד לבדוק את השאלות הנפוצות Firebase העיקריות עבור יותר פאן-Firebase או מוצר ספציפי שאלות נפוצות.

תאימות .NET בעת שימוש ב- Unity 2017.x ואילך

Firebase תומך ב- .NET 4.x כאפשרות בנייה ניסיונית ב- Unity 2017 ואילך. תוספים Firebase להשתמש ברכיבים של SDK לנתח לספק כמה כיתות 4.x .NET בגרסאות קודמות של NET.

לכן, לגרסת ה- SDK אחדות Firebase 5.4.0 ומאוחר לספק תוספים תואמים או .NET 3.x או .NET 4.x ב dotnet3 ו dotnet4 ספריות של SDK אחדות Firebase.

אם אתה מייבא תוסף Firebase שאינו תואם לגרסת .NET שמופעלת בפרויקט שלך, תראה שגיאות הידור מכמה סוגים במסגרת .NET המיושמות על ידי SDK Parse.

כדי לפתור את שגיאת האוסף, אם אתה משתמש ב- .NET 3.x:

  1. הסר או השבת את קובצי ה- DLL הבאים עבור כל הפלטפורמות:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. הפעל את קובצי ה- DLL הבאים עבור כל הפלטפורמות:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

כדי לפתור את שגיאת האוסף, אם אתה משתמש ב- .NET 4.x:

  1. הסר או השבת את קובצי ה- DLL הבאים עבור כל הפלטפורמות:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. הפעל את קובצי ה- DLL הבאים עבור כל הפלטפורמות:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

אם אתה מייבא תוסף Firebase נוסף:

  • בפרויקט האחדות שלך, נווט נכסים> שירותי Play Resolver> גרסה הנדלר> עדכון לאפשר קבצי DLL הנכון עבור הפרויקט שלך.

אוסף 2017.1 אוסף IL2CPP בפרויקטים של .NET 4.x

Firebase תומך ב- .NET 4.x כאפשרות בנייה ניסיונית ב- Unity 2017 ואילך. תוספים Firebase להשתמש ברכיבים של SDK לנתח לספק כמה כיתות 4.x .NET בגרסאות קודמות של NET.

לכן, לגרסת ה- SDK אחדות Firebase 5.4.0 ומאוחר יותר מספקת קבצי DLL שילוח סוג אשר להעביר סוגים לנתח (למשל, יישום לנתח של System.Threading.Tasks.Task ) של .NET Framework. למרבה הצער, IL2CPP (טרנספיילר הממיר C# ל- C ++) שנשלח ב- Unity 2017.1.x אינו מעבד כראוי קובצי DLL של העברת סוגים וכתוצאה מכך שגיאות בנייה הדומות להלן:

Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>

אין כרגע פתרון לעקיפת הבעיה עבור שגיאות בניית .NET 4.x IL2CPP ב- Unity 2017.1, לכן עליך לשדרג ל- Unity 2017.2 ואילך כדי להשתמש ב- .NET 4.x בפרויקטים שהורכבו עם IL2CPP.

רשת Unity 2017.2

Firebase Realtime Database יוצר חיבורי רשת TLS באמצעות מחסנית .NET. פונקציונליות TLS שבורה ב- Unity 2017.2 בעת שימוש ב- .NET 4.6 וגורמת לתוסף מסד הנתונים בזמן אמת להיכשל בעורכים ובמחשב שולחני.

אין פתרון לבעיה זו, לכן עליך להשתמש בגרסה אחרת של Unity, למשל גירסה 2017.1 או 2017.3.

חסר קובץ תצורה ל- Android של Firebase ב- Unity 2020

כדי גרסאות התומכות באחדות שאין להם את היכולת להתאים אישית לבנות Gradle, הכלי עורך Firebase מייצר Assets/Plugins/Android/Firebase/res/values/google-services.xml כמשאב Android להיות ארוז לתוך Android build, כך ש- Firebase SDK יוכל להשתמש בו לאתחול מופע ברירת המחדל של FirebaseApp.

באחדות 2020, כול משאבים אנדרואיד חייבים להיות בספריות עם .androidlib סיומת. אם הפרויקט באמצעות SDK Firebase שיוצר Assets/Plugins/Android/Firebase ספרייה, ושנה את שמו ל Assets/Plugins/Android/Firebase.androidlib . לוודא שהוא מכיל AndroidManifest.xml , project.properties ו res/values/google-services.xml .

בעיה ב- single dex בעת בניית אפליקציית Android

בעת בניית אפליקציית אנדרואיד, אתה עלול להיתקל בכשל בנייה הקשור לקובץ דקס יחיד. הודעת השגיאה נראית דומה להלן, אם הפרויקט שלך מוגדר לשימוש במערכת Build Build.

Cannot fit requested classes in a single dex file.

Dalvik הפעלה ( .dex ) קבצים רגילים להחזיק סט של הגדרות בכיתה והנתונים הנלווים הקשורים שלהם עבור יישומי אנדרואיד ( .apk ). קובץ dex יחיד מוגבל להתייחסות ל 65,536 שיטות. ההרכבה תיכשל אם המספר הכולל של השיטות מכל ספריות אנדרואיד בפרויקט שלך חורג ממגבלה זו.

האחדות הציג מיניפיקציה ב 2017.2, אשר משתמשת ProGuard (או כלים אחרים בכמה גרסאות של אחדות) להפשיט את קוד שאינו בשימוש, אשר יכול להפחית את המספר הכולל של שיטות מפנה קובץ DEX יחיד. האפשרות ניתן למצוא נגן הגדרות> אנדרואיד> הגדרות פרסום> מיניפיקציה. האפשרויות עשויות להיות שונות בגירסה שונה של Unity לכן עיין בתיעוד הרשמי של Unity.

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

  • אם Custom Gradle Template תחת Player Settings מופעלת, לשנות mainTemplate.gradle .
  • אם אתה משתמש אנדרואיד סטודיו לבנות את הפרויקט לייצא, לשנות מודול ברמה build.gradle קובץ.

ניתן למצוא פרטים נוספים במדריך למשתמש multidex .

תמיכה בג'אווה 8 וייצוא יישומי אנדרואיד ב- Unity 2017 ו- Unity 2018 (Firebase Unity SDK 8.0.0 ומעלה)

בחודש מאי 2021 (v28.0.0 BOM Firebase), Firebase desugaring נכים לכל ספריות אנדרואיד שלה (ראה הערה שחרור ). בעת בניית אפליקציית Android עם Firebase Unity SDK (8.0.0 ומעלה), ייתכן שתראה את שגיאת הבנייה הבאה:

> Error while dexing.
 The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle

שינוי זה משפיע על בניית Android ב- Unity 2017 ו- Unity 2018 בלבד. גרסאות חדשות יותר של Unity להוסיף את compileOptions לחסום כברירת מחדל ב קבצים לבנות gradle. כדי לתקן שגיאת בנייה זו ב- Unity 2017 ו- Unity 2018, בצע אחת מהפעולות הבאות:

  • הוספת compileOptions בלוק לתבנית gradle שלך:

    1. השתמשו Gradle כמערכת לבנות.
    2. אפשר Custom Gradle Template תחת Player Settings .
    3. מוסיפים את השורות הבאות mainTemplate.gradle (או מודול רמת build.gradle אם ייצוא פרויקט סטודיו Android):

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • לחלופין, הגדל את minSdkVersion עבור פרויקט Android שלך ל -26 ומעלה.

ראו גם פתרון בעיות אנדרואיד - כשלים לבנות desugaring .