IOS native 設定與使用 Firebase Crashlytics 追蹤裝置錯誤原因
Crashlytics 是什麼
IOS native 設定與使用 Firebase Crashlytics 追蹤裝置錯誤原因

Crashlytics 是什麼
Crashlytics 是 Firebase 提供的當機回報工具,可以幫你收集 App 在使用者裝置上的 crash、錯誤堆疊、裝置資訊、版本資訊,方便你追問題。
在 Firebase 後台 新增 IOS 專案
填入
- Apple 軟體包 ID ( Bundle Identifier ):你的專案 Bundle Identifier
- 應用程式暱稱:
IOSDrinkProject iOS(只是 Firebase 後台顯示名稱,可自行修改) - App Store ID:先留空;只有 App 已上架 App Store 才填數字 ID,並不是 Apple Team ID

在專案 General 查看 Bundle Identifier

下載 GoogleService-Info.plist

下載後,把 GoogleService-Info.plist 檔案放到專案內

透過 Swift Package Manager 加入 FirebaseCrashlytics 插件
上方選單點 File → Add Package Dependencies…

在右上角搜尋框貼上:
https://github.com/firebase/firebase-ios-sdk.git
Dependency Rule 保持預設的 Up to Next Major Version,點 Add Package

把 Frameworks 加入專案
- 點左側藍色的
IOSDrinkProject( 專案名稱 ) - 選 TARGETS → IOSDrinkProject
- 開啟 General
- 找到 Frameworks, Libraries, and Embedded Content
- 點下方的
+ - 搜尋並加入:
FirebaseCrashlytics
若需要 Analytics,再加入:
FirebaseAnalytics

- File → Packages → Resolve Package Versions
- Product → Clean Build Folder
- 重新 Build,讓系統開始使用新加入的 Frameworks

參考 Firebase 官方範例,修改程式啟動點

我的專案,就在 IOSDrinkProjectApp.swift 新增:
import FirebaseCore 與 FirebaseApp.configure()
import SwiftUI
import FirebaseCore
final class AppDelegate: NSObject, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]? = nil
) -> Bool {
FirebaseApp.configure()
return true
}
}
@main
struct IOSDrinkProjectApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self)
private var delegate
var body: some Scene {
WindowGroup {
HomeView()
}
}
}
需要確認是否有正常啟動,可以再加個log
參考官方文件 設定回傳 dSYM
測試閃退事件有機會傳到 Firebase,但報告可能無法顯示正確的檔名、函式名稱與程式碼行數,Debug 測試尤其不完整,所以要設定 dSYM。
Build Settings → Debug Information Format
- Debug:
DWARF with dSYM File - Release:
DWARF with dSYM File

Build Phases → + → New Run Script Phase

移到最後一個 Build Phase,在 Script 內新增:
"${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"

- 將滑鼠放在右側 Build Phases 區域。
- 向下捲動,不是捲 Script 程式碼框。
- 找到 Input Files。
- 點
Input Files下方的+。 - 每新增一列,就貼上一條路徑。
依序加入這 5 條:
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
這代表整個 dSYM 套件
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
這是dSYM 內真正的符號檔
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
dSYM 的 UUID、架構等資訊
$(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
判斷 dSYM 屬於哪個 Firebase App
$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)
對照 App 執行檔及其 UUID,避免重複上傳
…
如果專案已設定 User Script Sandboxing = Yes。
如果 Build Settings → Enable Debug Dylib 也是Yes,還要加入第 6 條:
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib
Xcode 新版 Debug 組態將部分程式碼放進此檔案時使用
設定完成的樣子

專案記得設定 build 版本
否則無法正確回傳錯誤報告

測試專案當機的情境
在專案內放置觸發當機的事件按鈕
Button("Crash")
{
atalError("Crash was triggered")
}
觸發當機事件,等待1~5分後,在後台查看錯誤訊息

像這次錯誤報告,告訴我造成當機的程式碼是在 HomeView.swift 第 20行的地方。
比對專案確認無誤,代表 Firebase Crashlytics 能正常運作了

메타데이터
- post_id
- 79a0144cd0bd
- slug
- ios-native-設定與使用-firebase-crashlytics-追蹤裝置錯誤原因-79a0144cd0bd
- url
- https://medium.com/@croc0909/ios-native-%E8%A8%AD%E5%AE%9A%E8%88%87%E4%BD%BF%E7%94%A8-firebase-crashlytics-%E8%BF%BD%E8%B9%A4%E8%A3%9D%E7%BD%AE%E9%8C%AF%E8%AA%A4%E5%8E%9F%E5%9B%A0-79a0144cd0bd
- canonical_url
- https://medium.com/@croc0909/ios-native-%E8%A8%AD%E5%AE%9A%E8%88%87%E4%BD%BF%E7%94%A8-firebase-crashlytics-%E8%BF%BD%E8%B9%A4%E8%A3%9D%E7%BD%AE%E9%8C%AF%E8%AA%A4%E5%8E%9F%E5%9B%A0-79a0144cd0bd
- author_url
- https://medium.com/@croc0909
- status
- ok
- fetched_at
- 2026-08-17 19:53:35