Sobes.tech
Middle+

Mit tennél, ha a kiadási build az a helyen omlana össze, ahol a hibakereső build helyesen működik?

sobes.tech MI

Válasz az MI-től

  1. Naplók és hibajelentések gyűjtése: Aktiválja és ellenőrizze a naplózást a kiadási verzióban (pl. Firebase Crashlytics vagy analitika segítségével). Gyűjtsön minden elérhető hibajelentést.

  2. Különbségek elemzése a build-ek között:

    • Fordító optimalizálások: A kiadási build gyakran használ ProGuard/R8-t a kód obfuszkálására, minimalizálására és optimalizálására. Ellenőrizze a ProGuard/R8 szabályokat, hogy nincsenek-e hibák, amelyek törölhették a szükséges kódot vagy erőforrásokat, vagy megváltoztathatták az alkalmazás viselkedését. Tanulmányozza a mapping.txt fájlt az obfuszkáció utáni stack trace-ekhez.
    • Aláírások (signing): Győződjön meg arról, hogy a kiadási build helyes kulccsal van aláírva.
    • Debuggable zászló: Győződjön meg arról, hogy a kiadási build-ben az android:debuggable értéke false.
    • Könyvtárverziók különbségei: Ellenőrizze a két build típusban használt könyvtárak verzióit.
    • Build konfigurációk (build flavors/types): Vizsgálja meg a gradle fájlokat, hogy vannak-e speciális beállítások a kiadási build-hez, amelyek befolyásolhatják a viselkedést (pl. külön API URL-ek, kikapcsolt funkciók).
    • Erőforrások ellenőrzése: Győződjön meg arról, hogy minden szükséges erőforrás (drawable, layout, strings) jelen van és elérhető a kiadási build-ben.
  3. Stack trace-ek deobfuscálása: Ha a hiba obfuszkált kódban fordul elő, használja a mapping.txt fájlt a stack trace deobfuscálásához, hogy megértse, melyik kódrészben történik a hiba.

  4. Hiba reprodukálása a kiadáshoz közeli körülmények között:

    • Próbálja meg összeállítani a kiadási build-et letiltott ProGuard/R8 részekkel, hogy szűkítse a keresési kört.
    • Hozzon létre helyi teszt build-et, amely a lehető legközelebb áll a kiadáshoz (pl. ProGuard/R8 alkalmazásával, de aláírás nélkül).
  5. Optimalizálások és obfuszkálás kikapcsolása: Fokozatosan kapcsolja ki a ProGuard/R8 optimalizálásokat a kiadási build-ben (pl. obfuszkálás kikapcsolása, majd minimalizálás), hogy meghatározza, melyik optimalizálás okozza a problémát.

  6. Naplózás a kiadási build-ben: Ideiglenesen adjon hozzá naplózást kritikus kódrészekhez a kiadási build-ben, hogy nyomon kövesse a végrehajtást a hiba előtt.

  7. Külső tényezők ellenőrzése: Vegye figyelembe, hogy a viselkedés függhet a környezettől (pl. internetkapcsolat, OS-verzió a felhasználó eszközén).

  8. ** Hibakereső használata:** Ha lehetséges, csatlakozzon a kiadási build-hez az eszközön (ami nehéz lehet, ha az debuggable false), vagy használjon emulátort a reprodukáláshoz és hibakereséshez.

  9. Visszalépés (regress): Ellenőrizze, mikor jelent meg a probléma (pl. új funkció hozzáadása vagy könyvtár frissítése után).

  10. Ismert problémák keresése: Ellenőrizze a ProGuard/R8 ismert problémáit az alkalmazott könyvtárakkal.

android {
    buildTypes {
        release {
            // Ideiglenes obfuszkálás kikapcsolása hibakereséshez
            minifyEnabled true // Minimalizálás engedélyezve
            shrinkResources true // Erőforrás tömörítés engedélyezve
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            // ideiglenesen kikapcsolja az obfuszkálást hibakereséshez
            // consumerProguardFiles 'proguard-debug.pro' // Hibakeresési szabályok hozzáadása szükség szerint
        }
    }
}