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

Hướng dẫn 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 của Crashlytics để bạn có thể nhận được báo cáo sự cố toàn diện trong bảng điều khiển của Firebase.

Để thiết lập Crashlytics, bạn cần sử dụng cả công cụ dòng lệnh và IDE của bạn. Để hoàn tất việc thiết lập, bạn cần buộc phải gửi một trường hợp 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. Hãy định cấu hình và khởi chạy Firebase trong dự án Flutter nếu bạn chưa thực hiện.

  2. Đề xuất: Để tự động nhận nhật ký đường dẫn nhằm tìm hiểu các hành động của người dùng dẫn đến sự cố, sự kiện không nghiêm trọng hoặc lỗi 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 chưa bật Google Analytics, bạn có thể bật Google Analytics từ thẻ Tích hợp trong > Cài đặt dự án trong bảng điều khiển của 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ý breadcrumb (tập hợp liên kết phân cấp) có sẵn trên mọi 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. Trong 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, hãy thêm trình bổ trợ Flutter dành cho Google Analytics vào ứng dụng của bạn. Bạn hãy nhớ bật Google Analytics trong dự án Firebase.

    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 sẽ đảm bảo rằng cấu hình Firebase của ứng dụng Flutter của bạn đã được cập nhật và đối với Android, sẽ thêm trình bổ trợ Gradle cho Crashlytics bắt buộc vào ứng dụng của bạn.

  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ả cờ --obfuscate, nếu muốn), bạn cần thực hiện thêm một số bước để hiển thị dấu vết ngăn xếp có thể đọc được cho ứng dụng của mình.

    • 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 được đề xuất (Flutter 3.12.0 trở lên và trình bổ trợ Flutter dành cho Crashlytics 3.3.4 trở lên) để dự án của bạn có thể tự động tạo và tải 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 biểu tượng gỡ lỗi Flutter lên. Bạn cần tải biểu tượng gỡ lỗi lên trước khi báo cáo sự cố từ một bản dựng mã bị làm rối mã nguồn.

      Trong 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 Firebase của bạn (không phải tên gói)
        Mã ứng dụng Android Firebase mẫu: 1:567383003300:android:17104a2ced0c9b9b

      • PATH/TO/symbols: Chính thư mục mà bạn truyền đến 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ả các lỗi được tạo ra 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ý được, 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 bài viết Tuỳ chỉnh báo cáo sự cố.

Bước 3: Buộc một sự cố thử nghiệm hoàn tất quá trình 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 của Firebase, bạn cần buộc gửi một trường hợp ngoại lệ kiểm thử.

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

    Nếu đã 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. Nút này sẽ gửi ra một ngoại lệ kiểm thử khi được nhấn:

    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 trường hợp ngoại lệ kiểm thử để gửi báo cáo đầu tiên của ứng dụng:

    1. Mở ứng dụng trên thiết bị kiểm thử hoặc trình mô phỏng.

    2. Trong ứng dụng, hãy nhấn vào nút kiểm thử ngoại lệ mà bạn đã thêm bằng mã ở trên.

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

    Nếu đã làm mới bảng điều khiển mà 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 liệu ứng dụng có đang 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 các sự cố và lỗi không nghiêm trọng và lỗi ANR trên Android. Hãy truy cập vào trang tổng quan Crashlytics để xem và tìm hiểu 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