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

根據預設,Firebase Crashlytics 會自動處理偵錯符號 (dSYM) 檔案,為您提供經過去模糊化且使用者可理解的當機報告。您通常會在應用程式的初始設定期間設定這類行為,特別是透過新增執行指令碼,在應用程式的建構階段自動上傳 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 只是不會產生 dSYM 檔案。如果上傳失敗,Crashlytics 會在 Firebase 控制台中顯示「缺少 dSYM」快訊。如果您收到這則快訊,請先檢查 Xcode 是否為每個建構作業產生正確的 dSYM:

  1. 在 Xcode 中開啟專案,然後在 Xcode 導覽工具中選取專案檔案。

  2. 選取主要建構目標。

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

  4. 搜尋:debug information format

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

  6. 重新建構應用程式。

您的當機報告現在應該會顯示在 Crashlytics 資訊主頁中。如果問題持續發生或發生其他錯誤,請試著找出 dSYM,並手動將 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 中開啟「Acquisitionr」視窗,然後從清單中選取您的應用程式。Xcode 會顯示專案的封存清單。

  2. 按住 Control 鍵並按一下封存區,即可在 Finder 中查看。再按一下 Control 鍵,然後點選「Show Package Contents」

  3. .xcarchive 中是一個 dSYM 目錄,其中包含做為 Xcode 封存程序的一部分產生的 dSYM。

上傳 dSYM

Crashlytics 支援多種上傳 dSYM 檔案的方式,可自動手動上傳。

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

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

手動上傳 dSYM 檔案

如果自動上傳失敗,您可以使用下列其中一個選項手動上傳 dSYM 檔案。

  • 選項 1:使用主控台的「拖曳」選項,上傳包含 dSYM 檔案的 ZIP 檔案 (前往 Firebase 控制台 >「Crashlytics」>「dSYMs」分頁標籤)。

  • 選項 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