בדף הזה מופיעים טיפים ודרכים לפתרון בעיות ספציפיות ל-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
ספריות של 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 הנכונים לפרויקט.
הידור IL2CPP ב-Unity 2017.1 בפרויקטים של .NET 4.x
מערכת Firebase תומכת ב- .NET 4.x כאפשרות build ניסיונית ב-Unity 2017 מאוחר יותר. הפלאגינים של Firebase משתמשים ברכיבים של Parse 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.
Networking ב-Unity 2017.2
Firebase Realtime Database יוצר חיבורי TLS לרשת 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 השיקה את Minification ב-2017.2, שמשתמש ב-ProGuard (או בכלים אחרים בחלק מהגרסאות של Unity) להסרת קוד שלא נמצא בשימוש, דבר שיכול להפחית את המספר הכולל של ומאוזכרות בקובץ dex יחיד. האפשרות נמצאת הגדרות נגן > Android > הגדרות פרסום > מזעור. האפשרויות עשויות להיות יש הבדל בין גרסאות שונות של 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
לתבנית gradle:- משתמשים ב-
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 אם מפסיקים.
בעיות בזמן ה-build ל-iOS באמצעות Cocoapods
כשמפתחים ל-iOS, התקנת Cocoapod עשויה להיכשל עם שגיאה לגבי לוקאל השפה או קידוד UTF-8. יש כרגע כמה דרכים שונות לעקוף את הבעיה.
מריצים את
pod install
ישירות מהטרמינל ופותחים את קובץ ה-xcworkspace שנוצר.שדרוג לאחור של גרסת Cocoapods ל-1.10.2. הבעיה קיימת רק בגרסה 1.11 ואילך.
בשדה
~/.bash_profile
או בערך דומה, יש להוסיף אתexport LANG=en_US.UTF-8
איך מעדכנים את הגרסה של ערכות ה-SDK של Firebase Unity
תהליך העדכון של הגרסאות של Firebase Unity SDK תלוי באופן שבו הן יובאו במקור. אלה שתי שיטות הייבוא החלופיות:
- ייבוא קבצים מסוג
.unitypackage
בספרייהAssets/
של הפרויקט - ייבוא באמצעות Unity Package Manager (UPM)
- זו הדרך המומלצת לניהול חבילות ב-Unity מגרסה 2018.4 ואילך.
- אפשר להשתמש בשיטה הזו כדי להפוך את עדכוני הגרסאות הבאים לפשוטים יותר, וכדי ש-
Assets/
יהיה קל יותר כלי לניקוי ספריות.
בפרויקט Unity, צריך להשתמש בשיטת ייבוא אחת בלבד כדי לנהל את כל חבילות Firebase. ההוראות הבאות לא רק עוזרות לעדכן את גרסה של חבילות בודדות, אבל גם במקרה הצורך, כדי להעביר חבילה ל-UPM (שיטת הייבוא המומלצת).