Strigtys ir ANR klaidos sistemoje „Android“ sukuria dėklo pėdsaką, kuris yra įdėtų funkcijų, iškviestų programoje iki jos užstrigimo, sekos glausta informacija. Ši glausta informacija gali padėti nustatyti ir išspręsti bet kokias šaltinio problemas.
Jei programa ar žaidimas sukurtas naudojant „Java“, o jūs naudojate „ProGuard“ programai optimizuoti ir klaidinti, galite įkelti „ProGuard“ atvaizdžio failą kiekvienoje programos versijoje sistemoje „Play Console“. Jei programa ar žaidimas sukurtas naudojant savąjį kodą, pvz., C++, galite įkelti kiekvienos programos versijos derinimo simbolių taisyklių failą sistemoje „Play Console“. Taip lengviau analizuoti ir ištaisyti strigtis bei ANR.
Svarbu: tik su „ReTrace“ suderinami atvaizdžio failai palaikomi naikinant sistemoje „Java“ sukompiliuotų programų klaidinimą. Tai tas pats formatas, kurį naudoja „ProGuard“ arba R8.
1 veiksmas: sugeneruokite klaidinimo panaikinimo arba pavertimo simboliais taisyklių failą
Jei norite panaikinti klaidinimą ar paversti simboliais tam tikros programos versijos programos strigtis ir ANR, pirmiausia turite sugeneruoti tos pačios programos versijos reikiamus failus. Turite sugeneruoti ir įkelti kiekvienos naujos programos versijos failą, kad veiktų klaidinimo panaikinimas arba pavertimas simboliais.
„Java“: sugeneruokite „ProGuard“ atvaizdžio failąJei norite panaikinti „Java“ dėklo pėdsakų klaidinimą, pirmiausia turite sugeneruoti „ProGuard“ atvaizdžio failą. Jei norite sužinoti, kaip tai padaryti, eikite į „Google Developers“ svetainę.
4.1 ir naujesnių versijų „Android“ papildinys „Gradle“
Jei projektas sukuria „Android App Bundle“, galite automatiškai įtraukti derinimo simbolių failą į jį. Jei norite įtraukti šį failą, prie programos failo build.gradle
pridėkite:
android.defaultConfig.ndk.debugSymbolLevel = 'FULL'
Pastaba: derinimo simbolių failo apribojimas yra 800 MB. Jei derinimo simbolių pėdsakas per didelis, naudokite SYMBOL_TABLE
vietoje FULL
, kad sumažintumėte failo dydį.
Jei projektas sukuria APK, naudokite anksčiau pateiktą versijos nustatymą „build.gradle“, kad atskirai sugeneruotumėte derinimo simbolių failą. Patys įkelkite derinimo simbolių failą į „Google Play Console“, kaip aprašyta toliau pateiktoje skiltyje „2 veiksmas: įkelkite klaidinimo panaikinimo arba pavertimo simboliais taisyklių failą“. Vykdant kompiliavimo procesą, „Android“ papildinys „Gradle“ šį failą pateikia šioje projekto vietoje:
app/build/outputs/native-debug-symbols/variant-name/native-debug-symbols.zip
4.0 ir naujesnės versijos „Android“ papildinys „Gradle“ (ir kitos kompiliavimo sistemos)
Vykdant APK ar programos komponentų rinkinio kompiliavimo procesą, „Android“ papildinys „Gradle“ saugo nesupakuotų bibliotekų kopiją projekto kataloge. Šio katalogo struktūra yra panaši į šią:
app/build/intermediates/cmake/universal/release/obj
├── armeabi-v7a/
│ ├── libgamenegine.so
│ ├── libothercode.so
│ └── libvideocodec.so
├── arm64-v8a/
│ ├── libgamenegine.so
│ ├── libothercode.so
│ └── libvideocodec.so
├── x86/
│ ├── libgamenegine.so
│ ├── libothercode.so
│ └── libvideocodec.so
└── x86_64/
├── libgameengine.so
├── libothercode.so
└── libvideocodec.so
Pastaba: jei naudojate kitą kompiliavimo sistemą, galite ją modifikuoti, kad nesupakuotos bibliotekos būtų saugomos kataloge, naudojant reikiamą anksčiau nurodytą struktūrą.
- Suglaudinkite šio katalogo turinį:
$ cd app/build/intermediates/cmake/universal/release/obj
$ zip -r symbols.zip .
- Patys įkelkite failą „symbols.zip“ į „Play Console“, kaip aprašyta toliau pateiktoje skiltyje „2 veiksmas: įkelkite klaidinimo panaikinimo arba pavertimo simboliais taisyklių failą“.
Derinimo simbolių failo apribojimas yra 800 MB. Jei failas per didelis, gali būti, kad .so failuose yra simbolių lentelė (funkcijų pavadinimai) ir DWARF derinimo informacija (failų pavadinimai ir kodo eilutės). Jie nereikalingi norint paversti kodą simboliais ir juos galima pašalinti vykdant šią komandą:
$OBJCOPY --strip-debug lib.so lib.so.sym
Pastaba: $OBJCOPY
nurodo konkrečią pakuojamos PDS versiją, pvz.: ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-objcopy
2 veiksmas: įkelkite klaidinimo panaikinimo arba pavertimo simboliais taisyklių failą
Jei norite panaikinti klaidinimą ar paversti simboliais tam tikros programos versijos programos strigtis ir ANR, turite įkelti kiekvienos programos versijos klaidinimo panaikinimo arba pavertimo simboliais taisyklių failus.
Svarbu: šį veiksmą turi atlikti tik kūrėjai, naudojantys APK. Jei naudojate programos komponentų rinkinį ir 4.1 ar naujesnės versijos „Android“ papildinį „Gradle“, nieko daryti nereikia. Automatiškai paimsime klaidinimo panaikinimo taisyklių failą iš rinkinio ir galėsite pereiti prie 3 veiksmo: strigčių dėklo pėdsakų, kurių klaidinimas panaikintas, peržiūros. Daugiau apie programų komponentų rinkinius galite sužinoti „Android“ kūrėjų svetainėje.
Failų įkėlimas naudojant „Play Console“Kad įkeltumėte klaidinimo panaikinimo ar pavertimo simboliais taisyklių failą, atlikite toliau nurodytus veiksmus.
- Atidarykite „Play Console“.
- Pasirinkite programą.
- Kairiajame meniu pasirinkite
Testuokite ir paskelbkite
> Programos komponentų rinkinio naršyklė. - Naudodami rinkiklį viršutiniame dešiniajame kampe pasirinkite atitinkamą objektą.
- Pasirinkite skirtuką Atsisiuntimai ir slinkite žemyn į skiltį „Ištekliai“.
- Spustelėkite atitinkamai atvaizdžio failo arba derinimo simbolių įkėlimo rodyklę, kad įkeltumėte programos versijos klaidinimo panaikinimo arba pavertimo simboliais taisyklių failą.
Kad įkeltumėte failus naudodami „Google Play“ kūrėjo API, eikite į „Google Developers“ svetainę.
3 veiksmas: peržiūrėkite strigčių dėklo pėdsakus, kurių klaidinimas panaikintas
Įkėlus programos versijos „ProGuard“ atvaizdžio failą arba derinimo simbolių failą, bus panaikintas vėliau įvykusių strigčių ir ANR klaidinimas. Galite peržiūrėti atskirų strigčių ir ANR klaidų dėklo pėdsakus, kurių klaidinimas panaikintas, programos puslapyje Strigtys ir ANR.
- Atidarykite „Play Console“.
- Pasirinkite programą.
- Kairiajame meniu pasirinkite Stebėkite ir patobulinkite > Android Vitals > Strigtys ir ANR.
- Pasirinkite strigtį.
- Skiltyje „Dėklo pėdsakai“ matysite dėklo pėdsakus, kurių klaidinimas panaikintas ir kurie paversti simboliais.
Svarbu: įkėlus programos versijos atvaizdžio failą, bus šalinamas tik būsimų tos programos versijos strigčių ir ANR klaidinimas. Programos versijos strigčių ir ANR, kurios įvyko prieš įkeliant atitinkamą atvaizdžio failą, klaidinimas nebus panaikintas.
Dažniausiai užduodami klausimai
Nenoriu naudoti „Play Console“ klaidinimo panaikinimo / pavertimo simboliais funkcijos. Ar galima tai atlikti tiesiog neprisijungus?„Play Console“ naudoja ndk-stack savųjų programų dėklo pėdsakams paversti simboliais, o „ReTrace“ – „Java“ strigtims. Jei pasirinksite nebendrinti klaidinimo panaikinimo taisyklių failų, galite nukopijuoti klaidinančius strigčių dėklus iš sistemos „Play Console“ ir naudoti atitinkamą įrankį neprisijungę, kad paverstumėte juos simboliais. Tačiau šis procesas turi būti atliekamas neautomatiškai kiekvienam strigčių dėklui, todėl tai bus atliekama lėtai ir užims daug laiko. Kai pateikiate klaidinimo panaikinimo taisyklių failus, „Play Console“ tai atlieka už jus.
Įkėlus programos versijos „ProGuard“ atvaizdžio failą arba derinimo simbolių failą, bus panaikintas tik vėliau įvykusių strigčių ir ANR klaidinimas. Turėsite palaukti, kol naudotojų įrenginiai pateiks ataskaitas apie naujas strigtis ir ANR, kad sistemoje „Play Console“ būtų rodomos strigtys ir ANR, kurių klaidinimas panaikintas.
Taip yra dėl to, kad įkeliamas nebaigtas klaidinimo panaikinimo / pavertimo simboliais taisyklių failas. Būtinai įtraukite visos programos pavertimo simboliais taisyklių failus, ypač jei vykdote sudėtingą ar kelių etapų kompiliavimo procesą. Viena iš dažniausių dalinio klaidinimo panaikinimo priežasčių – naudojama trečiosios šalies biblioteka. Tokiu atveju klaidinimo panaikinimo taisyklių failus galite gauti iš bibliotekos teikėjo.
Be klaidinimo panaikinimo taisyklių failų ta pati strigtis ar ANR 32 bitų ir 64 bitų įrenginyje arba ARM ir „Intel“ įrenginyje rodoma atskirai. Teikdami klaidinimo panaikinimo taisyklių failus, galime sugrupuoti šias strigtis kartu, kad geriau matytumėte didžiausio poveikio programos strigtis ir ANR.
Jei pamiršite įkelti naujos versijos programos failą, strigčių ir ANR klaidinimas nebebus panaikintas. Vadovaukitės anksčiau pateiktomis instrukcijomis, kad dabar jį įkeltumėte. Įkėlus programos versijos „ProGuard“ atvaizdžio failą arba derinimo simbolių failą, bus panaikintas tik vėliau įvykusių strigčių ir ANR klaidinimas. Turėsite palaukti, kol naudotojų įrenginiai pateiks ataskaitas apie naujas strigtis ir ANR, kad sistemoje „Play Console“ būtų rodomos strigtys ir ANR, kurių klaidinimas panaikintas.
Kad nepamirštumėte įkelti failo, apsvarstykite galimybę pakeisti kompiliavimo procesą, kad būtų naudojami programų komponentų rinkiniai su 4.1 ar naujesnės versijos „Android“ papildiniu „Gradle“. Tokiu atveju galite automatiškai įtraukti derinimo simbolių failą į programos komponentų rinkinį vadovaudamiesi „Android“ kūrėjų svetainėje pateiktomis instrukcijomis.
Jei įkelsite netinkamą programos versijos failą, strigčių ir ANR klaidinimas nebebus panaikintas. Kad įkeltumėte pataisytą versiją, atlikite toliau nurodytus veiksmus.
- Atidarykite „Play Console“.
- Pasirinkite programą.
- Kairiajame meniu pasirinkite
Testuokite ir paskelbkite
> Programos komponentų rinkinio naršyklė. - Naudodami rinkiklį viršutiniame dešiniajame kampe pasirinkite atitinkamą objektą.
- Pasirinkite skirtuką Atsisiuntimai ir slinkite žemyn į skiltį „Ištekliai“.
- Spustelėkite ištrynimo piktogramą šalia netinkamo klaidinimo panaikinimo ar pavertimo simboliais taisyklių failo.
- Kai netinkama versija bus ištrinta, spustelėkite įkėlimo piktogramą ir įkelkite tinkamą programos versijos failą.
Įkėlus tinkamą programos versijos „ProGuard“ atvaizdžio failą arba derinimo simbolių failą, bus panaikintas tik vėliau įvykusių strigčių ir ANR klaidinimas. Turėsite palaukti, kol naudotojų įrenginiai pateiks ataskaitas apie naujas strigtis ir ANR, kad sistemoje „Play Console“ būtų rodomos strigtys ir ANR, kurių klaidinimas panaikintas.
Patarimas: kad neįkeltumėte netinkamos versijos failo, apsvarstykite galimybę pakeisti kompiliavimo procesą, kad būtų naudojami programų komponentų rinkiniai su 4.1 ar naujesnės versijos „Android“ papildiniu „Gradle“. Tokiu atveju galite automatiškai įtraukti derinimo simbolių failą į programos komponentų rinkinį vadovaudamiesi „Android“ kūrėjų svetainėje pateiktomis instrukcijomis.
Jei norite pradėti, apsilankykite „Android“ kūrėjų svetainėje.
Taip.
Kartais sistema susiduria su ANR, bet negali rinkti dėklo pėdsako. Šiuo atveju rodoma ANR, kad galėtumėte geriau suprasti programos stabilumą, bet pats dėklo pėdsakas negali būti rodomas. ANR be dėklo pėdsakų grupuojamos pagal tipą ir veiklą, todėl peržiūrint ir tvarkant panašias ANR galima sumažinti skaičių be dėklo pėdsakų.