כברירת מחדל, Firebase Crashlytics מוסיף באופן אוטומטי לפרויקט ב-Flutter את הרכיבים הנדרשים להעלאת קובצי הסמלים, כדי להבטיח שדוחות קריסה יהיו קריאים לאנשים.
לצערנו, יש מקרים שבהם הפרויקט לא מוגדר באופן מלא. במדריך הזה מוסבר מה המערכת האוטומטית עושה ומפורטים השלבים הראשונים לניפוי באגים בהגדרת הפרויקט.
פלטפורמות של Apple
בדיקת ההגדרות להעלאת קובצי dSYM
הוספת הפלאגין של Flutter Crashlytics והרצת הפקודה flutterfire configure
ינסו להוסיף סקריפט להפעלה לסביבת העבודה של הפרויקט ב-Xcode, שיאתר ויטפס את קובצי הסמל הדרושים של dSYM אל Crashlytics. בלי הקבצים האלה, תופיע התראה מסוג 'חסר קובץ dSYM' בלוח הבקרה של Crashlytics, והחרגות יישמרו בקצה העורפי עד להעלאת הקבצים החסרים.
אם נתקלת בבעיה הזו, קודם כל צריך לוודא שסקריפט ההפעלה מותקן:
מאתרים את קובץ סביבת העבודה של Xcode ופותחים אותו בספריית ה-iOS של הפרויקט (
FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace
).בודקים אם סקריפט ההפעלה בשם
[firebase_crashlytics] Crashlytics Upload Symbols
נוסף לשלבי ה-build של היעד Runner.עיינו בקטע הרלוונטי בהמשך כדי לבדוק אם סקריפט ההפעלה לא קיים או אם סקריפט ההפעלה קיים.
סקריפט ההפעלה להעלאה אוטומטית של קובצי dSYM לא קיים
אם סקריפט ההפעלה הזה לא קיים, אפשר להוסיף אותו באופן ידני:
מאתרים את מזהה האפליקציה ב-Firebase של האפליקציה ל-Apple. יש שני מקומות שונים שבהם אפשר למצוא את המזהה הזה:
במסוף Firebase, עוברים אל
. גוללים למטה אל הכרטיס האפליקציות שלך ולוחצים על האפליקציה שלכם ל-Firebase ל-Apple כדי להציג את פרטי האפליקציה, כולל מזהה האפליקציה. > Project settings בספרייה ברמה העליונה של פרויקט Flutter, מחפשים את הקובץ
firebase_options.dart
. מזהה האפליקציה ב-Firebase של האפליקציה ל-Apple מסומן בתוויתGOOGLE_APP_ID
.
לוחצים על
> New Run Script Phase.חשוב לוודא שהשלב החדש הרצת סקריפט הוא שלב ה-build האחרון של הפרויקט. אחרת, Crashlytics לא יוכל לעבד קובצי dSYM כראוי.
מרחיבים את הקטע החדש הרצת סקריפט.
בשדה הסקריפט (שנמצא מתחת לתווית Shell), מוסיפים את סקריפט ההפעלה הבא.
הסקריפטים האלה מעבדים את קובצי ה-dSYM ומעלים את הקבצים אל Crashlytics.
$PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase --validate -ai
FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM$PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase -ai
FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM- FIREBASE_APP_ID: מזהה האפליקציה שלכם ב-Firebase ל-Apple (לא מזהה החבילה שלכם ב-Apple)
דוגמה למזהה האפליקציה שלכם ב-Firebase ל-Apple:1:1234567890:ios:321abc456def7890
צריך למצוא את מזהה האפליקציה ב-Firebase?
יש שתי דרכים למצוא את מזהה האפליקציה ב-Firebase:
בקובץ
GoogleService-Info.plist
, מזהה האפליקציה הוא הערךGOOGLE_APP_ID
.במסוף Firebase, עוברים אל Project settings. גוללים למטה אל הכרטיס האפליקציות שלך ולוחצים על אפליקציית Firebase הרצויה כדי למצוא את מזהה האפליקציה שלה.
- FIREBASE_APP_ID: מזהה האפליקציה שלכם ב-Firebase ל-Apple (לא מזהה החבילה שלכם ב-Apple)
בקטע Input Files, מוסיפים את הנתיבים למיקומים של הקבצים הבאים:
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
$(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)
למה צריך את המיקומים של הקבצים האלה
Xcode מחפש את קובצי הקלט האלה במיקומים שצוינו כדי לוודא שקובצי ה-build זמינים לסקריפט ההפעלה. בנוסף, אם ההגדרה User Script Sandboxing מופעלת, Xcode מאפשר לסקריפט ההפעלה לגשת רק לקבצים שצוינו בInput Files.
- כדי לאפשר ל-Crashlytics לעבד קובצי dSYM, צריך לציין את המיקום של קובצי ה-dSYM בפרויקט.
- אם תספקו את המיקום של קובץ
GoogleService-Info.plist
המאוחזר של האפליקציה, Crashlytics יוכל לשייך את קובצי ה-dSYM לאפליקציה ב-Firebase. - הצגת המיקום של קובץ ההפעלה של האפליקציה מאפשרת ל-run script למנוע העלאות כפולות של אותו קובץ dSYM. חשוב לזכור שלא מעלים קובצי בינארי של אפליקציות.
Run script for auto-upload of dSYMs exists
אם סקריפט ההפעלה קיים, תוכלו לעיין במדריך הספציפי ל-Apple לפתרון בעיות שקשורות ל-dSYM. אם תבחרו להעלות את קובצי ה-dSYM באמצעות התהליך שמתואר, תצטרכו לבצע את השלבים הנוספים הבאים:
מאתרים את מזהה האפליקציה ב-Firebase של האפליקציה ל-Apple. יש שני מקומות שונים שבהם אפשר למצוא את המזהה הזה:
במסוף Firebase, עוברים אל
. גוללים למטה אל הכרטיס האפליקציות שלך ולוחצים על האפליקציה שלכם ל-Firebase ל-Apple כדי להציג את פרטי האפליקציה, כולל מזהה האפליקציה. > Project settings בספרייה ברמה העליונה של פרויקט Flutter, מחפשים את הקובץ
firebase_options.dart
. מזהה האפליקציה ב-Firebase של האפליקציה ל-Apple מסומן בתוויתGOOGLE_APP_ID
.
כשמריצים את הסקריפט
upload-symbols
, משתמשים ב-
במקום ב--ai FIREBASE_APPLE_APP_ID .-gsp /path/to/GoogleService-Info.plist
בודקים את הגדרת הגרסה של Flutter ו-Crashlytics (אם משתמשים בדגל --split-debug-info
)
אם בפרויקט Flutter שלכם נעשה שימוש בדגל --split-debug-info
(ואם רוצים גם בדגל --obfuscate
), צריך לבצע שלבים נוספים כדי להציג את מעקב הסטאק של האפליקציה בצורה קריא.
חשוב לוודא שהפרויקט שלכם משתמש בהגדרות הגרסה המומלצות (Flutter 3.12.0 ואילך ופלאגין Crashlytics Flutter 3.3.4 ואילך), כדי שהפרויקט יוכל ליצור ולהעלות באופן אוטומטי סמלים של Flutter (קבצי dSYM) אל Crashlytics.
Android
בדיקת הגדרות התלות
הפקודה flutterfire configure
מנסה להוסיף יחסי תלות נדרשים לקובצי ה-build של Gradle בפרויקט. בלי יחסי התלות האלה, יכול להיות שדוחות קריסה במסוף Firebase יהיו מעורפלים אם ההצפנה תופעל.
מוודאים שהשורות הבאות נמצאות בקובץ build.gradle
ברמת הפרויקט ובקובץ build.gradle
ברמת האפליקציה:
בקובץ ה-build ברמת הפרויקט (
android/build.gradle
), מחפשים את השורה הבאה:dependencies { // ... other dependencies classpath 'com.google.gms:google-services:4.3.5' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1' }
בקובץ ה-build ברמת האפליקציה (
android/app/build.gradle
), מחפשים את השורה הבאה:// ... other imports android { // ... your android config } dependencies { // ... your dependencies } // This section must appear at the bottom of the file apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.firebase.crashlytics'
מוודאים שאתם משתמשים ב-CLI כדי להעלות סמלי Flutter (אם משתמשים בדגל --split-debug-info
)
אם בפרויקט Flutter שלכם נעשה שימוש בדגל --split-debug-info
(ואם רוצים גם בדגל --obfuscate
), צריך לבצע שלבים נוספים כדי להציג את מעקב הסטאק של האפליקציה בצורה קריא.
משתמשים ב-Firebase CLI (גרסה 11.9.0 ואילך) כדי להעלות סמלי ניפוי באגים של Flutter. צריך להעלות את סמלי ניפוי הבאגים לפני שמדווחים על קריסה מ-build של קוד מעורבב.
בתיקיית השורש של פרויקט Flutter, מריצים את הפקודה הבאה:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO /symbols
FIREBASE_APP_ID: מזהה האפליקציה שלכם ב-Firebase ל-Android (לא שם החבילה)
דוגמה למזהה האפליקציה שלכם ב-Firebase ל-Android:1:567383003300:android:17104a2ced0c9b9b
צריך למצוא את מזהה האפליקציה ב-Firebase?
יש שתי דרכים למצוא את מזהה האפליקציה ב-Firebase:
בקובץ
google-services.json
, מזהה האפליקציה הוא הערךmobilesdk_app_id
.במסוף Firebase, עוברים אל Project settings. גוללים למטה אל הכרטיס האפליקציות שלך ולוחצים על אפליקציית Firebase הרצויה כדי למצוא את מזהה האפליקציה שלה.
PATH/TO/symbols
: אותה ספרייה שמעבירים לדגל--split-debug-info
כשמפתחים את האפליקציה
אם הבעיות נמשכות, אפשר לעיין במדריך הספציפי ל-Android לפתרון בעיות בדוחות מעורפלים.