דף זה מציע טיפים ופתרון בעיות עבור בעיות ספציפיות ל-Unity שאתה עלול להיתקל בהן בעת השימוש ב-Firebase.
יש לך אתגרים אחרים או שאתה לא רואה את הבעיה שלך מתוארת למטה? הקפד לעיין בשאלות הנפוצות הראשיות של Firebase לקבלת שאלות נפוצות נוספות על פאן-Firebase או ספציפיות למוצר.
תאימות .NET בעת שימוש ב-Unity 2017.x ואילך
Firebase תומך ב-.NET 4.x כאפשרות בנייה ניסיונית ב-Unity 2017 ואילך. יישומי פלאגין של Firebase משתמשים ברכיבים של Parse SDK כדי לספק כמה מחלקות .NET 4.x בגרסאות קודמות של .NET.
לכן, Firebase Unity SDK גרסה 5.4.0
ואילך מספקים תוספים התואמים ל-.NET 3.x או .NET 4.x בספריות dotnet3
ו- dotnet4
של Firebase Unity SDK.
אם אתה מייבא פלאגין של Firebase שאינו תואם לגרסת ה-.NET שהופעלה בפרויקט שלך, תראה שגיאות קומפילציה מסוגים מסוימים במסגרת NET. המיושמות על ידי ה- Parse SDK.
כדי לפתור את שגיאת ההידור, אם אתה משתמש ב-.NET 3.x:
- הסר או השבת את קובצי ה-DLL הבאים עבור כל הפלטפורמות:
-
Parse/Plugins/dotNet45/Unity.Compat.dll
-
Parse/Plugins/dotNet45/Unity.Tasks.dll
-
- הפעל את קובצי ה-DLL הבאים עבור כל הפלטפורמות:
-
Parse/Plugins/Unity.Compat.dll
-
Parse/Plugins/Unity.Tasks.dll
-
כדי לפתור את שגיאת ההידור, אם אתה משתמש ב-.NET 4.x:
- הסר או השבת את קובצי ה-DLL הבאים עבור כל הפלטפורמות:
-
Parse/Plugins/Unity.Compat.dll
-
Parse/Plugins/Unity.Tasks.dll
-
- הפעל את קובצי ה-DLL הבאים עבור כל הפלטפורמות:
-
Parse/Plugins/dotNet45/Unity.Compat.dll
-
Parse/Plugins/dotNet45/Unity.Tasks.dll
-
אם אתה מייבא פלאגין אחר של Firebase:
- בפרויקט Unity שלך, נווט אל Assets > Play Services Resolver > Version Handler > Update כדי להפעיל את קובצי ה-DLL הנכונים עבור הפרויקט שלך.
קומפילציה של Unity 2017.1 IL2CPP בפרויקטים של .NET 4.x
Firebase תומך ב-.NET 4.x כאפשרות בנייה ניסיונית ב-Unity 2017 ואילך. יישומי פלאגין של Firebase משתמשים ברכיבים של Parse SDK כדי לספק כמה מחלקות .NET 4.x בגרסאות קודמות של .NET.
לפיכך, Firebase Unity SDK גרסה 5.4.0 ואילך מספק DLL להעברת סוגים המעבירים סוגי Parse (לדוגמה, יישום Parse של System.Threading.Tasks.Task
) למסגרת NET. למרבה הצער, 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
על מנת לתמוך בגרסאות של Unity שאין להן את היכולת להתאים אישית את בניית Gradle, כלי העורך של Firebase מייצר Assets/Plugins/Android/Firebase/res/values/google-services.xml
כמשאב אנדרואיד שייארוז ב- Android build, כך ש-Firebase SDK יכול להשתמש בו כדי לאתחל את מופע ברירת המחדל של FirebaseApp.
ב-Unity 2020, כל משאבי Android חייבים להיות בספריות עם סיומת .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 שיטות. הבנייה תיכשל אם המספר הכולל של השיטות מכל ספריות האנדרואיד בפרויקט שלך חורג מהמגבלה הזו.
Unity הציגה Minification בשנת 2017.2, המשתמשת ב-Proguard (או בכלים אחרים בכמה גרסאות של Unity) כדי להסיר קוד שאינו בשימוש, מה שיכול להפחית את המספר הכולל של שיטות הפניות בקובץ dex יחיד. ניתן למצוא את האפשרות בהגדרות נגן > אנדרואיד > הגדרות פרסום > צמצום . האפשרויות עשויות להיות שונות בגרסה שונה של Unity אז עיין בתיעוד הרשמי של Unity.
אם מספר השיטות המוזכרות עדיין חורג מהמגבלה, אפשרות נוספת היא להפעיל multidex
. ישנן מספר דרכים להשיג זאת ב-Unity:
- אם
Custom Gradle Template
תחתPlayer Settings
מופעלת, שנה אתmainTemplate.gradle
. - אם אתה משתמש ב-Android Studio כדי לבנות את הפרויקט המיוצא, שנה את קובץ
build.gradle
ברמת המודול.
פרטים נוספים ניתן למצוא במדריך למשתמש של multidex .
תמיכה ב-Java 8 ומניעת סוכר עבור Android ב-Unity 2017 ו-Unity 2018 (Firebase Unity SDK 8.0.0 ומעלה)
במאי 2021 (Firebase BoM v28.0.0), Firebase השביתה ביטול סוכר עבור כל ספריות האנדרואיד שלה (ראה הערת שחרור ). בעת בניית אפליקציית 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
כמערכת הבנייה. - הפעל
Custom Gradle Template
תחתPlayer Settings
. הוסף את השורות הבאות ל-
mainTemplate.gradle
(או ברמת המודולbuild.gradle
אם מייצאים פרויקט עבור Android Studio):android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }
- השתמש
לחלופין, הגדל את minSdkVersion עבור פרויקט האנדרואיד שלך ל-26 ומעלה.
ראה גם פתרון בעיות ב-Android - מניעת תקלות בנייה .
בעיות בעת בנייה עבור iOS עם Cocoapods
בעת בנייה עבור iOS, התקנת Cocoapod עלולה להיכשל עם שגיאה לגבי מיקום השפה, או קידוד UTF-8. כרגע ישנן מספר דרכים שונות לעקוף את הבעיה.
מהמסוף, הפעל את
pod install
ישירות ופתח את קובץ xcworkspace שנוצר.שדרג לאחור את הגרסה של Cocoapods ל-1.10.2. הבעיה קיימת רק בגרסה 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 (שיטת הייבוא המומלצת).
אם חבילות Firebase נמצאות בספריית Assets/
, יש לך שתי אפשרויות לעדכון גרסת ה-SDK:
אפשרות 1 (מומלץ) : העבר לשימוש ב-UPM (זמין ב-Unity 2018.4+)
- פעל לפי ההוראות שסופקו על ידי Firebase כדי להעביר את ניהול החבילות ל-UPM .
- אמנם שיטה זו דורשת הגדרה ראשונית יותר מאשר המשך שימוש בזרימת העבודה
.unitypackage
, אך היא משתלמת בקלות בעדכוני גרסת SDK הבאים.
אפשרות 2 : המשך להשתמש בקבצי
.unitypackage
כדי לייבא אותם לספרייתAssets/
ייבא כל אחת מהחבילות עבור הגרסה המעודכנת.
אם אתה מוריד את firebase_unity_sdk.zip מאתר Firebase, ודא שאתה מייבא את כל
.unitypackages
מתיקייתdotnet
הנכונה.- אם אתה משתמש ב-Unity 2019 ואילך, ייבא מתיקיית
dotnet4
. - אחרת, בחר Scripting Runtime Version בהגדרות הנגן , ואם היא מוגדרת ל-".NET 3.x", ייבא מתיקיית
dotnet3
.
- אם אתה משתמש ב-Unity 2019 ואילך, ייבא מתיקיית
החלפת גרסאות החבילות שיובאו בעבר אמורה להיעשות באופן אוטומטי על ידי מנהל התלות החיצוני (שנכלל אוטומטית כאשר אתה מייבא את Firebase
.unitypackages
).עם זאת, אם ורק אם התהליך האוטומטי הזה נכשל, תצטרך למחוק ידנית את התיקיות הבאות ולאחר מכן לנסות שוב את שלב הייבוא שלעיל שוב.
-
Assets/Editor Default Resources/Firebase
-
Assets/ExternalDependencyManager
-
Assets/Firebase
-
Assets/Parse
-
Assets/Plugins/iOS/Firebase
-
אם חבילות Firebase מנוהלות על ידי UPM, ייבא את גרסת ה-SDK החדשה יותר בתור .tgz
. ייבוא זה יחליף אוטומטית את הגרסה הקודמת.