Flutter ile Firebase Crashlytics Kullanımı 💫 🌌 ✨
Tags: flutter, dart, firebase, crashlytics
Published: 2022-10-30 17:59:48

Bu öğretici Firebase konsolunda kapsamlı crash (kilitlenme) raporları alabilmeniz için Crashlytics Flutter eklentisi ile uygulamanızda Firebase Crashlytics'i nasıl kuracağınızı açıklar.

**Firebase projesi oluşturun**

[Adresine](https://firebase.google.com/products/crashlytics?gclid=Cj0KCQjwwfiaBhC7ARIsAGvcPe7XDPT9OV_-Ia1CqqXSm2kewlKJ2dnGAUXfj7jte1WW1HPEOZ_mvTQaAqOCEALw_wcB&gclsrc=aw.ds) giderek önce `visit console` sonra açılan pencereden `Add project` butonuna tıklayarak firabase projesi oluşturun.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nyz6w4li6c1mvgurs2bn.png)

Google Analytics alanının seçili olmasına dikkat edin

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/41g8jqe7k9hq694zxk0m.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3v8217lkc1ppcjo7dtl9.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gmukr6jk3g1rwyfy1ncl.png)



**npm ile Firebase CLI kurun**
(flutterfire  komutunu çalıştırabilmek için bu adım gereklidir.)

`npm install -g firebase-tools`

**Google hesabınızı kullanarak Firebase'e giriş yapın:**

Aşağıdaki komutu çalıştırarak Google hesabınızı kullanarak Firebase'e giriş yapın:

`firebase login`

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i70ovre34nzxi9liiaq4.png)

Firebase projelerinizi listeleyerek CLI'nin düzgün şekilde yüklenip yüklenmediğini ve hesabınıza erişildiğini test edin. Aşağıdaki komutu çalıştırın:

`firebase projects:list`


**FlutterFire CLI'yi kurun**
Herhangi bir dizinden aşağıdaki komutu çalıştırarak FlutterFire CLI'yi kurun:

`dart pub global activate flutterfire_cli`

Ortam değişkenlerinizdeki path alanına uyarıda çıkan yolu ekleyin

örnek:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9x5v7psf9d38b2872e23.png)

**Flutter projenize Crashlytics ekleyin**

Crashlytics Flutter eklentisini kurmak için terminalinizi yönetici olarak çalıştırdıktan sonra flutter projenizin bulunduğu yolda aşağıdaki komutları çalıştırın:

`flutter pub add firebase_crashlytics`

`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.

`flutterfire configure` Komutunu çalıştırdıktan sonra aşağıdaki gibi oluşturduğunuz firebase projesini seçerek enter tuşuna basın.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t0r5hekszdha97d7wolx.png)

Son olarak platform seçerek enter tuşuna basın (android ve ios seçili olarak gelecektir enter tuşuna basarak ilerleyebilirsiniz.)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jl0t7az8dlmpw7klypjw.png)

Bu işlemin sonunda android ve ios için iki farklı app id oluşur.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u3rzomurdpjvm78kgth7.png)

**android\build.gradle dosyanıza resimdeki gibi aşağıdaki satırları ekleyin**

```
 // START: FlutterFire Configuration
        classpath 'com.google.gms:google-services:4.3.10'
        // END: FlutterFire Configuration
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
```
 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h51y0svxmc0u62odaaj1.png)

**android\app\build.gradle  dosyanıza resimdeki gibi aşağıdaki satırları ekleyin**


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/06mgvnouhbunf8i618fl.png)

```

// START: FlutterFire Configuration
apply plugin: 'com.google.gms.google-services'
// END: FlutterFire Configuration
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

dependencies {
   ...
}
}

apply plugin: 'com.google.firebase.crashlytics'
```

Tamamlandığında, Flutter projenizi çalıştırın:

`flutter run`

**Firebase projeniz resimdeki gibi gözükmelidir**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i0wt461slot9unfl79zy.png)

(İsteğe bağlı) Flutter projeniz --split-debug-info bayrağını (ve isteğe bağlı olarak --obfuscate bayrağını ) kullanıyorsa, Android sembollerini yüklemek için Firebase CLI'yi (v.11.9.0+) kullanmanız gerekir.

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

`firebase crashlytics:symbols:upload --app=APP_ID PATH/TO/symbols`

`PATH/TO/symbols` dizini, uygulamayı oluştururken --split-debug-info bayrağına ilettiğiniz dizinle aynıdır.

**Configure crash handlers**

FlutterError.onError'u FirebaseCrashlytics.instance.recordFlutterFatalError ile geçersiz kılarak Flutter framework içinde oluşan tüm hataları otomatik olarak yakalayabilirsiniz:

```
void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp();

  // Pass all uncaught errors from the framework to Crashlytics.
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;

  runApp(MyApp());
}
```

**Kurulumu test etmek için bir hata döndürün**

```
TextButton(
    onPressed: () => throw Exception(),
    child: const Text("Throw Test Exception"),
),
```

Uygulamanızı çalıştırın.

Uygulamanızın ilk raporunu göndermek için eklediğiniz Throw Test Exception butonuna tıklayın:

Test çökmenizi görmek için Firebase konsolunun Crashlytics [panosuna ](https://console.firebase.google.com/u/0/project/_/crashlytics) gidin.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kf6xllb782gfuug3berk.png)


Konsolu yenilediyseniz ve beş dakika sonra test çökmesini 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ü](https://firebase.google.com/docs/crashlytics/test-implementation?authuser=0&platform=flutter#enable-debug-logging) etkinleştirin .


Kaynaklar:
[Firebase CLI kurun](https://firebase.google.com/docs/cli#setup_update_cli)
[Firebase'i uygulamanıza ekleyin](https://firebase.google.com/docs/flutter/setup?platform=ios
)
[crashlytics](https://firebase.google.com/products/crashlytics?gclid=Cj0KCQjwwfiaBhC7ARIsAGvcPe7XDPT9OV_-Ia1CqqXSm2kewlKJ2dnGAUXfj7jte1WW1HPEOZ_mvTQaAqOCEALw_wcB&gclsrc=aw.ds)
[flutterfire-is-not-recognized](https://stackoverflow-com.translate.goog/questions/70320263/the-term-flutterfire-is-not-recognized-as-the-name-of-a-cmdlet-function-scri?_x_tr_sl=en&_x_tr_tl=tr&_x_tr_hl=tr&_x_tr_pto=sc)
https://firebase.google.com/docs/crashlytics