Firebase Crashlytics'i kullanmaya başlayın


Bu hızlı başlangıç kılavuzunda, Firebase konsolunda kapsamlı kilitlenme raporları alabilmek için uygulamanızda Crashlytics Flutter eklentisiyle Firebase Crashlytics'ü nasıl ayarlayacağınız açıklanmaktadır.

Crashlytics'ü ayarlamak için hem komut satırı aracını hem de IDE'nizi kullanmanız gerekir. İlk kilitlenme raporunuzu Firebase'e göndermek için kurulumu tamamlamak üzere bir test istisnası atılmasını zorlamanız gerekir.

Başlamadan önce

  1. Henüz yapmadıysanız Flutter projenizde Firebase'i yapılandırın ve başlatın.

  2. Önerilen: Otomatik içerik haritası günlükleri Kilitlenme, önemli olmayan veya ANR etkinliğiyle sonuçlanan kullanıcı işlemlerini anlamak için Firebase projenizde Google Analytics modunu etkinleştirmeniz gerekir.

    • Mevcut Firebase projenizde Google Analytics yoksa Google Analytics öğesini şuradan etkinleştirebilirsiniz: hesabınızın Entegrasyonlar > Proje ayarları Firebase konsolunda kontrol edebilirsiniz.

    • Yeni bir Firebase projesi oluşturuyorsanız Google Analytics özelliğini etkinleştirin müzakere tekniği de eklediniz.

    İçerik haritası günlüklerinin tüm Android ve Apple platformları için kullanılabildiğini unutmayın. Crashlytics tarafından desteklenir (watchOS hariç).

1. adım: Crashlytics öğesini Flutter projenize ekleyin

  1. Crashlytics için Flutter eklentisini yüklemek üzere Flutter projenizin kökünden aşağıdaki komutu çalıştırın.

    Breadcrumb günlüklerinden yararlanmak için uygulamanıza Google Analytics için Flutter eklentisini de ekleyin. Firebase projenizde Google Analytics'in etkinleştirildiğinden emin olun.

    flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
    
  2. Flutter projenizin kök dizininden aşağıdaki komutu çalıştırın:

    flutterfire configure
    

    Bu komutu çalıştırmak, Flutter uygulamanızın Firebase yapılandırmasının güncel olmasını sağlar ve Android için uygulamanıza gerekli Crashlytics Gradle eklentisini ekler.

  3. İşlem tamamlandığında Flutter projenizi yeniden oluşturun:

    flutter run
    
  4. (İsteğe bağlı) Flutter projenizde --split-debug-info işareti kullanılıyorsa (ve isteğe bağlı olarak --obfuscate işaretini) kullanarak, uygulamanız için okunabilir yığın izlemeleri (stack trace) göstermek için gereklidir.

    • Apple platformları: Projenizin Flutter simgelerini (dSYM dosyaları) otomatik olarak oluşturup Crashlytics'ye yükleyebilmesi için önerilen sürüm yapılandırmasını (Flutter 3.12.0 ve sonraki sürümler ile Crashlytics Flutter eklentisi 3.3.4 ve sonraki sürümler) kullandığından emin olun.

    • Android: Yüklemek için Firebase KSA'yı (v.11.9.0+) kullanın Flutter hata ayıklama sembolleri. Karartılmış kod derlemesinden kaynaklanan bir kilitlenmeyi bildirmeden önce hata ayıklama simgelerini yüklemeniz gerekir.

      Flutter projenizin kök dizininden aşağıdaki komutu çalıştırın:

      firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
      • FIREBASE_APP_ID: Firebase Android uygulaması kimliğiniz (kimliğiniz değil: paket adı)
        Örnek Firebase Android uygulaması kimliği: 1:567383003300:android:17104a2ced0c9b9b

      • PATH/TO/symbols: Uygulamayı oluştururken --split-debug-info işaretçisine ilettiğiniz dizin

2. Adım: Kilitlenme işleyicilerini yapılandırın

FlutterError.onError yerine FirebaseCrashlytics.instance.recordFlutterFatalError yazarak Flutter çerçevesi içinde oluşturulan tüm hataları otomatik olarak yakalayabilirsiniz:

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());
}

Flutter çerçevesi tarafından işlenmeyen asenkron hataları yakalamak için PlatformDispatcher.instance.onError kullanın:

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());

}

Diğer hata türlerinin nasıl işleneceğine dair örnekler için bkz. Kilitlenme raporlarını özelleştirme.

3. Adım: Kurulumu tamamlamak için test kilitlenmesini zorunlu kılın

Crashlytics kurulumunu tamamlamak ve ilk verileri Crashlytics içinde görmek için Firebase konsolunun kontrol panelinde bir test istisnasının olması atılır.

  1. Uygulamanıza, test istisnasının atılmasını zorlamak için kullanabileceğiniz kod ekleyin.

    Üst düzey Zone alanına FirebaseCrashlytics.instance.recordError(error, stack, fatal: true) çağıran bir hata işleyici eklediyseniz uygulamanıza, basıldığında test istisnası atanacak bir düğme eklemek için aşağıdaki kodu kullanabilirsiniz:

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. Uygulamanızı derleyip çalıştırın.

  3. Uygulamanızın ilk raporunu göndermek için test istisnasının atılmasını zorunlu kılın:

    1. Test cihazınızdan veya emülatörünüzden uygulamanızı açın.

    2. Uygulamanızda, yukarıdaki kodu kullanarak eklediğiniz test istisnası düğmesine basın.

  4. Test kilitlenmenizi görmek için Firebase konsolunun Crashlytics kontrol paneline gidin.

    Konsolu yenilediyseniz ve test kilitlenmesini hâlâ görmüyorsanız beş dakika sonra hata ayıklama günlük kaydını etkinleştirme uygulamanızın kilitlenme raporu gönderip göndermediğini kontrol edin.


. Hepsi bu kadar! Crashlytics artık uygulamanızı kilitlenmelere karşı izliyor ve Android, önemli olmayan hatalar ve ANR'ler. Şurayı ziyaret edin: Crashlytics kontrol paneli kullanarak tüm raporlarınızı ve istatistiklerinizi görüntüleyebilir ve inceleyebilirsiniz.

Sonraki adımlar