בדף הזה מפורטים טיפים לפתרון בעיות ספציפיות ל-Unity שאתם עשויים להיתקל בהן במהלך השימוש ב-Firebase.
נתקלתם באתגרים אחרים או שהבעיה שלכם לא מפורטת בהמשך? מומלץ לעיין בשאלות הנפוצות הראשיות בנושא Firebase כדי לקבל מידע נוסף על Firebase או על מוצרים ספציפיים.
בעיה ב-single 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 בפרויקט שלכם יעלה על המגבלה הזו.
Unity הציגה Minification (צמצום) בגרסה 2017.2, שמשתמשת ב-Proguard (או בכלים אחרים בגרסאות מסוימות של Unity) כדי להסיר קוד שלא נמצא בשימוש. כך אפשר לצמצם את המספר הכולל של שיטות שמופנות אליהן בקובץ dex יחיד. האפשרות נמצאת בהגדרות הנגן > Android > הגדרות פרסום > צמצום. האפשרויות עשויות להיות שונות בגרסאות שונות של Unity, לכן מומלץ לעיין במסמכי התיעוד הרשמיים של Unity.
אם מספר השיטות שאליהן מתייחסים עדיין חורג מהמגבלה, אפשרות נוספת היא להפעיל את multidex. יש כמה דרכים לעשות את זה ב-Unity:
- אם האפשרות
Custom Gradle TemplateבקטעPlayer Settingsמופעלת, משנים אתmainTemplate.gradle. - אם אתם משתמשים ב-Android Studio כדי לבצע build של הפרויקט המיוצא, אתם צריכים לשנות את הקובץ
build.gradleברמת המודול.
פרטים נוספים זמינים במדריך למשתמש בנושא multidex.
בעיות ב-build ל-Android עם minSdkVersion 23
כשמבצעים build ל-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 SDKs
תהליך העדכון של הגרסאות של Firebase Unity SDK תלוי באופן שבו הן יובאו בהתחלה. אלה שתי שיטות הייבוא החלופיות:
- ייבוא של
.unitypackageקבצים בספרייהAssets/של הפרויקט - ייבוא באמצעות Unity Package Manager (UPM)
- זו הדרך המומלצת לנהל חבילות ב-Unity 2018.4 ואילך.
- השיטה הזו תעזור לכם לעדכן גרסאות בעתיד בקלות, ותשמור על
Assets/ניקיון הספרייה.
בפרויקט Unity, צריך להשתמש רק בשיטת ייבוא אחת כדי לנהל את כל חבילות Firebase. אפשר להשתמש בהוראות שבהמשך לא רק כדי לעדכן את הגרסה של חבילות בודדות, אלא גם כדי להעביר את ניהול החבילות ל-UPM (שיטת הייבוא המומלצת), אם צריך.