Firebase Crashlytics'i kullanmaya başlayın


Bu hızlı başlangıç kılavuzunda, Firebase Crashlytics hizmetini Crashlytics Flutter eklentisiyle uygulamanızda nasıl ayarlayacağınız açıklanmaktadır. Böylece, Firebase konsolunda kapsamlı kilitlenme raporları alabilirsiniz.

Crashlytics kurulumu için hem komut satırı aracı hem de IDE'niz kullanılır. Kurulumu tamamlamak için ilk kilitlenme raporunuzu Firebase'e göndermek üzere test istisnasının zorunlu olarak oluşturulmasını sağlamanız gerekir.

Başlamadan önce

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

  2. Önerilir: Kilitlenme, ölümcül olmayan veya ANR etkinliğine yol açan kullanıcı işlemlerini anlamak için izleme kaydı günlüklerini otomatik olarak almak istiyorsanız Firebase projenizde Google Analytics seçeneğini etkinleştirmeniz gerekir.

    • Mevcut Firebase projenizde Google Analytics etkin değilse Firebase konsolunda > Proje ayarları bölümündeki Entegrasyonlar sekmesinden Google Analytics özelliğini etkinleştirebilirsiniz.

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

    Ayrıntılı hata mesajı 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 öğesini ekleyin

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

    Ayrıntılı günlüklerden yararlanmak için uygulamanıza Google Analytics 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. İşlem tamamlandığında 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 --obfuscate işaretini) kullanıyorsa uygulamalarınız için okunabilir yığın izlemeleri göstermek üzere ek adımlar uygulamanız gerekir.

    • Apple platformları: Projenizin, Flutter sembollerini (dSYM dosyaları) otomatik olarak oluşturup 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: Flutter hata ayıklama sembollerini yüklemek için Firebase CLI'yı (11.9.0 sürümü veya üzeri) kullanın. Karartılmış kod derlemesinden kilitlenme raporu göndermeden ö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)
        Firebase Android uygulama kimliği örneği: 1:567383003300:android:17104a2ced0c9b9b

      • PATH/TO/symbols: Uygulamayı oluştururken --split-debug-info işaretine ilettiğiniz dizinle aynı olmalıdır.

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

Flutter çerçevesinde oluşturulan tüm hataları FlutterError.onError ile FirebaseCrashlytics.instance.recordFlutterFatalError'yi geçersiz kılarak 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 testin kilitlenmesini zorlayın

Crashlytics kurulumunu tamamlamak ve Crashlytics kontrol panelinde ilk verileri görmek için bir test istisnası oluşturmanız gerekir.Firebase

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

    FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)'ı üst düzey Zone'e ç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ın zorunlu olarak oluşturulmasını sağlayın:

    1. Uygulamanızı test cihazınızdan veya emülatörünüzden 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 yenilemenize rağmen beş dakika sonra hâlâ test kilitlenmesini 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ızda kilitlenmeleri ve Android'de önemli olmayan hataları ve ANR'leri izliyor. Tüm raporlarınızı ve istatistiklerinizi görüntülemek ve incelemek için Crashlytics kontrol panelini ziyaret edin.

Sonraki adımlar