前往 Crashlytics 資訊主頁取得易讀的當機報告

根據預設,Firebase Crashlytics 會自動處理偵錯符號檔案 (dSYM),提供經過去模糊化且人類可讀的當機報告。您通常可以在應用程式中的 Crashlytics 初始設定期間設定這個行為,具體做法是新增執行指令碼,以便在應用程式的建構階段自動上傳 dSYM 檔案。

遺憾的是,在少數情況下,可能導致自動 dSYM 檔案上傳失敗。本指南針對 Crashlytics 找不到應用程式的 dSYM 檔案,提供疑難排解的疑難排解方法。

確認 Xcode 可自動處理 dSYM 並上傳檔案

在應用程式中設定 Crashlytics 時,您必須設定執行指令碼,以便自動處理 dSYM 並上傳檔案。

請確定您的 Crashlytics 執行指令碼設定與 Xcode 15 開始的新規定相符。如果設定不是最新狀態,可能會發生下列錯誤:
error: Info.plist Error Unable to process Info.plist at path ...

具體來說,Xcode 15 以上版本會需要提供一組更完整的檔案位置。針對 Crashlytics 執行指令碼 (firebase-ios-sdk/Crashlytics/run),請確認已完成下列設定:

  1. 按一下「Build Phases」分頁標籤,展開「Run Script」部分。

  2. 在「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 是否產生 dSYM

通常,dSYM 檔案會遺失,因為 Xcode 只是不會產生這些檔案。上傳作業失敗時,Crashlytics 會在 Firebase 控制台中顯示「缺少 dSYM」快訊。如果您收到這類快訊,請先檢查 Xcode 是否為每個版本產生正確的 dSYM:

  1. 在 Xcode 中開啟專案,然後在 Xcode Navigator 中選取專案檔案。

  2. 選取主要建構目標。

  3. 開啟目標的「Build Settings」分頁,然後按一下「All」

  4. 搜尋:debug information format

  5. 針對所有建構類型,將「Debug Information Format」設為「DWARF with dSYM File」

  6. 重新建構應用程式。

您的當機報告現在應會顯示在 Crashlytics 資訊主頁中。如果問題仍未解決,或是發生其他錯誤,請嘗試找出 dSYM手動上傳至 Crashlytics

在本機電腦上尋找 dSYM

執行下列指令,以顯示機器上的所有 dSYM 的 UUID,並搜尋缺少的 dSYM:

mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done

找到 dSYM 後,請手動上傳至 Crashlytics。如果 mdfind 指令未傳回任何結果,您可以在 .app 所在的 Products 目錄中尋找 (預設,Products 目錄位於 Derived Data)。如果應用程式已發布至實際工作環境,您也可以在磁碟的 .xcarchive 目錄中尋找應用程式的 dSYM:

  1. 在 Xcode 中開啟「Splitr」視窗,然後從清單中選取應用程式。Xcode 會顯示專案的封存清單。

  2. 在封存檔上按住 Control 鍵並按一下滑鼠,即可在 Finder 中查看封存檔。再次按下 Control 鍵並按一下該選項,然後點選「Show Package Contents」

  3. .xcarchive 中的 dSYMs 目錄包含做為 Xcode 封存程序的一部分產生的 dSYMs。

上傳 dSYM

Crashlytics 支援多種上傳 dSYM 檔案的方法,包括自動手動上傳。

(建議) 自動處理 dSYM 並上傳檔案

一開始設定 Crashlytics 時,很有可能是應用程式的自動上傳行為。不過,如果自動上傳失敗,請檢查您的設定是否正確

手動上傳 dSYM 檔案

如果自動上傳作業失敗,可以使用下列任一選項手動上傳 dSYM 檔案。

  • 方法 1:使用主控台型的「拖曳」選項上傳含有 dSYM 檔案的 ZIP 檔案 (依序前往 Firebase 主控台 >「Crashlytics」>「dSYM」分頁)。

  • 方法 2:使用 upload-symbols 指令碼,您可以在建構程序中的任何位置呼叫該指令碼,手動上傳 dSYM 檔案。如要執行 upload-symbols 指令碼,請使用下列選項之一:

    • 選項 A:在建構程序中加入下列程式碼:

      find dSYM_DIRECTORY -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p PLATFORM \{\}
    • 方法 B:直接透過終端機執行指令碼:

      /PATH/TO/PODS/DIRECTORY/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p ios /PATH/TO/dSYMs

    如需這個指令碼的使用注意事項和其他操作說明,請使用 --help 參數執行 upload-symbols