把報錯訊息透過服務上傳
開發者總是試圖創造沒有 bug 的應用,但是 bug 還是會時不時地出現。這些 bug 會給使用者帶來糟糕的體驗,所以獲知 bug 發生的位置以及出現的頻率就顯得極為關鍵了。這樣,你就可以根據 bug 的影響程度優先修復它們。
如何確定使用者遇到 bug 的頻率呢?解決方案是:當異常發生時,生成一份日誌,日誌中包含發生的異常及相關的堆疊訊息。隨後,可以將日誌傳送到異常監控報警平台,比如 Bugsnag、Fabric、Firebase Crashlytics、 Rollbar 或 Sentry。
異常監控報警平台會將上報的崩潰日誌異常訊息聚合並分組歸類,這樣就可以知道應用程式出現異常的頻率並定位異常發生位置。
這個章節中,你可以透過以下步驟學習如何把異常訊息上報給異常監控報警平台 Sentry:
-
從 Sentry 平台獲取 DSN
-
匯入 Sentry package
-
初始化 Sentry SDK
-
捕獲並上報異常
1. 從 Sentry 平台獲取 DSN
在向 Sentry 上報異常訊息前,需要在 Sentry.io 上獲取應用的唯一身份標識 DSN。
根據以下步驟,獲取 DSN:
-
登入賬戶
-
新建一個 Flutter 工程
-
複製包含 DSN 的程式碼片段
2. 匯入 Sentry 套件
匯入 sentry_flutter
package 到應用中,這個 package 能更方便的將錯誤報告傳送給
Sentry 的錯誤追蹤系統。
執行 flutter pub add
將 sentry_flutter
新增為依賴:
$ flutter pub add sentry_flutter
SentryClient
3. 建立 初始化 SDK 來自動捕獲不同的未處理的錯誤。
import 'package:flutter/widgets.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
Future<void> main() async {
await SentryFlutter.init(
(options) => options.dsn = 'https://example@sentry.io/example',
appRunner: () => runApp(const MyApp()),
);
}
另外,你也可以使用 dart-define
標記將 DSN 傳遞給 Flutter。
--dart-define SENTRY_DSN=https://example@sentry.io/example
這番操作都發生了什麼
使用 Sentry 捕獲 Dart 和原生中未處理的錯誤,以上這些操作就足夠了。這包括 iOS 上的 Swift、Objective-C、C 和 C++,以及 Android 上的 Java、Kotlin、C 和 C++。
4. 捕獲並上報異常
除了自動初始化 Sentry SDK 來捕獲和上報錯誤之外,你還可以透過 API 來報告錯誤:
await Sentry.captureException(exception, stackTrace: stackTrace);
更多相關訊息,請參閱 pub.dev 上的 Sentry API 文件。
瞭解更多
更多關於使用 Sentry SDK 的文件可以在 其官網 檢視。
完整範例
檢視 Sentry flutter example 範例應用,體驗完整流程。