Firebase Crashlytics'i kullanmaya başlayın

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

Crashlytics'i kurmak için hem bir komut satırı aracı hem de IDE'nizi kullanmanız gerekir. Kurulumu tamamlamak için, ilk kilitlenme raporunuzu Firebase'e göndermek üzere bir test istisnası oluşturmaya zorlamanız gerekir.

Başlamadan önce

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

  2. Önerilen: Kilitlenme, önemli olmayan hata veya ANR etkinliğine neden olan kullanıcı işlemlerini anlamak amacıyla içerik haritası günlüklerini otomatik olarak almak için Firebase projenizde Google Analytics'i etkinleştirmeniz gerekir.

    • Mevcut Firebase projenizde Google Analytics etkin değilse Firebase konsolundaki > Proje ayarları'nda yer alan Entegrasyonlar sekmesinden Google Analytics'i etkinleştirebilirsiniz.

    • Yeni bir Firebase projesi oluşturuyorsanız proje oluşturma iş akışı sırasında Google Analytics'i etkinleştirin.

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

1. Adım: Flutter projenize Crashlytics'i ekleyin

  1. Flutter projenizin kök dizininden, aşağıdaki komutu çalıştırarak Crashlytics için Flutter eklentisini yükleyin.

    İçerik haritası günlüklerinden yararlanmak amacıyla 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 gerekli Crashlytics Gradle eklentisini uygulamanıza ekler.

  3. Tamamlandıktan sonra Flutter projenizi yeniden oluşturun:

    flutter run
    
  4. (İsteğe bağlı) Flutter projeniz --split-debug-info işaretini (ve isteğe bağlı olarak da --obfuscate işaretini) kullanıyorsa uygulamalarınız için okunabilir yığın izlemeleri göstermek üzere ek adımlar gerekir.

    • Apple platformları: Projenizin, otomatik olarak Flutter sembolleri (dSYM dosyaları) oluşturabilmesi ve Crashlytics'e yükleyebilmesi için önerilen sürüm yapılandırmasını (Flutter 3.12.0+ ve Crashlytics Flutter eklentisi 3.3.4+) kullandığından emin olun.

    • Android: Akış hata ayıklama sembollerini yüklemek için Firebase CLI'yı (v.11.9.0+) kullanın. Karartılmış bir kod derlemesindeki kilitlenmeyi bildirmeden önce hata ayıklama sembollerini 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 Uygulama Kimliğiniz (paket adınız değil)
        Örnek Firebase Android Uygulama Kimliğiniz: 1:567383003300:android:17104a2ced0c9b9b

      • PATH/TO/symbols: Uygulamayı oluştururken --split-debug-info işaretine ilettiğiniz dizindir.

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

FlutterError.onError öğesini FirebaseCrashlytics.instance.recordFlutterFatalError ile geçersiz kılarak Flutter çerçevesi içinde oluşan 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 eşzamansız hataları yakalamak için PlatformDispatcher.instance.onError işlevini 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 ele alınacağına dair örnekler için Kilitlenme raporlarını özelleştirme bölümüne bakın.

3. adım: Kurulumu tamamlamak için kilitlenme testini zorlayın

Crashlytics'in kurulumunu tamamlamak ve Firebase konsolunun Crashlytics kontrol panelinde ilk verileri görmek için bir test istisnasının atılmasını zorunlu kılmanız gerekir.

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

    Üst düzey Zone öğesine FirebaseCrashlytics.instance.recordError(error, stack, fatal: true) çağrısı yapan bir hata işleyici eklediyseniz uygulamanıza basıldığında test istisnası gönderen 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ı sağlayın:

    1. Uygulamanızı test cihazınızdan veya emülatörden 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 beş dakika geçmesine rağmen test kilitlenmesini hâlâ görmüyorsanız uygulamanızın kilitlenme raporları gönderip göndermediğini görmek için hata ayıklama günlük kaydını etkinleştirin.


Hepsi bu kadar. Crashlytics artık uygulamanızı kilitlenmelere ve Android'de önemli olmayan hatalara ve ANR'lere karşı izliyor. Tüm raporlarınızı ve istatistiklerinizi görüntüleyip incelemek için Crashlytics kontrol panelini ziyaret edin.

Sonraki adımlar