Strigčių dėklo pėdsakų klaidinimo panaikinimas arba pavertimas simboliais

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ę.

Savasis: sugeneruokite derinimo simbolių failą

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ą.

  1. Suglaudinkite šio katalogo turinį:
    • $ cd app/build/intermediates/cmake/universal/release/obj
    • $ zip -r symbols.zip .
  2. 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.

  1. Atidarykite „Play Console“.
  2. Pasirinkite programą.
  3. Kairiajame meniu pasirinkite Leidimas > Programos komponentų rinkinio naršyklė.
  4. Naudodami rinkiklį viršutiniame dešiniajame kampe pasirinkite atitinkamą objektą.
  5. Pasirinkite skirtuką Atsisiuntimai ir slinkite žemyn į skiltį „Ištekliai“.
  6. Spustelėkite atitinkamai atvaizdžio failo arba derinimo simbolių įkėlimo rodyklę, kad įkeltumėte programos versijos klaidinimo panaikinimo arba pavertimo simboliais taisyklių failą.
Failų įkėlimas naudojant „Google Play“ kūrėjo API

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.

  1. Atidarykite „Play Console“.
  2. Pasirinkite programą.
  3. Kairiajame meniu pasirinkite Kokybė > Android Vitals > Strigtys ir ANR.
  4. Pasirinkite strigtį.
  5. 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ėliau klaidinimo panaikinimo / pavertimo simboliais taisyklių failą. Kodėl strigčių ir ANR klaidinimas vis tiek nepanaikintas?

Į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.

Kodėl įkėlus klaidinimo panaikinimo / pavertimo simboliais taisyklių failą mano strigčių ir ANR klaidinimas panaikinamas tik iš dalies?

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.

Kodėl įkėlus klaidinimo panaikinimo / pavertimo simboliais taisyklių failą man rodoma mažiau, bet rimtesnių strigčių ir ANR?

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.

Kas nutiks, jei pamiršiu įkelti failą?

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.

Kas nutiks, jei įkelsiu netinkamą failą?

Jei įkelsite netinkamą programos versijos failą, strigčių ir ANR klaidinimas nebebus panaikintas. Kad įkeltumėte pataisytą versiją, atlikite toliau nurodytus veiksmus.

  1. Atidarykite „Play Console“.
  2. Pasirinkite programą.
  3. Kairiajame meniu pasirinkite Leidimas > Programos komponentų rinkinio naršyklė.
  4. Naudodami rinkiklį viršutiniame dešiniajame kampe pasirinkite atitinkamą objektą.
  5. Pasirinkite skirtuką Atsisiuntimai ir slinkite žemyn į skiltį „Ištekliai“.
  6. Spustelėkite ištrynimo piktogramą šalia netinkamo klaidinimo panaikinimo ar pavertimo simboliais taisyklių failo.
  7. 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.

Šiuo metu naudoju APK. Kaip pradėti naudoti programų komponentų rinkinius?

Jei norite pradėti, apsilankykite „Android“ kūrėjų svetainėje.

Programoje yra savasis ir „Java“ kodai. Ar galiu įkelti ir savąjį pavertimo simboliais taisyklių failą, ir „Java“ klaidinimo panaikinimo taisyklių failą?

Taip.

Kodėl kai kuriose ANR nerodomas dėklo pėdsakas?

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ų.

Ar tai buvo naudinga?

Kaip galime jį patobulinti?

Reikia daugiau pagalbos?

Išbandykite kitus toliau nurodytus veiksmus.

Paieška
Išvalyti paiešką
Uždaryti paiešką
Pagrindinis meniu
5604915144146172801
true
Paieška pagalbos centre
true
true
true
true
true
92637
false
false