הדף הזה כולל טיפים ופתרון בעיות שקשורות לבעיות ספציפיות ל-Unity שאתם עשויים להיתקל בהן כשמשתמשים ב-Firebase.
יש לך אתגרים אחרים או שהבעיה שלך לא מופיעה בהמשך? מומלץ לעיין בשאלות הנפוצות הראשיות בנושא Firebase כדי לקבל שאלות נפוצות נוספות לגבי Firebase או לגבי מוצרים ספציפיים.
תאימות ל-.NET כשמשתמשים ב-Unity 2017.x ואילך
מערכת Firebase תומכת ב- .NET 4.x כאפשרות build ניסיונית ב-Unity 2017 מאוחר יותר. הפלאגינים של Firebase משתמשים ברכיבים של Parse SDK כדי לספק חלק מהכיתות של .NET 4.x בגרסאות קודמות של .NET.
לכן, גרסת ה-SDK של Firebase Unity בגרסה 5.4.0
ואילך כוללת יישומי פלאגין שתואמים ל-NET 3.x או ל-NET 4.x בתיקיות dotnet3
ו-dotnet4
של ה-SDK של Firebase Unity.
אם מייבאים פלאגין של 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 הנכונים לפרויקט.
אוסף IL2CPP של Unity 2017.1 בפרויקטים של .NET 4.x
מערכת Firebase תומכת ב- .NET 4.x כאפשרות build ניסיונית ב-Unity 2017 מאוחר יותר. יישומי הפלאגין של Firebase משתמשים ברכיבים של נתח את ה-SDK כדי לספק חלק מחלקות .NET 4.x בגרסאות קודמות של .NET.
לכן, גרסת ה-SDK של Firebase Unity בגרסה 5.4.0 ואילך מספקת ספריות DLL להעברת סוגי נתונים, שמעבירות סוגי נתונים של Parse (לדוגמה, הטמעת Parse של System.Threading.Tasks.Task
) למסגרת .NET. לצערנו, IL2CPP
(טרנספילר שממיר C# ל-C++ ) שנשלח ב-Unity 2017.1.x עושה
לא מעבדים כראוי DLL מסוג העברת סוגים, מה שגורם לשגיאות build
ייראה כך:
Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>
בשלב זה אין פתרון זמני לשגיאות build של .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 שאין להן אפשרות להתאים אישית את ה-build של Gradle, כלי העריכה של Firebase יוצר את Assets/Plugins/Android/Firebase/res/values/google-services.xml
כמשאב Android שאפשר לארוז ב-build של Android, כדי ש-Firebase SDK יוכל להשתמש בו כדי לאתחל את מופע ברירת המחדל של FirebaseApp.
ב-Unity 2020, כל המשאבים ל-Android חייבים להיות בספריות עם סיומת .androidlib
. אם בפרויקט שלכם נעשה שימוש בערכת Firebase SDK שיוצרת
ספריית Assets/Plugins/Android/Firebase
, צריך לשנות את השם שלה
Assets/Plugins/Android/Firebase.androidlib
. מוודאים שהגיליון מכיל את הערכים AndroidManifest.xml
, project.properties
ו-res/values/google-services.xml
.
בעיה ב-Single dex בזמן פיתוח אפליקציה ל-Android
כשאתם בונים אפליקציה ל-Android, יכול להיות שתיתקלו בכשל ב-build שגרם לכך קובץ dex יחיד. הודעת השגיאה נראית דומה להודעה הבאה, אם הפרויקט מוגדר לשימוש במערכת ה-build של Gradle.
Cannot fit requested classes in a single dex file.
קובצי Dalvik ניתנים להפעלה (.dex
) משמשים לשמירת קבוצה של הגדרות כיתה.
והנתונים הנוספים המשויכים אליהם עבור אפליקציות ל-Android (.apk
). דקס יחיד
הוא מוגבל ל-65,536 שיטות. ה-build ייכשל אם המספר הכולל של השיטות מכל ספריות Android בפרויקט חורג מהמגבלה הזו.
Unity הציגה את הצמצום בגרסה 2017.2, שמשתמשת ב-Proguard (או בכלים אחרים בגרסאות מסוימות של Unity) כדי להסיר קוד שלא בשימוש. כך אפשר לצמצם את המספר הכולל של השיטות שמצוינות בקובץ dex יחיד. האפשרות הזו נמצאת בקטע הגדרות הנגן > Android > הגדרות פרסום > Minify. האפשרויות עשויות להיות יש הבדל בין גרסאות שונות של Unity, כך שיש לעיין בקובץ ה-Unity הרשמי התיעוד.
אם מספר השיטות שמצוינות עדיין חורג מהמגבלה, אפשר להפעיל את multidex
. יש כמה דרכים לעשות זאת ב-Unity:
- אם האפשרות
Custom Gradle Template
מתחת ל-Player Settings
מופעלת, שינויmainTemplate.gradle
. - אם משתמשים ב-Android Studio כדי ליצור את הפרויקט שמייצאים, צריך לשנות
קובץ
build.gradle
ברמת המודול.
פרטים נוספים זמינים במדריך למשתמש בנושא multidex.
תמיכה ב-Java 8 והסרת סוכרים עבור Android גרסאות build ב-Unity 2017 וב-Unity 2018 (Firebase Unity SDK 8.0.0 ואילך)
במאי 2021 (גרסה 28.0.0 של Firebase BoM), מערכת Firebase השביתה את תהליך ביטול הסוכר בכל ספריות ה-Android (מידע נוסף זמין בנתוני הגרסה). כשיוצרים אפליקציה ל-Android באמצעות Firebase Unity SDK (גרסה 8.0.0 ואילך), יכול להיות שתופיע שגיאת ה-build הבאה:
> Error while dexing.
The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle
השינוי ישפיע רק על גרסאות build של Android ב-Unity 2017 וב-Unity 2018. בגרסאות חדשות יותר של Unity, הבלוק compileOptions
מתווסף כברירת מחדל לקובצי ה-build של Gradle.
כדי לתקן את שגיאת ה-build הזו ב-Unity 2017 וב-Unity 2018, מבצעים אחת מהפעולות הבאות:
מוסיפים בלוק
compileOptions
לתבנית GRid:- שימוש ב-
Gradle
כמערכת ה-build. - מפעילים את
Custom Gradle Template
בקטעPlayer Settings
. מוסיפים את השורות הבאות לקובץ
mainTemplate.gradle
(או ברמת המודולbuild.gradle
אם מייצאים פרויקט ל-Android Studio):android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }
- שימוש ב-
לחלופין, אפשר להגדיל את ה-minSdkVersion של פרויקט Android ל-26 ומעלה.
כדאי לעיין גם במאמר פתרון בעיות ב-Android - הסרה של כשלים ב-build אם מפסיקים.
בעיות בפיתוח 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
תהליך העדכון של גרסאות ה-SDK של Firebase Unity תלוי באופן שבו יובאו בהתחלה. אלה שתי שיטות הייבוא החלופיות:
- ייבוא קבצים מסוג
.unitypackage
בספרייהAssets/
של הפרויקט - הייבוא באמצעות
מנהל החבילות של Unity
(UPM)
- זו הדרך המומלצת לניהול חבילות ב-Unity מגרסה 2018.4 ואילך.
- אפשר להשתמש בשיטה הזו כדי שיהיה קל יותר לעדכן גרסאות עתידיות, וכדי ש-
Assets/
יהיה קל יותר כלי לניקוי ספריות.
בפרויקט Unity, צריך להשתמש בשיטת ייבוא אחת בלבד כדי לנהל את כל חבילות Firebase. ההוראות הבאות לא רק עוזרות לעדכן את גרסה של חבילות בודדות, אבל גם במקרה הצורך, כדי להעביר חבילה ל-UPM (שיטת הייבוא המומלצת).