Sobes.tech
Middle+

Uygulamanın yayın derlemesi, hata ayıklama derlemesi düzgün çalışırken çökerse ne yapardınız?

sobes.tech yapay zeka

AI'dan gelen yanıt

  1. Loglar ve çökme raporlarının toplanması: Yayın sürümünde günlük kaydını etkinleştirip kontrol edin (örneğin Firebase Crashlytics veya analiz kullanarak). Tüm mevcut çökme raporlarını toplayın.

  2. Derlemeler arasındaki farkların analizi:

    • Derleyici optimizasyonları: Yayın derlemesi genellikle ProGuard/R8 kullanır kodu obfuscate etmek, küçültmek ve optimize etmek için. ProGuard/R8 kurallarını hatalar açısından kontrol edin, gerekirse kod veya kaynakları kaldırmış veya uygulamanın davranışını değiştirmiş olabilirler. mapping.txt dosyasını deobfuscate etmek için inceleyin.
    • İmza (signing): Yayın derlemesinin doğru anahtar ile imzalandığından emin olun.
    • Debuggable bayrağı: Yayın derlemesinde android:debuggable'ın false olarak ayarlandığından emin olun.
    • Bağımlılık farkları: Her iki derleme türünde kullanılan kütüphanelerin sürümlerini kontrol edin.
    • Derleme yapılandırmaları (build flavors/types): Gradle dosyalarını, davranışı etkileyebilecek yayın için özel ayarları inceleyin (örneğin, farklı API URL'leri, devre dışı bırakılmış fonksiyonlar).
    • Kaynakların kontrolü: Gerekli tüm kaynakların (drawable, layout, strings) mevcut ve erişilebilir olduğundan emin olun.
  3. Stack trace deobfuscation: Çökme obfuscate edilmiş kodda olursa, mapping.txt kullanarak stack trace'i deobfuscate edin ve hatanın hangi kod bölümünde olduğunu anlayın.

  4. Yayın ortamına yakın koşullarda hatayı yeniden üretme:

    • ProGuard/R8'in bazı bölümlerini devre dışı bırakarak yayın derlemesi yapmayı deneyin, arama alanını daraltmak için.
    • Yayına en yakın yerel test derlemesi oluşturun (örneğin, ProGuard/R8 kullanarak ama yayın imzası olmadan).
  5. Optimizasyonları ve obfuscation'ı kademeli olarak devre dışı bırakma: ProGuard/R8 optimizasyonlarını kademeli olarak devre dışı bırakın (örneğin, obfuscation'ı devre dışı bırakın, sonra minimizasyonu) ve hangi optimizasyonun soruna neden olduğunu belirleyin.

  6. Yayın derlemesinde loglama: Kritik kod bölümlerine geçici olarak log ekleyin, böylece hataya kadar olan yürütmeyi takip edin.

  7. Dış faktörleri kontrol edin: Davranışın ortamdan (örneğin, internet bağlantısı, cihazdaki Android sürümü) bağımlı olabileceğini göz önünde bulundurun.

  8. Hata ayıklayıcı kullanımı: Mümkünse, cihazda yayın derlemesine bağlanın (eğer debuggable false ise zor olabilir) veya emülatör kullanarak yeniden üretip hata ayıklayın.

  9. Gerileme (regresyon) testi: Sorunun ne zaman ortaya çıktığını kontrol edin (örneğin, yeni bir özellik ekledikten veya kütüphane güncelledikten sonra).

  10. Bilinen sorunları araştırın: Kullanılan kütüphanelerle ilgili bilinen ProGuard/R8 sorunlarını kontrol edin.

android {
    buildTypes {
        release {
            // Hata ayıklama için geçici obfuscation devre dışı bırakma örneği
            minifyEnabled true // Minifikasyonu bırakıyoruz
            shrinkResources true // Kaynak sıkıştırmayı bırakıyoruz
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            // geçici olarak obfuscation'ı devre dışı bırak
            // consumerProguardFiles 'proguard-debug.pro' // Gerekirse hata ayıklama kuralları ekleyin
        }
    }
}