Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

דף זה מציע טיפים ופתרון בעיות עבור בעיות ספציפיות ל-Unity שאתה עלול להיתקל בהן בעת ​​השימוש ב-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. המיושמות על ידי ה- Parse SDK.

כדי לפתור את שגיאת ההידור, אם אתה משתמש ב-.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 הנכון עבור הפרויקט שלך.

קומפילציה של Unity 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, מה שגורם לפלאגין Realtime Database להיכשל בעורכים ובשולחן העבודה.

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

חסר קובץ תצורה של Firebase Android ב-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 .

בעיה בדקס יחיד בזמן בניית אפליקציית אנדרואיד

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

Cannot fit requested classes in a single dex file.

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

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

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

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

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

תמיכה ב-Java 8 והסרת סוכר ל-Android ב-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 עבור פרויקט האנדרואיד שלך ל-26 ומעלה.

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

בעיות בעת בנייה עבור iOS עם Cocoapods

בעת בנייה עבור iOS, התקנת Cocoapod עלולה להיכשל עם שגיאה לגבי מיקום השפה, או קידוד UTF-8. ישנן כיום מספר דרכים שונות לעקוף את הבעיה.

  • מהמסוף, ריצת pod install ישירות, ולפתוח את קובץ xcworkspace שהתקבל.

  • שדרג לאחור את הגרסה של Cocoapods ל-1.10.2. הבעיה קיימת רק בגרסה 1.11 ואילך.

  • בשנת שלך ~/.bash_profile או שווה ערך, תוספת export LANG=en_US.UTF-8