Sobes.tech
Middle+

Co byste dělali, kdyby vydání sestavení aplikace selhalo na místě, kde ladicí sestavení funguje správně?

sobes.tech AI

Odpověď od AI

  1. Shromažďování protokolů a hlášení chyb: Aktivujte a zkontrolujte protokolování ve verzi pro vydání (například pomocí Firebase Crashlytics nebo analytiky). Shromážděte všechny dostupné hlášení chyb.

  2. Analýza rozdílů mezi sestaveními:

    • Optimalizace kompilátoru: Verze pro vydání často používá ProGuard/R8 pro obfuskaci, minimalizaci a optimalizaci kódu. Zkontrolujte pravidla ProGuard/R8 na přítomnost chyb, které mohly odstranit potřebný kód nebo zdroje, nebo změnit chování aplikace. Prostudujte vygenerovaný soubor mapping.txt pro deobfuskaci stack trace.
    • Podpisy (signing): Ujistěte se, že sestavení pro vydání je podepsáno správným klíčem.
    • Příznak Debuggable: Ujistěte se, že v sestavení pro vydání je android:debuggable nastaven na false.
    • Rozdíly v závislostech: Zkontrolujte verze knihoven používaných v obou typech sestavení.
    • Konfigurace sestavení (build flavors/types): Prostudujte gradle soubory na přítomnost specifických nastavení pro sestavení pro vydání, která mohou ovlivnit chování (například různé URL API, vypnuté funkce).
    • Kontrola zdrojů: Ujistěte se, že všechny potřebné zdroje (drawable, layout, strings) jsou přítomny a dostupné v sestavení pro vydání.
  3. Deobfuskace stack trace: Pokud k chybě dochází v obfuskovaném kódu, použijte mapping.txt pro deobfuskaci stack trace, abyste pochopili, ve které části kódu k chybě dochází.

  4. Reprodukce chyby za podmínek blízkých vydání:

    • Pokuste se sestavit sestavení pro vydání s vypnutými částmi ProGuard/R8, abyste zúžili okruh hledání.
    • Vytvořte místní testovací sestavení, co nejvíce podobné vydání (například s použitím ProGuard/R8, ale bez podpisu vydání).
  5. Vypnutí optimalizací a obfuskace: Postupně vypínejte optimalizace ProGuard/R8 ve vydání, abyste určili, která optimalizace způsobuje problém.

  6. Protokolování v sestavení pro vydání: Dočasně přidejte logování do kritických částí kódu ve vydání, abyste sledovali průběh před chybou.

  7. Vnější faktory: Zohledněte, že chování může záviset na prostředí (například připojení k internetu, verze OS na zařízení uživatele).

  8. Použití debuggeru: Pokud je to možné, připojte se ke sestavení pro vydání na zařízení (což může být složité, pokud je debuggable false) nebo použijte emulátor k pokusu o reprodukci a ladění.

  9. Regrese: Zkontrolujte, kdy se problém objevil (například po přidání nové funkce nebo aktualizaci knihovny).

  10. Hledání známých problémů: Zkontrolujte známé problémy s ProGuard/R8 u používaných knihoven.

android {
    buildTypes {
        release {
            // Dočasné vypnutí obfuskace pro ladění
            minifyEnabled true // Ponecháváme minimalizaci
            shrinkResources true // Ponecháváme kompresi zdrojů
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            // dočasně vypnout obfuskaci pro ladění
            // consumerProguardFiles 'proguard-debug.pro' // Přidat pravidla pro ladění podle potřeby
        }
    }
}