Crashlytics kontrol panelinden okunabilir kilitlenme raporları alın


Varsayılan olarak Firebase Crashlytics, Flutter projenizi otomatik olarak araçlandırır. Böylece, kilitlenme raporlarının kodun gizlenmemesi ve okunabilir olması için gerekli simge dosyalarını yükler.

Maalesef projenin tam olarak yapılandırılmaması ile sonuçlanabilecek durumlar vardır. Bu kılavuzda, otomasyonun ne yaptığı özetlenmiştir ve proje kurulumunuzda hata ayıklamayla ilgili ilk adımlar verilmiştir.

Apple platformları

dSYM dosyalarını yükleme yapılandırmanızı kontrol etme

Crashlytics Flutter eklentisini ekleyip flutterfire configure komutunu çalıştırdığınızda, projenizin Xcode çalışma alanına gerekli dSYM simge dosyalarını bulup Crashlytics'e yükleyen bir çalıştırma komut dosyası eklemeye çalışılır. Bu dosyalar olmadan Crashlytics kontrol panelinde "Eksik dSYM" uyarısı görürsünüz ve eksik dosyalar yüklenene kadar istisnalar arka uç tarafından tutulur.

Bu sorunla karşılaşıyorsanız öncelikle çalıştırma komut dosyasının yüklü olduğundan emin olun:

  1. Projenizin iOS dizininde (FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace) Xcode çalışma alanı dosyasını bulup açın.

  2. Runner hedefinin Build Phases'ine [firebase_crashlytics] Crashlytics Upload Symbols başlıklı bir çalıştırma komut dosyasının eklenip eklenmediğini belirleyin.

    Çalıştırma komut dosyası yoktur veya çalıştırma komut dosyası vardır olup olmadığına göre aşağıdaki ilgili bölüme bakın.

Bu çalıştırma komut dosyası yoksa manuel olarak ekleyebilirsiniz:

  1. Apple uygulamanızın Firebase uygulama kimliğini bulun. Bu kimliği bulabileceğiniz iki farklı yer vardır:

    • Firebase konsolunda > Proje ayarları'na gidin. Uygulamalarınız kartına gidin, ardından Firebase Apple uygulamanızı tıklayarak uygulama kimliği dahil olmak üzere uygulamanın bilgilerini görüntüleyin.

    • Flutter projenizin üst düzey dizininde firebase_options.dart dosyanızı bulun. Apple uygulamanızın Firebase uygulama kimliği GOOGLE_APP_ID olarak etiketlenir.

  2. > Yeni Komut Dosyası Çalıştırma Aşaması'nı tıklayın.

    Bu yeni Komut Dosyası Çalıştır aşamasının, projenizin son derleme aşaması olduğundan emin olun. Aksi takdirde Crashlytics, dSYM'leri düzgün şekilde işleyemez.

  3. Yeni Komut Dosyası Çalıştır bölümünü genişletin.

  4. Komut dosyası alanına (Kabuk etiketinin altında bulunur) aşağıdaki çalıştırma komut dosyalarını ekleyin.

    Bu komut dosyaları, dSYM dosyalarınızı işler ve dosyaları Crashlytics adresine yükler.

    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase --validate -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM
    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM 
    • FIREBASE_APP_ID: Firebase Apple uygulama kimliğiniz (Apple paket kimliğiniz değil)
      Firebase Apple uygulama kimliği örneği: 1:1234567890:ios:321abc456def7890

    Firebase uygulama kimliğinizi bulmanın iki yolu vardır:

    • GoogleService-Info.plist dosyanızdaki uygulama kimliğiniz GOOGLE_APP_ID değeridir veya

    • Firebase konsolunda Proje ayarlarınıza gidin. Uygulamalarınız kartına gidin ve uygulama kimliğini bulmak için istediğiniz Firebase uygulamasını tıklayın.

  5. Giriş Dosyaları bölümüne aşağıdaki dosyaların konumlarının yollarını ekleyin:

    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
    $(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
    $(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)

    Xcode, derleme dosyalarının çalıştırma komut dosyası için kullanılabilir olduğundan emin olmak amacıyla bu giriş dosyalarını belirtilen konumlarda arar. Ayrıca, Kullanıcı Komut Dosyası Korumalı Alanı etkinse Xcode, çalıştırma komut dosyasının yalnızca Giriş Dosyaları'nda belirtilen dosyalara erişmesine izin verir.

    • Projenizin dSYM dosyalarının konumunu sağlayarak Crashlytics'ün dSYM'leri işlemesini sağlayabilirsiniz.
    • Uygulamanızın derlenmiş GoogleService-Info.plist dosyasının konumunu sağlayarak Crashlytics'un dSYM'leri Firebase uygulamanızla ilişkilendirmesini sağlayabilirsiniz.
    • Uygulamanızın yürütülebilir dosyasının konumunu belirtmek, çalıştırma komut dosyasının aynı dSYM'nin yinelenen yüklemelerini önlemesine olanak tanır. Uygulama ikili dosyalarının yüklenmediğini unutmayın.

Çalıştırma komut dosyası mevcutsa dSYM sorunlarını gidermeyle ilgili Apple'a özel kılavuzu inceleyin. dSYM dosyalarınızı açıklanan işlemle yüklemeyi seçerseniz aşağıdaki ek adımları uygulamanız gerekir:

  1. Apple uygulamanızın Firebase uygulama kimliğini bulun. Bu kimliği bulabileceğiniz iki farklı yer vardır:

    • Firebase konsolunda > Proje ayarları'na gidin. Uygulamalarınız kartına gidin, ardından Firebase Apple uygulamanızı tıklayarak uygulama kimliği dahil olmak üzere uygulamanın bilgilerini görüntüleyin.

    • Flutter projenizin üst düzey dizininde firebase_options.dart dosyanızı bulun. Apple uygulamanızın Firebase uygulama kimliği GOOGLE_APP_ID olarak etiketlenir.

  2. upload-symbols komut dosyasını çalıştırırken -gsp /path/to/GoogleService-Info.plist yerine -ai FIREBASE_APPLE_APP_ID kullanın.

Flutter ve Crashlytics için sürüm yapılandırmanızı kontrol edin (--split-debug-info işareti kullanılıyorsa)

Flutter projenizde --split-debug-info işareti (ve isteğe bağlı olarak --obfuscate işareti) kullanılıyorsa uygulamanızın okunabilir yığın izlemelerini göstermek için ek adımlar gerekir.

Projenizin Flutter simgelerini (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 sonraki sürümler ile Crashlytics Flutter eklentisi 3.3.4 ve sonraki sürümler) kullandığından emin olun.

Android

Bağımlılık yapılandırmanızı kontrol etme

flutterfire configure komutu, projenizin Gradle derleme dosyalarına gerekli bağımlılıkları eklemeye çalışır. Bu bağımlılık olmadan, karartma etkinse Firebase konsolundaki kilitlenme raporları karartılmış olabilir.

Proje düzeyindeki build.gradle ve uygulama düzeyindeki build.gradle dosyalarında aşağıdaki satırların bulunduğundan emin olun:

  • Proje düzeyindeki derleme dosyasında (android/build.gradle) aşağıdaki satırı kontrol edin:

    dependencies {
    // ... other dependencies
    
    classpath 'com.google.gms:google-services:4.3.5'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
    }
  • Uygulama düzeyindeki derleme dosyasında (android/app/build.gradle) aşağıdaki satırı kontrol edin:

    // ... other imports
    
    android {
    // ... your android config
    }
    
    dependencies {
    // ... your dependencies
    }
    
    // This section must appear at the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    apply plugin: 'com.google.firebase.crashlytics'

Flutter sembollerini yüklemek için KSA'yı kullandığınızdan emin olun (--split-debug-info işareti kullanılıyorsa)

Flutter projenizde --split-debug-info işareti (ve isteğe bağlı olarak --obfuscate işareti) kullanılıyorsa uygulamanızın okunabilir yığın izlemelerini göstermek için ek adımlar gerekir.

Flutter hata ayıklama sembollerini 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

    Firebase uygulama kimliğinizi bulmanın iki yolu vardır:

    • google-services.json dosyanızdaki uygulama kimliğiniz mobilesdk_app_id değeridir veya

    • Firebase konsolunda Proje ayarlarınıza gidin. Uygulamalarınız kartına gidin ve uygulama kimliğini bulmak için istediğiniz Firebase uygulamasını tıklayın.

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

Sorunlar devam ederse gizlenmiş raporlarla ilgili sorunları gidermeyle ilgili Android'e özel kılavuzu inceleyin.