Sobes.tech
Middle+

Čo by ste urobili, ak by vydanie aplikácie zlyhalo na mieste, kde ladenie funguje správne?

sobes.tech AI

Odpoveď od AI

  1. Zberanie protokolov a správ o zlyhaniach: Aktivujte a skontrolujte logovanie vo verzii na vydanie (napríklad pomocou Firebase Crashlytics alebo analytiky). Zborte všetky dostupné správy o zlyhaniach.

  2. Analýza rozdielov medzi buildmi:

    • Optimalizácie kompilátora: Verzia na vydanie často používa ProGuard/R8 na obfuskáciu, minimalizáciu a optimalizáciu kódu. Skontrolujte pravidlá ProGuard/R8 na chyby, ktoré mohli odstrániť potrebný kód alebo zdroje, alebo zmeniť správanie aplikácie. Preskúmajte generovaný súbor mapping.txt na deobfuskáciu stack trace-ov.
    • Podpisy (signing): Uistite sa, že verzia na vydanie je podpísaná správnym kľúčom.
    • Príznak Debuggable: Uistite sa, že v verzii na vydanie je android:debuggable nastavené na false.
    • Rozdiely v závislostiach: Skontrolujte verzie knižníc používaných v oboch typoch buildov.
    • Konfigurácie buildov (build flavors/types): Preskúmajte gradle súbory na prítomnosť špecifických nastavení pre verziu na vydanie, ktoré môžu ovplyvniť správanie (napríklad rôzne URL API, vypnuté funkcie).
    • Kontrola zdrojov: Uistite sa, že všetky potrebné zdroje (drawable, layout, strings) sú prítomné a dostupné v verzii na vydanie.
  3. Deobfuskácia stack trace-ov: Ak sa chyba vyskytuje v obfuskovanom kóde, použite mapping.txt na deobfuskáciu stack trace, aby ste pochopili, v ktorej časti kódu sa chyba vyskytuje.

  4. Reprodukcia chyby za podmienok blízkych verzii na vydanie:

    • Skúste zostaviť verziu na vydanie s vypnutými časťami ProGuard/R8, aby ste zúžili kruh hľadania.
    • Vytvorte lokálnu testovaciu verziu čo najviac podobnú verzii na vydanie (napríklad s použitím ProGuard/R8, ale bez podpísania na vydanie).
  5. Vypnutie optimalizácií a obfuskácie: Postupne vypínajte optimalizácie ProGuard/R8 vo verzii na vydanie (napríklad vypnite obfuskáciu, potom minimalizáciu), aby ste určili, ktorá optimalizácia spôsobuje problém.

  6. Logovanie v verzii na vydanie: Dočasne pridajte logovanie do kritických častí kódu vo verzii na vydanie, aby ste sledovali vykonávanie pred chybou.

  7. Vonkajšie faktory: Zohľadnite, že správanie môže závisieť od prostredia (napríklad dostupnosť internetového pripojenia, verzia OS na zariadení používateľa).

  8. Použitie debuggeru: Ak je to možné, pripojte sa k verzii na vydanie na zariadení (čo môže byť ťažké, ak je debuggable false) alebo použite emulátor na pokus o reprodukciu a ladenie.

  9. Regresia: Skontrolujte, kedy sa problém objavil (napríklad po pridaní novej funkcie alebo aktualizácii knižnice).

  10. Hľadanie známych problémov: Skontrolujte známe problémy s ProGuard/R8 a používanými knižnicami.

android {
    buildTypes {
        release {
            // Dočasné vypnutie obfuskácie pre ladenie
            minifyEnabled true // Ponechávame minimalizáciu
            shrinkResources true // Ponechávame kompresiu zdrojov
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            // dočasne vypnite obfuskáciu pre ladenie
            // consumerProguardFiles 'proguard-debug.pro' // Pridať pravidlá pre ladenie podľa potreby
        }
    }
}