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

Chọn nền tảng: iOS+ Android Android NDK Flutter Unity


Hướng dẫn này mô tả cách bắt đầu sử dụng Firebase Crashlytics trong ứng dụng Flutter.

Sau khi thiết lập trình bổ trợ Flutter Crashlytics trong ứng dụng, bạn có thể nhận được báo cáo sự cố toàn diện trong bảng điều khiển Firebase.

Để thiết lập Crashlytics, bạn cần 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 một ngoại lệ thử nghiệm được gửi để gửi báo cáo sự cố đầu tiên của bạn đến Firebase.

Trước khi bắt đầu

  1. Nếu bạn chưa thực hiện, hãy định cấu hình và khởi chạy Firebase trong dự án Flutter của bạn.

  2. Nên dùng: Để tự động nhận nhật ký dấu vết nhằm tìm hiểu các hành động của người dùng dẫn đến sự cố, lỗi 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 bạn đang tạo dự án Firebase mới, hãy bật Google Analytics trong quy trình tạo dự án.

    • Nếu đang sử dụng một dự án Firebase hiện có chưa bật Google Analytics, bạn có thể bật tính năng này trong trang Cài đặt > Tích hợp của bảng điều khiển Firebase.

    Xin lưu ý rằng nhật ký dấu vết có sẵn cho tất cả các nền tảng Android và Apple được 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ý dấu vết, hãy thêm cả trình bổ trợ Flutter cho Google Analytics vào ứng dụng của bạn. Đảm bảo rằng bạn đã 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 đảm bảo rằng cấu hình Firebase của ứng dụng Flutter luôn được cập nhật và đối với Android, lệnh này sẽ thêm trình bổ trợ Gradle Crashlytics cần thiết 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ó thể cả cờ --obfuscate), thì 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 của Apple: Đảm bảo rằng 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ợ Crashlytics Flutter 3.3.4 trở lên) để dự án có thể tự động tạo và tải các ký hiệu 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 ký hiệu gỡ lỗi Flutter lên. Bạn cần tải các ký hiệu 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 (không phải tên gói)
        Ví dụ về Mã ứng dụng Android Firebase: 1:567383003300:android:17104a2ced0c9b9b

      • PATH/TO/symbols: Cùng một 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ả 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 bài viết Tuỳ chỉnh báo cáo sự cố.

Bước 3: Xác định 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 một ngoại lệ thử nghiệm được gửi đi.

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

    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ể dùng mã sau để thêm một nút vào ứng dụng. Khi người dùng nhấn vào nút này, một ngoại lệ kiểm thử sẽ được gửi:

    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ệ thử nghiệm để 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 ngoại lệ kiểm thử mà bạn đã thêm bằng mã ở trên.

  4. Trong bảng điều khiển Firebase, hãy chuyển đến trang tổng quan DevOps & Engagement (DevOps và mức độ tương tác) > Crashlytics để kiểm tra báo cáo sự cố thử nghiệm.

    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ó đ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 sự cố và trên Android, lỗi không nghiêm trọng và lỗi ANR. 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