Bắt đầu sử dụng Firebase Crashlytics


Hướng dẫn bắt đầu nhanh này mô tả cách thiết lập Firebase Crashlytics trong ứng dụng của bạn bằng trình bổ trợ Flutter Crashlytics để có thể xử lý toàn bộ sự cố trong bảng điều khiển Firebase.

Việc thiết lập Crashlytics bao gồm việc sử dụng cả công cụ dòng lệnh và IDE. Để hoàn tất quá trình thiết lập, bạn cần buộc gửi một ngoại lệ kiểm thử để gửi báo cáo sự cố đầu tiên cho Firebase.

Trước khi bắt đầu

  1. Nếu bạn chưa làm như vậy, định cấu hình và khởi chạy Firebase trong Flutter dự án.

  2. Đề xuất: Để tự động nhận nhật ký breadcrumb (tập hợp liên kết phân cấp) để tìm hiểu hành động của người dùng dẫn đến sự cố, sự cố không nghiêm trọng hoặc sự kiện ANR, bạn cần bật Google Analytics trong dự án Firebase của mình.

    • Nếu dự án Firebase hiện tại của bạn không có Google Analytics đã bật, bạn có thể bật Google Analytics từ Tích hợp thẻ trong > Cài đặt dự án trong bảng điều khiển Firebase.

    • Nếu bạn đang tạo một dự án Firebase mới, hãy bật Google Analytics trong quy trình tạo dự án.

    Xin lưu ý rằng nhật ký chuỗi khối có sẵn cho tất cả các nền tảng Android và Apple mà Crashlytics hỗ trợ (ngoại trừ watchOS).

Bước 1: Thêm Crashlytics vào dự án Flutter

  1. Từ thư mục gốc của dự án Flutter, hãy chạy lệnh sau để cài đặt trình bổ trợ Flutter cho Crashlytics.

    Để tận dụng nhật ký breadcrumb (tập hợp liên kết phân cấp), bạn cũng có thể thêm trình bổ trợ Flutter cho Google Analytics vào ứng dụng của mình. Đảm bảo rằng Google Analytics đang bật trong dự án Firebase của bạn.

    flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
    
  2. Trong thư mục gốc của dự án Flutter, hãy chạy lệnh sau:

    flutterfire configure
    

    Việc chạy lệnh này đảm bảo rằng cấu hình Firebase của ứng dụng Flutter đã được cập nhật và đối với Android, sẽ thêm Gradle Crashlytics bắt buộc trình bổ trợ cho ứng dụng của mình.

  3. Sau khi hoàn tất, hãy tạo lại dự án Flutter:

    flutter run
    
  4. (Không bắt buộc) Nếu dự án Flutter của bạn sử dụng cờ --split-debug-info (và cờ --obfuscate nếu muốn), bạn cần thực hiện thêm các bước để hiển thị dấu vết ngăn xếp có thể đọc được cho ứng dụng.

    • Nền tảng Apple: Đảm bảo dự án của bạn đang sử dụng cấu hình phiên bản (Flutter 3.12.0+ và Crashlytics trình bổ trợ Flutter phiên bản 3.3.4 trở lên để dự án của bạn có thể tự động tạo và tải các biểu tượng Flutter (tệp dSYM) lên Crashlytics.

    • Android: Sử dụng Firebase CLI (phiên bản 11.9.0 trở lên) để tải các biểu tượng gỡ lỗi Flutter lên. Bạn cần tải các biểu tượng gỡ lỗi lên trước khi báo cáo sự cố từ bản dựng mã bị làm rối mã nguồn.

      Từ thư mục gốc của dự án Flutter, hãy chạy lệnh sau:

      firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
      • FIREBASE_APP_ID: Mã ứng dụng Android trên Firebase của bạn (không phải tên gói)
        Ví dụ về mã ứng dụng Android trên Firebase: 1:567383003300:android:17104a2ced0c9b9b

      • PATH/TO/symbols: Thư mục giống như thư mục bạn truyền vào cờ --split-debug-info khi tạo ứng dụng

Bước 2: Định cấu hình trình xử lý sự cố

Bạn có thể tự động phát hiện tất cả lỗi được gửi trong khung Flutter bằng cách ghi đè FlutterError.onError bằng FirebaseCrashlytics.instance.recordFlutterFatalError:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp();

  // Pass all uncaught "fatal" errors from the framework to Crashlytics
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;

  runApp(MyApp());
}

Để phát hiện các lỗi không đồng bộ mà khung Flutter không xử lý, hãy sử dụng PlatformDispatcher.instance.onError:

Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    FlutterError.onError = (errorDetails) {
      FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
    };
    // Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
    PlatformDispatcher.instance.onError = (error, stack) {
      FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
      return true;
    };
    runApp(MyApp());

}

Để biết ví dụ về cách xử lý các loại lỗi khác, hãy xem Tuỳ chỉnh báo cáo sự cố.

Bước 3: Buộc sự cố thử nghiệm để hoàn tất việc thiết lập

Để hoàn tất việc thiết lập Crashlytics và xem dữ liệu ban đầu trong trang tổng quan Crashlytics của bảng điều khiển Firebase, bạn cần buộc gửi một ngoại lệ kiểm thử.

  1. Thêm mã vào ứng dụng mà bạn có thể sử dụng để buộc kiểm thử ngoại lệ gửi.

    Nếu bạn đã thêm một trình xử lý lỗi để gọi FirebaseCrashlytics.instance.recordError(error, stack, fatal: true) vào Zone cấp cao nhất, bạn có thể sử dụng mã sau để thêm một nút vào ứng dụng của mình khi được nhấn, sẽ cho ra một ngoại lệ kiểm thử:

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. Tạo bản dựng và chạy ứng dụng của bạn.

  3. Buộc gửi ngoại lệ kiểm thử để gửi lượt chuyển đổi đầu tiên của ứng dụng báo cáo:

    1. Mở ứng dụng của bạn từ thiết bị thử nghiệm hoặc trình mô phỏng.

    2. Trong ứng dụng, hãy nhấn nút kiểm thử trường hợp ngoại lệ mà bạn đã thêm bằng cách sử dụng mã ở trên.

  4. Chuyển đến trang tổng quan Crashlytics của bảng điều khiển Firebase để xem sự cố kiểm thử.

    Nếu bạn đã làm mới bảng điều khiển và vẫn không thấy sự cố kiểm thử sau 5 phút, hãy bật tính năng ghi nhật ký gỡ lỗi để xem ứng dụng của bạn có gửi báo cáo sự cố hay không.


Chỉ vậy thôi! Crashlytics hiện đang theo dõi ứng dụng của bạn để phát hiện sự cố và trên Android, các lỗi không nghiêm trọng và lỗi ANR. Truy cập vào trang tổng quan Crashlytics để xem và kiểm tra tất cả báo cáo và số liệu thống kê của bạn.

Các bước tiếp theo