כברירת מחדל, Firebase Crashlytics מפעיל באופן אוטומטי את פרויקט Flutter כדי להעלות את קובצי הסמלים הנדרשים, שמאפשרים לבטל את הערפול של דוחות הקריסה ולהפוך אותם לקריאים לאנשים.
לצערנו, יש מקרים שבהם הפרויקט לא מוגדר באופן מלא. במדריך הזה מוסבר מה האוטומציה עושה, ומוצגים השלבים הראשונים לניפוי באגים בהגדרת הפרויקט.
פלטפורמות של אפל
בדיקת ההגדרות להעלאת קובצי dSYM
כשמוסיפים את הפלאגין של Crashlytics ל-Flutter ומריצים את הפקודה flutterfire configure, המערכת מנסה להוסיף סקריפט הרצה לסביבת העבודה של Xcode בפרויקט. הסקריפט הזה מוצא את קובצי הסמלים של dSYM שנדרשים ומעלה אותם אל Crashlytics. בלי הקבצים האלה, תוצג ההתראה "Missing dSYM" בלוח הבקרה של Crashlytics, והחריגות יישמרו בקצה העורפי עד להעלאת הקבצים החסרים.
אם נתקלתם בבעיה הזו, קודם כל ודאו שהתקנתם את הסקריפט להרצה:
מאתרים ופותחים את קובץ סביבת העבודה של Xcode בספריית iOS של הפרויקט (FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace).
בודקים אם סקריפט הרצה בשם [firebase_crashlytics] Crashlytics Upload Symbols נוסף לשלבי ה-Build של היעד Runner.
אם הסקריפט הזה לא קיים, אפשר להוסיף אותו באופן ידני:
מאתרים את מזהה האפליקציה ב-Firebase של האפליקציה ל-Apple. אפשר למצוא את המזהה הזה בשני מקומות שונים:
במסוף Firebase, נכנסים אל settings > הגדרות הפרויקט.
עוברים לכרטיס האפליקציות שלך ולוחצים על האפליקציה של אפל ב-Firebase כדי לראות את פרטי האפליקציה, כולל מזהה האפליקציה.
בספרייה ברמה העליונה של פרויקט ה-Flutter, מאתרים את הקובץ firebase_options.dart. מזהה האפליקציה ב-Firebase של האפליקציה ל-Apple מסומן בתווית appId.
לוחצים על add > New Run Script Phase.
חשוב לוודא שהשלב החדש של Run Script הוא שלב ה-build האחרון בפרויקט. אחרת, Crashlytics לא יוכל לעבד קובצי dSYM כמו שצריך.
מרחיבים את הקטע החדש Run Script.
בשדה הסקריפט (שנמצא מתחת לתווית Shell), מוסיפים את הסקריפטים הבאים להרצה.
הסקריפטים האלה מעבדים את קובצי ה-dSYM ומעלים אותם אל Crashlytics.
Xcode מחפש את קובצי הקלט האלה במיקומים שצוינו כדי לוודא שקובצי ה-build זמינים לסקריפט ההרצה. בנוסף, אם מפעילים את User Script Sandboxing, Xcode מאפשר לסקריפט הריצה לגשת רק לקבצים שצוינו ב-Input Files.
כדי ש-Crashlytics יוכל לעבד את קובצי ה-dSYM, צריך לציין את המיקום של קובצי ה-dSYM של הפרויקט.
כשמציינים את המיקום של קובץ ה-build של האפליקציה,
GoogleService-Info.plist,
Crashlytics יכול לשייך את קובצי ה-dSYM לאפליקציית
Firebase.
אם תספקו את המיקום של קובץ ההפעלה של האפליקציה, הסקריפט להרצה יוכל למנוע העלאות כפולות של אותו קובץ dSYM. חשוב לדעת שקובצי האפליקציה הבינאריים לא מועלים.
מאתרים את מזהה האפליקציה ב-Firebase של האפליקציה ל-Apple. אפשר למצוא את המזהה הזה בשני מקומות שונים:
במסוף Firebase, נכנסים אל settings > הגדרות הפרויקט.
עוברים לכרטיס האפליקציות שלך ולוחצים על האפליקציה של אפל ב-Firebase כדי לראות את פרטי האפליקציה, כולל מזהה האפליקציה.
בספרייה ברמה העליונה של פרויקט ה-Flutter, מאתרים את הקובץ firebase_options.dart. מזהה האפליקציה ב-Firebase של האפליקציה ל-Apple מסומן בתווית appId.
כשמריצים את הסקריפט upload-symbols, משתמשים ב--ai FIREBASE_APPLE_APP_ID במקום ב--gsp /path/to/GoogleService-Info.plist.
בודקים את הגדרת הגרסה של Flutter ושל Crashlytics(אם משתמשים בדגל --split-debug-info)
אם בפרויקט Flutter שלכם נעשה שימוש בדגל --split-debug-info (ואולי גם בדגל --obfuscate), צריך לבצע שלבים נוספים כדי להציג דוחות קריסות קריאים לאפליקציה.
כדי שהפרויקט יוכל ליצור באופן אוטומטי סמלים של Flutter (קובצי dSYM) ולהעלות אותם אל Crashlytics, ודאו שהפרויקט משתמש בהגדרת הגרסה המומלצת (Flutter 3.12.0 ואילך ופלאגין Crashlytics ל-Flutter בגרסה 3.3.4 ואילך).
Android
בדיקת הגדרות התלות
הפקודה flutterfire configure מנסה להוסיף את יחסי התלות הנדרשים לקובצי ה-build של Gradle בפרויקט. בלי יחסי התלות האלה, דוחות הקריסה במסוף Firebase עלולים להיות מעורפלים אם הערפול מופעל.
מוודאים שהשורות הבאות מופיעות בקובץ build.gradle ברמת הפרויקט ובקובץ build.gradle ברמת האפליקציה:
בקובץ ה-build ברמת הפרויקט (android/build.gradle), בודקים אם השורה הבאה קיימת:
בקובץ ה-build ברמת האפליקציה (android/app/build.gradle), בודקים אם השורה הבאה קיימת:
// ... other importsandroid{// ... your android config}dependencies{// ... your dependencies}// This section must appear at the bottom of the fileapplyplugin:'com.google.gms.google-services'applyplugin:'com.google.firebase.crashlytics'
מוודאים שאתם משתמשים ב-CLI כדי להעלות סמלים של Flutter (אם אתם משתמשים בדגל --split-debug-info)
אם בפרויקט Flutter שלכם נעשה שימוש בדגל --split-debug-info (ואולי גם בדגל --obfuscate), צריך לבצע שלבים נוספים כדי להציג דוחות קריסות קריאים לאפליקציה.
משתמשים ב-CLI של Firebase (גרסה 11.9.0 ואילך) כדי להעלות סמלי ניפוי באגים של Flutter. צריך להעלות את סמלי ניפוי הבאגים לפני שמדווחים על קריסה מגרסה של קוד מעורפל.
מתיקיית השורש של פרויקט Flutter, מריצים את הפקודה הבאה:
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2026-10-18 (שעון UTC)."],[],[]]