Zrušitve in ANR-ji v sistemu Android ustvarijo sled sklada oziroma posnetek niza ugnezdenih funkcij, klicanih v programu do trenutka zrušitve. Ti posnetki vam lahko pomagajo odkriti in odpraviti težave v viru.
Če ste aplikacijo ali igro razvili z Javo in za optimiziranje in zakrivanje aplikacije uporabljate orodje ProGuard, lahko v Konzolo Play za vsako različico aplikacije naložite datoteko za preslikavo v orodju ProGuard. Če ste aplikacijo ali igro razvili z izvorno kodo, kot je C++, lahko v Konzolo Play za vsako različico aplikacije naložite datoteko s simboli za odpravljanje napak. Tako boste lažje analizirali in odpravili zrušitve in ANR-je.
Pomembno: Za odkrivanje aplikacij, prevedenih z Javo, so podprte samo datoteke za preslikavo, združljive z orodjem ReTrace. To obliko uporablja tudi orodje ProGuard ali R8.
1. korak: Ustvarite datoteko za odkrivanje ali pretvorbo v simbole
Če želite odkriti ali pretvoriti v simbole zrušitve in ANR-je aplikacije za določeno različico aplikacije, morate najprej ustvariti zahtevane dodateke za isto različico aplikacije. Ustvariti in naložiti morate datoteko za vsako novo različico aplikacije, če želite, da bo delovalo odkrivanje ali da bo delovala pretvorba v simbole.
Java: Ustvarjanje datoteke za preslikavo v orodju ProGuardČe želite odkriti sledi sklada za Javo, morate najprej ustvariti datoteko za preslikavo v orodju ProGuard. Če želite izvedeti, kako to storite, obiščite spletno mesto Google Developers.
Androidov vtičnik za Gradle različice 4.1 in novejši
Če vaš projekt pri gradnji uporablja sveženj Android App Bundle, lahko vanj samodejno vključite datoteko s simboli za odpravljanje napak. Če želite vključiti to datoteko, v datoteko build.gradle
za aplikacijo dodajte:
android.defaultConfig.ndk.debugSymbolLevel = 'FULL'
Opomba: Omejitev za datoteko s simboli za odpravljanje napak je 800 MB. Če je datoteka s simboli za odpravljanje napak prevelika, uporabite SYMBOL_TABLE
namesto FULL
, da zmanjšate velikost datoteke.
Če vaš projekt pri gradnji uporablja APK, za ločeno ustvarjanje datoteke s simboli za odpravljanje napak uporabite nastavitev gradnje build.gradle. Ročno naložite datoteko s simboli za odpravljanje napak v Konzolo Google Play, kot je opisano spodaj v 2. korak: Naložite datoteko za odkrivanje ali pretvorbo v simbole. V okviru postopka gradnje Androidov vtičnik za Gradle to datoteko ustvari na tej lokaciji projekta:
app/build/outputs/native-debug-symbols/ime-različice/native-debug-symbols.zip
Androidov vtičnik za Gradle različice 4.0 in starejši (in drugi sistemi gradnje)
V okviru postopka gradnje aplikacijskega svežnja ali APK-ja Androidov vtičnik za Gradle hrani kopijo neodstranjenih knjižnic v imeniku projekta. Ta imenik sledi strukturi, podobni tej:
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
Opomba: Če uporabljate drug sistem gradnje, ga lahko spremenite, tako da neodstranjene knjižnice shrani v imenik z zgoraj zahtevano strukturo.
- Stisnite vsebino tega imenika:
$ cd app/build/intermediates/cmake/universal/release/obj
$ zip -r simboli.zip .
- Ročno naložite datoteko simboli.zip v Konzolo Play, kot je opisano spodaj v 2. korak: Naložite datoteko za odkrivanje ali pretvorbo v simbole.
Omejitev za datoteko s simboli za odpravljanje napak je 800 MB. Če je datoteka prevelika, datoteke .so najbrž vsebujejo tabelo s simboli (imena funkcij) in informacije o odpravljanju napak DWARF (imena datotek in vrstice kode). Te niso potrebne za pretvorbo kode v simbole in jih je mogoče odstraniti z izvedbo tega ukaza:
$OBJCOPY --strip-debug lib.so lib.so.sym
Opomba: $OBJCOPY
usmerja na določeno različico za ABI, ki ga odstranjujete, na primer: ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-objcopy
2. korak: Naložite datoteko za odkrivanje ali pretvorbo v simbole
Če želite odkriti ali pretvoriti v simbole zrušitve in ANR-je aplikacije za določeno različico aplikacije, morate naložiti datoteko za odkrivanje ali pretvorbo v simbole za vsako različico aplikacije.
Pomembno: Ta korak je obvezen samo za razvijalce, ki uporabljajo APK-je. Če uporabljate aplikacijski sveženj in Androidov vtičnik za Gradle različice 4.1 ali novejšega, vam ni treba storiti ničesar. Datoteko za odkrivanje bomo samodejno prenesli iz svežnja in lahko preskočite na 3. korak: Oglejte si odkrite sledi sklada zrušitev. Več o aplikacijskih svežnjih lahko preberete na spletnem mestu za razvijalce za Android.
Nalaganje datotek s Konzolo PlayČe želite naložiti datoteko za odkrivanje ali pretvorbo v simbole:
- Odprite Konzolo Play.
- Izberite aplikacijo.
- V levem meniju izberite
Preizkus in izdaja
> Raziskovalec aplikacijskih svežnjev. - Z izbirnikom v zgornjem desnem kotu izberite ustrezni artefakt.
- Izberite zavihek Prenosi in se pomaknite navzdol do razdelka »Sredstva«.
- Kliknite puščico za nalaganje za datoteko za preslikavo ali simbole za odpravljanje napak, kot je ustrezno, če želite naložiti datoteko za odkrivanje ali pretvorbo v simbole za različico aplikacije.
Če želite datoteke naložiti z uporabo API-ja za razvijalce za Google Play, obiščite spletno mesto Google Developers.
3. Korak: Oglejte si odkrite sledi sklada zrušitev
Ko naložite datoteko za preslikavo ali pretvorbo v simbole v orodju ProGuard za aplikacijo, bodo odkriti zrušitve in ANR-ji, ki se zgodijo zatem. Odkrite sledi sklada za posamezne zrušitve in ANR-je lahko pregledate na strani Zrušitve in ANR-ji.
- Odprite Konzolo Play.
- Izberite aplikacijo.
- V levem meniju izberite Spremljanje in izboljšanje > Osnovni podatki za Android > Zrušitve in ANR-ji.
- Izberite zrušitev.
- V razdelku »Sledi sklada« bodo prikazane odkrite in v simbole pretvorjene sledi sklada.
Pomembno: Ko naložite datoteko za preslikavo za različico aplikacije, bodo odkriti samo prihodnji zrušitve in ANR-ji za to različico aplikacije. Zrušitve in ANR-ji za različico aplikacije, ki se zgodijo, preden naložite ustrezno datoteko za preslikavo, ne bodo odkriti.
Pogosta vprašanja
Ne želim uporabljati odkrivanja/pretvorbe v simbole s Konzolo Play. Ali lahko to izvedem brez povezave?Konzola Play uporablja ndk-stack za pretvorbo sledi sklada pri izvornih aplikacijah in orodje ReTrace za zrušitve v Javi. Če ne želite deliti datotek za odkrivanje, lahko kopirate odkrite sklade zrušitev iz Konzole Play in za pretvorbo v simbole uporabljate ustrezno orodje brez povezave. Vendar morate ta postopek izvesti ročno za vsak sklad zrušitve, kar je počasno in zamudno. Če pošljete datoteke za odkrivanje, to namesto vas uredi Konzola Play.
Ko naložite datoteko za preslikavo v orodju ProGuard ali datoteko s simboli za odpravljanje napak za aplikacijo, bodo odkriti samo zrušitve in ANR-ji, ki se zgodijo zatem. Preden bodo v Konzoli Play prikazani odkriti zrušitve in ANR-ji, morate počakati nekaj časa, da naprave uporabnikov sporočijo nove zrušitve in ANR-je.
To se zgodi zaradi nalaganja nepopolne datoteke za odkrivanje/pretvorbo v simbole. Vključiti morate datoteke za pretvorbo v simbole za celotno aplikacijo, zlasti če uporabljate zapleten ali večstopenjski postopek gradnje. Med najpogostejšimi razlogi za delno odkrivanje je uporaba knjižnice drugega ponudnika. V tem primeru morda lahko prejmete datoteke za odkrivanje od ponudnika knjižnice.
Brez datotek za odkrivanje bo enaka zrušitev ali ANR v 32-bitni in 64-bitni napravi oziroma napravi ARM in napravi Intel prikazana/prikazan ločeno. Če pošljete datoteke za odkrivanje, lahko te zrušitve združimo v gruče in vam omogočimo boljši pregled nad zrušitvami in ANR-ji, ki najbolj vplivajo na aplikacijo.
Če pozabite naložiti datoteko za novo različico aplikacije, bodo zrušitve in ANR-ji znova zakriti. Če jo želite naložiti, sledite zgornjim navodilom. Ko naložite datoteko za preslikavo v orodju ProGuard ali datoteko s simboli za odpravljanje napak za aplikacijo, bodo odkriti samo zrušitve in ANR-ji, ki se zgodijo zatem. Preden bodo v Konzoli Play prikazani odkriti zrušitve in ANR-ji, morate počakati nekaj časa, da naprave uporabnikov sporočijo nove zrušitve in ANR-je.
Če ne želite tvegati, da bi pozabili naložiti datoteko, razmislite o spremembi postopka gradnje, da bi poslej uporabljali aplikacijske svežnje z Androidovim vtičnikom za Gradle različice 4.1 ali novejšim. V tem primeru lahko samodejno vključite datoteko s simboli za odpravljanje napak v aplikacijski sveženj, tako da upoštevate navodila na spletnem mestu za razvijalce za Android.
Če za različico aplikacije naložite napačno datoteko, bodo zrušitve in ANR-ji znova zakriti. Če želite naložiti popravljeno različico:
- Odprite Konzolo Play.
- Izberite aplikacijo.
- V levem meniju izberite
Preizkus in izdaja
> Raziskovalec aplikacijskih svežnjev. - Z izbirnikom v zgornjem desnem kotu izberite ustrezni artefakt.
- Izberite zavihek Prenosi in se pomaknite navzdol do razdelka »Sredstva«.
- Zraven nepravilne datoteke za odkrivanje ali pretvorbo v simbole kliknite ikono za brisanje .
- Ko izbrišete napačno različico, kliknite ikono za nalaganje in naložite ustrezno datoteko za različico aplikacije.
Ko naložite pravilno datoteko za preslikavo ali pretvorbo v simbole v orodju ProGuard za aplikacijo, bodo odkriti samo zrušitve in ANR-ji, ki se zgodijo zatem. Preden bodo v Konzoli Play prikazani odkriti zrušitve in ANR-ji, morate počakati nekaj časa, da naprave uporabnikov sporočijo nove zrušitve in ANR-je.
Nasvet: Če ne želite tvegati, da bi naložili napačno datoteko, razmislite o spremembi postopka gradnje, da bi poslej uporabljali aplikacijske svežnje z Androidovim vtičnikom za Gradle različice 4.1 ali novejšim. V tem primeru lahko samodejno vključite datoteko s simboli za odpravljanje napak v aplikacijski sveženj, tako da upoštevate navodila na spletnem mestu za razvijalce za Android.
Če želite začeti, obiščite spletno mesto za razvijalce za Android.
Da.
Včasih sistem naleti na ANR, vendar ne more zbrati sledi sklada. V tem primeru se prikaže ANR, da dobite celovitejši vpogled v stabilnost aplikacije, vendar same sledi sklada ni mogoče prikazati. ANR-ji brez sledi sklada so združeni glede na vrsto in dejavnost, zato lahko s pregledom in odpravljanjem podobnih ANR-jev prispevate k zmanjšanju števila brez sledi sklada.