בדף הזה מפורטים טיפים ופתרונות לבעיות ספציפיות ל-Unity שאתם עשויים להיתקל בהן במהלך השימוש ב-Firebase.
נתקלתם בבעיות אחרות או שהבעיה שלכם לא מופיעה בהמשך? כדאי לעיין גם בשאלות הנפוצות הראשיות בנושא Firebase כדי לקבל מידע נוסף על Firebase באופן כללי או על מוצרים ספציפיים.
בעיה ב-dex יחיד במהלך פיתוח אפליקציה ל-Android
בזמן פיתוח אפליקציה ל-Android, יכול להיות שתיתקלו בשגיאה שקשורה לקובץ dex יחיד. אם הפרויקט שלכם מוגדר להשתמש במערכת ה-build של Gradle, הודעת השגיאה תיראה בערך כך:
Cannot fit requested classes in a single dex file.
קובצי Dalvik Executable (.dex) משמשים להחזקת קבוצה של הגדרות מחלקה והנתונים הנלווים שלהן לאפליקציות ל-Android (.apk). קובץ dex יחיד מוגבל להפניה ל-65,536 שיטות. ה-build ייכשל אם המספר הכולל של השיטות מכל ספריות Android בפרויקט שלכם יחרוג מהמגבלה הזו.
ב-2017.2, Unity הציגה את Minification, שמשתמשת ב-Proguard (או בכלים אחרים בגרסאות מסוימות של Unity) כדי להסיר קוד שלא בשימוש, וכך להפחית את המספר הכולל של השיטות שאליהן יש הפניות בקובץ dex יחיד. האפשרות הזו נמצאת ב-Player Settings > Android > Publishing Settings > Minify. האפשרויות עשויות להשתנות בגרסאות שונות של Unity, לכן כדאי לעיין במסמכי התיעוד הרשמיים של Unity.
אם מספר השיטות שנוספו עדיין חורג מהמגבלה, אפשר להפעיל את multidex. יש כמה דרכים לעשות את זה ב-Unity:
- אם
Custom Gradle Templateמופעל בקטעPlayer Settings, צריך לשנות אתmainTemplate.gradle. - אם אתם משתמשים ב-Android Studio כדי ליצור את הפרויקט שייצאתם, אתם צריכים לשנות את הקובץ
build.gradleברמת המודול.
פרטים נוספים זמינים במדריך למשתמש של multidex.
בעיות בפיתוח ל-Android עם minSdkVersion 23
כשמפתחים ל-Android, אם מטרגטים את minSdkVersion 23, יכול להיות שהתהליך ייכשל בשלב ה-dexing, בדרך כלל במשימת Gradle ':launcher:mergeExtDexDebug', שבה תופיע ההודעה "Failed to transform" (ההמרה נכשלה) באחת מספריות Android. הסיבה לכך היא באג בכלי ברירת המחדל של dex ב-Android SDK, שרוב עורכי Unity משתמשים בו. אפשר לתקן את הבאג בכמה דרכים:
- מגדירים את
minSdkVersionל-24. - מפעילים את ההקטנה של Android, ב-Player Settings > Android > Publishing Settings > Minify.
- כדי לציין גרסה אחרת של כלי ה-dex, מוסיפים את השורה הבאה לקובץ
settingsTemplate.gradle:
buildscript {
repositories {
mavenLocal()
maven { url 'https://maven.google.com' }
mavenCentral()
}
dependencies {
classpath 'com.android.tools:r8:8.3.37'
}
}
בעיות שקשורות לפיתוח ל-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 (שיטת הייבוא המומלצת).