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. Önerilir: Kilitlenme, ölümcül olmayan veya ANR etkinliğine yol açan kullanıcı işlemlerini anlamak için ekmek kırıntıları günlüklerini otomatik olarak almak istiyorsanız Firebase projenizde Google Analytics'i etkinleştirmeniz gerekir.

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

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

    Crashlytics tarafından desteklenen tüm Android ve Apple platformlarında (watchOS hariç) içerik haritası günlüklerinin 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ü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 (ve isteğe bağlı olarak --obfuscate işareti) kullanılıyorsa uygulamalarınızın okunabilir yığın izlemelerini göstermek için ek adımlar gerekir.

    • 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: Flutter hata ayıklama simgelerini yüklemek için Firebase CLI'yi (v.11.9.0+) kullanın. 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 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ş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:

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 kilitlenmesini zorlama

Crashlytics ayarlarını tamamlamak ve Firebase konsolunun Crashlytics kontrol panelinde ilk verileri görmek için bir test istisnasının atılmasını zorlamanız gerekir.

  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. 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 yeniledikten sonra beş dakika geçmesine rağmen testin kilitlendiğini görmüyorsanız uygulamanızın kilitlenme raporu 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ı kilitlenmeler ve Android'de önemli olmayan hatalar ile ANR'ler açısından izliyor. Tüm rapor ve istatistiklerinizi görüntülemek ve incelemek için Crashlytics kontrol panelini ziyaret edin.

Sonraki adımlar