Flutter için Crashlytics'i kullanmaya başlama

Platform seçin: iOS+ Android Android NDK Flutter Unity


Bu kılavuzda, Flutter uygulamanızda Firebase Crashlytics kullanmaya nasıl başlayacağınız açıklanmaktadır.

Uygulamanızda Crashlytics Flutter eklentisini ayarladıktan sonra Firebase konsolunda kapsamlı kilitlenme raporları alabilirsiniz.

Crashlytics kurulumu için hem 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şturmanı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 yol açan kullanıcı işlemlerini anlamak için breadcrumb kayıtlarını otomatik olarak almak istiyorsanız Firebase projenizde Google Analytics özelliğini etkinleştirmeniz gerekir.

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

    • Google Analytics etkinleştirilmemiş mevcut bir Firebase projesi kullanıyorsanız Firebase konsolunun Ayarlar > Entegrasyonlar sayfasında etkinleştirebilirsiniz.

    Breadcrumb kayıtlarının, Crashlytics tarafından desteklenen tüm Android ve Apple platformlarında (watchOS hariç) kullanılabildiğini unutmayın.

1. adım: Flutter projenize Crashlytics ekleyin

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

    Breadcrumb kayıtlarından yararlanmak için Google Analytics için Flutter eklentisini de uygulamanıza 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ırdığınızda Flutter uygulamanızın Firebase yapılandırması güncel tutulur ve Android için gerekli Crashlytics Gradle eklentisi uygulamanıza eklenir.

  3. İşlem tamamlandıktan sonra Flutter projenizi yeniden derleyin:

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

    • Apple platformları: Projenizin Flutter sembollerini (dSYM dosyaları) otomatik olarak oluşturup Crashlytics platformuna 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: Flutter hata ayıklama sembollerini yüklemek için Firebase KSA'yı (v.11.9.0+) kullanın. Karartılmış bir kod derlemesinden kilitlenme 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ği: 1:567383003300:android:17104a2ced0c9b9b

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

2. adım: Kilitlenme işleyicileri yapılandırın

FlutterError.onError öğesini FirebaseCrashlytics.instance.recordFlutterFatalError ile geçersiz kılarak Flutter çerçevesinde 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 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 başlıklı makaleyi inceleyin.

3. adım: Kurulumu tamamlamak için test amaçlı bir kilitlenme zorunlu kılın

Crashlytics kurulumunu tamamlamak ve Firebase konsolunun Crashlytics kontrol panelinde ilk verileri görmek için bir test istisnasının zorunlu olarak oluşturulmasını sağlamanız gerekir.

  1. Uygulamanıza, test istisnasının zorunlu olarak oluşturulması için kullanabileceğiniz bir kod ekleyin.

    Üst düzey Zone öğesine FirebaseCrashlytics.instance.recordError(error, stack, fatal: true) yöntemini çağıran bir hata işleyici eklediyseniz uygulamanıza basıldığında test istisnası oluşturan 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ı zorla tetikleyin:

    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. Firebase konsolunda DevOps ve Etkileşim > Crashlytics kontrol paneline giderek test kilitlenme raporunuzu kontrol edin.

    Konsolu yenilediyseniz ve beş dakika sonra 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üğü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