Sobes.tech
Middle+

Ką darytumėte, jei galutinė programos versija žlugtų ten, kur derinimo versija veikia tinkamai?

sobes.tech AI

Atsakymas iš AI

  1. Žurnalo ir klaidų ataskaitų rinkimas: Aktyvuokite ir patikrinkite žurnalo įrašymą išleidimo versijoje (pvz., Firebase Crashlytics ar analitikos priemonėmis). Surinkite visas prieinamas klaidų ataskaitas.

  2. Skirtumų analizė tarp surinkimų:

    • Kompiliatoriaus optimizacijos: Išleidimo surinkimas dažnai naudoja ProGuard/R8 kodui obfuskacijai, minimizacijai ir optimizacijai. Patikrinkite ProGuard/R8 taisykles dėl klaidų, kurios galėjo pašalinti būtiną kodą ar išteklius, arba pakeisti programėlės elgseną. Peržiūrėkite mapping.txt failą obfuskacijos dešifravimui.
    • Parašai (signing): Įsitikinkite, kad išleidimo surinkimas yra pasirašytas tinkamu raktu.
    • Debuggable vėliava: Įsitikinkite, kad išleidimo versijoje android:debuggable nustatytas į false.
    • Skirtumai priklausomybėse: Patikrinkite naudojamų bibliotekų versijas abiejose surinkimo rūšyse.
    • Konstravimo konfigūracijos (build flavors/types): Peržiūrėkite gradle failus dėl specifinių nustatymų, galinčių paveikti elgseną (pvz., skirtingi API URL, išjungtos funkcijos).
    • Išteklių patikra: Įsitikinkite, kad visi reikalingi ištekliai (drawable, layout, strings) yra ir prieinami išleidimo surinkime.
  3. Stack trace obfuskacijos dešifravimas: Jei klaida įvyksta obfuskotame kode, naudokite mapping.txt failą dešifravimui, kad suprastumėte, kurioje kodo dalyje įvyksta klaida.

  4. Klaidų atkūrimas artimoje išleidimo sąlygomis:

    • Bandykite sukurti išleidimo surinkimą su išjungtomis ProGuard/R8 dalimis, kad sumažintumėte paieškos ratą.
    • Sukurkite vietinį testinį surinkimą, kuo arčiau išleidimo (pvz., su ProGuard/R8, bet be parašo).
  5. Optimizacijų ir obfuskacijos išjungimas: Palaipsniui išjunkite ProGuard/R8 optimizacijas, kad nustatytumėte, kuri optimizacija sukelia problemą.

  6. Žurnalo įrašymas išleidimo surinkime: Laikinai pridėkite žurnalo įrašymą kritinėse kodo vietose, kad stebėtumėte vykdymą iki klaidos.

  7. Išoriniai veiksniai: Atsiminkite, kad elgsena gali priklausyti nuo aplinkos (pvz., interneto ryšio, OS versijos įrenginyje).

  8. Naudoti derintuvą: Jei įmanoma, prisijunkite prie išleidimo surinkimo įrenginyje (kas gali būti sudėtinga, jei debuggable false) arba naudokite emuliatorių bandymui ir derinimui.

  9. Regresija: Patikrinkite, kada problema atsirado (pvz., po naujos funkcijos pridėjimo ar bibliotekos atnaujinimo).

  10. Žinomų problemų paieška: Patikrinkite žinomus ProGuard/R8 problemas su naudojamomis bibliotekomis.

android {
    buildTypes {
        release {
            // Laikinas obfuskacijos išjungimas klaidų taisymui
            minifyEnabled true // Minimalizavimas paliekamas
            shrinkResources true // Ištekliai suspaudžiami
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            // Laikinas obfuskacijos išjungimas klaidų taisymui
            // consumerProguardFiles 'proguard-debug.pro' // Pridėti klaidų taisymo taisykles, jei reikia
        }
    }
}