Sobes.tech
Middle+

Šta biste uradili ako bi izdanje aplikacije pala na mestu gde debag verzija radi ispravno?

sobes.tech АИ

Одговор од АИ

  1. Prikupljanje logova i izveštaja o padovima: Aktivirajte i proverite logovanje u verziji za objavljivanje (npr. pomoću Firebase Crashlytics ili analitike). Sakupite sve dostupne izveštaje o padovima.

  2. Analiza razlika između buildova:

    • Optimizacije kompajlera: Verzija za objavljivanje često koristi ProGuard/R8 za obfuskaciju, minimizaciju i optimizaciju koda. Proverite pravila ProGuard/R8 na greške koje su mogle ukloniti potrebni kod ili resurse, ili promeniti ponašanje aplikacije. Proučite generisanu datoteku mapping.txt za deobfuskaciju stack trace-ova.
    • Potpisivanje (signing): Uverite se da je verzija za objavljivanje potpisana odgovarajućim ključem.
    • Zastavica Debuggable: Uverite se da je u verziji za objavljivanje android:debuggable postavljeno na false.
    • Razlike u zavisnostima: Proverite verzije biblioteka koje se koriste u oba tipa buildova.
    • Konfiguracije buildova (build flavors/types): Proučite gradle fajlove na prisustvo specifičnih podešavanja za verziju za objavljivanje koja mogu uticati na ponašanje (npr. različiti URL-ovi API-ja, isključene funkcije).
    • Provera resursa: Uverite se da su svi potrebni resursi (drawable, layout, strings) prisutni i dostupni u verziji za objavljivanje.
  3. Deobfuskacija stack trace-ova: Ako pad nastaje u obfuskovanom kodu, koristite mapping.txt za deobfuskaciju stack trace-a da biste razumeli u kojem delu koda se dešava greška.

  4. Reprodukovanje greške u uslovima bliskim verziji za objavljivanje:

    • Pokušajte da sastavite verziju za objavljivanje sa isključenim delovima ProGuard/R8, da suzite krug pretraživanja.
    • Kreirajte lokalnu test verziju što je više moguće sličnu verziji za objavljivanje (npr. sa primenom ProGuard/R8, ali bez potpisa za objavljivanje).
  5. Isključivanje optimizacija i obfuskacije: Postepeno isključujte optimizacije ProGuard/R8 u verziji za objavljivanje (npr. isključite obfuskaciju, zatim minimizaciju), da biste odredili koja optimizacija izaziva problem.

  6. Logovanje u verziji za objavljivanje: Privremeno dodajte logovanje u kritične delove koda u verziji za objavljivanje, da biste pratili izvršenje do trenutka greške.

  7. Spoljašnji faktori: Uzmite u obzir da ponašanje može zavisiti od okruženja (npr. dostupnost internet konekcije, verzija OS na uređaju korisnika).

  8. Korišćenje debuggera: Ako je moguće, povežite se na verziju za objavljivanje na uređaju (što može biti teško ako je debuggable false) ili koristite emulatore za pokušaj reprodukcije i otklanjanje grešaka.

  9. Regresija: Proverite kada se problem pojavio (npr. nakon dodavanja nove funkcije ili ažuriranja biblioteke).

  10. Pretraživanje poznatih problema: Proverite poznate probleme sa ProGuard/R8 i korišćenim bibliotekama.

android {
    buildTypes {
        release {
            // Privremeno isključivanje obfuskacije za otklanjanje grešaka
            minifyEnabled true // Ostavlja minimizaciju
            shrinkResources true // Ostavlja kompresiju resursa
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            // privremeno isključivanje obfuskacije za otklanjanje grešaka
            // consumerProguardFiles 'proguard-debug.pro' // Dodajte pravila za otklanjanje grešaka ako je potrebno
        }
    }
}