Demaskiranje ili pretvaranje u ljudski jezik praćenja snopova za rušenja

Rušenjima i ANR-ovima na Androidu se stvara praćenje snopa. To je snimka slijeda ugniježđenih funkcija pozvanih u vašem programu do trenutka kad se srušio. Te vam snimke mogu biti od pomoći u identificiranju i rješavanju problema u izvornom kodu.

Ako je vaša aplikacija ili igra razvijena pomoću Jave i upotrebljavate ProGuard za optimizaciju i maskiranje svoje aplikacije, možete prenijeti ProGuard datoteku za mapiranje za svaku verziju svoje aplikacije na Play konzoli. Ako je vaša aplikacija ili igra razvijena pomoću nativnog koda, kao što je C++, možete prenijeti datoteku simbola za pogreške za svaku verziju svoje aplikacije na Play konzoli. Time se olakšava analiziranje i rješavanje rušenja i ANR-ova.

Važno: za demaskiranje aplikacija kompiliranih u Javi podržane su samo datoteke za mapiranje kompatibilne s ReTraceom. To je isti format koji se upotrebljava u ProGuardu ili R8-u.

1. korak: generiranje datoteke za demaskiranje ili pretvaranje u ljudski jezik

Da biste rušenja i ANR-ove svoje aplikacije demaskirali ili pretvorili u ljudski jezik za neku njenu verziju, prvo morate generirati potrebne datoteke za istu verziju svoje aplikacije. Morate generirati i prenijeti datoteku za svaku novu verziju svoje aplikacije kako bi se demaskiranje ili pretvaranje u ljudski jezik moglo provesti.

Java: generiranje ProGuard datoteke za mapiranje

Da biste demaskirali praćenja snopova za Javu, prvo morate generirati ProGuard datoteku za mapiranje. Da biste saznali kako, posjetite web-lokaciju Google Developers.

Nativni kôd: generiranje datoteke simbola za otklanjanje pogrešaka

Android dodatak za Gradle, verzija 4.1 ili novija

Ako se vašim projektom izrađuje Android App Bundle, u njega možete automatski uključiti datoteku simbola za pogreške. Da biste uključili ovu datoteku, u datoteku build.gradle svoje aplikacije dodajte sljedeće:

  • android.defaultConfig.ndk.debugSycbolLevel = 'FULL'

Napomena: datoteka simbola za pogreške ograničena je na 800 MB. Ako je veličina memorije simbola za pogreške prevelika, upotrijebite opciju SYMBOL_TABLE umjesto opcije FULL da biste smanjili veličinu datoteke.

Ako se vašim projektom izrađuje APK, upotrijebite gore navedenu postavku za izradu datoteke build.gradle kako biste zasebno generirali datoteku simbola za otklanjanje pogrešaka. Ručno prenesite datoteku simbola za otklanjanje pogrešaka na Google Play konzolu kako je opisano u nastavku u odjeljku 2. korak: prijenos datoteke za demaskiranje ili pretvaranje u ljudski jezik. Kao dio postupka izrade, Android dodatak za Gradle stvara tu datoteku na sljedećoj lokaciji projekta:

  • app/build/outputs/native-debug-symbols/variant-name/native-debug-symbols.zip

Android dodatak za Gradle, verzija 4.0 i starije verzije (i drugi sustavi za izradu)

Kao dio postupka izrade za paket aplikacije ili APK, Android dodatak za Gradle čuva kopiju neogoljenih biblioteka u direktoriju projekta. Struktura tog direktorija slična je ovoj:

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

Napomena: ako upotrebljavate neki drugi sustav za izradu, možete ga izmijeniti tako da pohranjuje neogoljene biblioteke u direktoriju čija je struktura jednaka gore navedenoj nužnoj strukturi.

  1. Komprimirajte sadržaj ovog direktorija:
    • $ cd app/build/intermediates/cmake/universal/release/obj
    • $ zip -r symbols.zip .
  2. Datoteku symbols.zip ručno prenesite na Play konzolu kako je opisano u nastavku, u odjeljku 2. korak: prijenos datoteke za demaskiranje ili pretvaranje u ljudski jezik.

Datoteka simbola za pogreške ograničena je na 800 MB. Ako je vaša datoteka prevelika, razlog je vjerojatno to da datoteke .so sadrže tablicu simbola (nazive funkcija), kao i informacije o otklanjanju pogrešaka u formatu DWARF (nazive datoteka i retke koda). Navedeno nije potrebno kako bi se vaš kôd pretvorio u ljudski jezik, a može se ukloniti pokretanjem ove naredbe:

  • $OBJCOPY --strip-debug lib.so lib.so.sym

Napomena: naredba $OBJCOPY upućuje na određenu verziju za ABI koji uklanjate, na primjer: ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-objcopy

2. korak: prijenos datoteke za demaskiranje ili pretvaranje u ljudski jezik

Da biste rušenja i ANR-ove svoje aplikacije demaskirali ili pretvorili u ljudski jezik za neku njenu verziju, morate prenijeti datoteke za demaskiranje ili pretvaranje u ljudski jezik za svaku verziju svoje aplikacije.

Važno: taj je korak obavezan samo za razvojne programere koji upotrebljavaju APK-ove. Ako upotrebljavate paket aplikacije i Android dodatak za Gradle (verziju 4.1 ili novije verzije), ne trebate ništa poduzimati. Automatski ćemo dohvatiti datoteku za demaskiranje iz paketa, a vi možete prijeći na 3. korak: prikaz demaskiranih snimki radnji koje su prethodile rušenju. Više o paketima aplikacije možete saznati na web-lokaciji za razvojne programere za Android.

Prijenos datoteka pomoću Play konzole

Da biste prenijeli datoteku za demaskiranje ili pretvaranje u ljudski jezik:

  1. Otvorite Play konzolu.
  2. Odaberite aplikaciju.
  3. Na lijevom izborniku odaberite Izdanje > Alat za istraživanje paketa aplikacije.
  4. Pomoću alata za odabir u gornjem desnom kutu odaberite relevantni artefakt.
  5. Odaberite karticu Preuzimanja i pomaknite se do odjeljka Elementi.
  6. Kliknite strelicu za prijenos za datoteku za mapiranje ili simbole za otklanjanje pogrešaka, ovisno o tome što je primjenjivo da biste prenijeli datoteku za demaskiranje ili pretvaranje u ljudski jezik za verziju aplikacije.
Prijenos datoteka pomoću Google Play Developer API-ja

Da biste prenijeli datoteke pomoću Google Play Developer API-ja, otvorite web-lokaciju Google Developers.

3. korak: prikaz demaskiranih praćenja snopova za rušenja

Nakon što prenesete ProGuard datoteku za mapiranje ili datoteku simbola za otklanjanje pogrešaka za neku verziju aplikacije, rušenja i ANR-ovi do kojih dođe nakon toga bit će demaskirani. Demaskirana praćenja snopova za pojedinačna rušenja i ANR-ove možete pregledati na stranici Rušenja i ANR-ovi svoje aplikacije.

  1. Otvorite Play konzolu.
  2. Odaberite aplikaciju.
  3. Na lijevom izborniku odaberite Kvaliteta > Android vitals > Rušenja i ANR-ovi.
  4. Odaberite rušenje.
  5. U odjeljku "Praćenje snopa" vidjet ćete svoja praćenja snopa koja su demaskirana i pretvorena u ljudski jezik.

Važno: nakon što prenesete datoteku za mapiranje za neku verziju aplikacije, samo će buduća rušenja i ANR-ovi za tu verziju aplikacije biti demaskirani. Rušenja i ANR-ovi za neku verziju aplikacije koji se dogode prije prijenosa odgovarajuće datoteke za mapiranje neće biti demaskirani.

Česta pitanja

Ne želim upotrebljavati demaskiranje/pretvaranje u ljudski jezik Play konzole. Mogu li to raditi offline?

Play konzola upotrebljava ndk-stack za pretvaranje praćenja snopova u ljudski jezik za nativne aplikacije, a ReTrace za rušenja Jave. Ako odlučite ne dijeliti svoje datoteke za demaskiranje, maskirane snopove rušenja možete kopirati s Play konzole i upotrijebiti odgovarajući alat kako biste ih pretvorili u ljudski jezik offline. Međutim, taj se postupak mora izvršiti ručno za svaki snop rušenja, zbog čega će biti spor i dugotrajan. Ako priložite datoteke za demaskiranje, Play konzola učinit će to umjesto vas.

Prenio/prenijela sam datoteku za demaskiranje/pretvaranje u ljudski jezik. Zašto su moja rušenja i ANR-ovi i dalje maskirani?

Nakon što prenesete ProGuard datoteku za mapiranje ili datoteku simbola za pogreške za neku verziju aplikacije, demaskirat će se samo rušenja i ANR-ovi koji se dogode nakon toga. Morat ćete pričekati da uređaji korisnika prijave nova rušenja i ANR-ove kako biste vidjeli demaskirana rušenja i ANR-ove na Play konzoli.

Zašto su moja rušenja i ANR-ovi samo djelomično demaskirani nakon što sam prenio/prenijela datoteku za demaskiranje/pretvaranje u ljudski jezik?

Do ovog dolazi kada se prenese nepotpuna datoteka za demaskiranje/pretvaranje u ljudski jezik. Provjerite jeste li uključili datoteke za pretvaranje u ljudski jezik za cijelu svoju aplikaciju, pogotovo ako je vaš postupak izrade kompleksan ili podijeljen u više faza. Jedan od najčešćih razloga za djelomično demaskiranje jest upotreba zbirke treće strane. U tom slučaju od davatelja zbirke možda možete dobiti datoteke za demaskiranje.

Zašto imam dojam da nakon prijenosa datoteka za demaskiranje/pretvaranje u ljudski jezik dobivam manje rušenja i ANR-ova, no oni koje dobijem su ozbiljniji?

Bez datoteka za demaskiranje, isto rušenje ili ANR do kojeg je došlo na 32-bitnom i 64-bitnom uređaju, ili na ARM ili Intel uređaju, bit će zasebno prikazani. Ako su nam datoteka za demaskiranje ustupljene, ta rušenja možemo grupirati zajedno, čime vam pružamo bolji uvid u najznačajnija rušenja i ANR-ove za vašu aplikaciju.

Što će se dogoditi ako zaboravim prenijeti datoteku?

Ako zaboravite prenijeti datoteku za novu verziju svoje aplikacije, rušenja i ANR-ovi ponovno će biti maskirani. Slijedite gore navedene upute da biste je sada prenijeli. Nakon što prenesete ProGuard datoteku za mapiranje ili datoteku simbola za pogreške za neku verziju aplikacije, demaskirat će se samo rušenja i ANR-ovi koji se dogode nakon toga. Morat ćete pričekati da uređaji korisnika prijave nova rušenja i ANR-ove kako biste vidjeli demaskirana rušenja i ANR-ove na Play konzoli.

Kako vam se ne bi dogodilo da zaboravite prenijeti datoteku, razmislite o tome da promijenite svoj postupak izrade, i to tako da se koristite paketima aplikacije s Android dodatkom za Gradle (verzija 4.1 ili novije verzije). U tom slučaju automatski možete uključiti datoteku simbola za otklanjanje pogrešaka u paket aplikacije slijedeći upute na web-lokaciji za razvojne programere za Android.

Što će se dogoditi ako prenesem pogrešnu datoteku?

Ako prenesete pogrešnu datoteku za neku verziju aplikacije, rušenja i ANR-ovi ponovno će biti maskirani. Da biste prenijeli ispravljenu verziju:

  1. Otvorite Play konzolu.
  2. Odaberite aplikaciju.
  3. Na lijevom izborniku odaberite Izdanje > Alat za istraživanje paketa aplikacije
  4. Pomoću alata za odabir u gornjem desnom kutu odaberite relevantni artefakt.
  5. Odaberite karticu Preuzimanja i pomaknite se do odjeljka Elementi.
  6. Kliknite ikonu za brisanje pored pogrešne datoteke za demaskiranje ili pretvaranje u ljudski jezik.
  7. Nakon brisanja netočne verzije, kliknite ikonu za prijenos i prenesite ispravnu datoteku za verziju aplikacije.

Nakon što prenesete ispravnu ProGuard datoteku za mapiranje ili datoteku simbola za otklanjanje pogrešaka za neku verziju aplikacije, samo će rušenja i ANR-ovi koji se dogode nakon toga biti demaskirani. Morat ćete pričekati da uređaji korisnika prijave nova rušenja i ANR-ove kako biste vidjeli demaskirana rušenja i ANR-ove na Play konzoli.

Savjet: kako vam se ne bi dogodilo da prenesete pogrešnu verziju datoteke, razmislite o tome da promijenite svoj postupak izrade, i to tako da se koristite paketima aplikacije s Android dodatkom za Gradle (verzija 4.1 ili novije verzije). U tom slučaju automatski možete uključiti datoteku simbola za otklanjanje pogrešaka u paket aplikacije slijedeći upute na web-lokaciji za razvojne programere za Android.

Trenutačno upotrebljavam APK-ove. Kako se mogu prebaciti na upotrebu paketa aplikacije?

Posjetite web-lokaciju za razvojne programere Androida da biste započeli.

Moja aplikacija sadrži i nativni i Java kôd. Mogu li prenijeti datoteku za pretvaranje u ljudski jezik za nativni kôd i datoteku za demaskiranje za Javu?

Da.

Zašto neki ANR-ovi ne prikazuju praćenje stoga?

Sustav povremeno nailazi na ANR, ali ne može prikupiti praćenje stoga. U tom se slučaju prikazuje pogreška ANR koja vam pruža potpuniji prikaz stabilnosti aplikacije, ali se praćenje stoga ne može prikazati. ANR-ovi bez praćenja stoga grupiraju se prema vrsti i aktivnosti, pa bi pregledavanje i ispravljanje sličnih ANR-ova moglo pomoći da se smanji broj bez praćenja stoga.

Je li to bilo korisno?

Kako to možemo poboljšati?
Pretraživanje
Izbriši pretraživanje
Zatvaranje pretraživanja
Glavni izbornik
11800174629823685692
true
Pretraži Centar za pomoć
true
true
true
true
true
92637
false
false