根據預設,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
),請確認您已完成以下設定:
按一下「Build Phases」分頁標籤,然後展開「Run Script」部分。
在「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:
在 Xcode 中開啟專案,然後在 Xcode Navigator 中選取專案檔案。
選取主要建構目標。
開啟目標的「Build Settings」分頁,然後按一下「All」。
搜尋:
debug information format
。將所有建構類型的偵錯資訊格式設為 DWARF 搭配 dSYM 檔案。
重新建構應用程式。
您的當機報告現在應該會顯示在 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:
在 Xcode 中開啟「Splitr」視窗,然後從清單中選取應用程式。Xcode 會顯示專案的封存檔清單。
按住 Control 鍵並按一下封存檔,即可在 Finder 中查看該檔案。再次按住滑鼠右鍵,然後點選「Show Package Contents」。
.xcarchive
中的 dSYMs 目錄包含做為 Xcode 封存程序的一部分產生的 dSYMs。
上傳 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
。