Rozjasnenie alebo symbolikácia sledovaní zásobníka pred pádom

Pády a nereagovania aplikácie v Androide vytvárajú sledovanie zásobníka, čo je snímka sekvencie vnorených funkcií volaných vo vašom programe až do momentu pádu. Tieto snímky vám pomôžu identifikovať a odstrániť akékoľvek problémy v zdroji.

Ak bola vaša aplikácia alebo hra vyvinutá pomocou jazyka Java a optimalizujete a znejasňujete ju softvérom ProGuard, môžete nahrať mapovací súbor ProGuard pre každú verziu svojej aplikácie v službe Play Console. Ak bola vaša aplikácia alebo hra vyvinutá pomocou natívneho kódu, ako je C++, môžete nahrať súbor symbolov na ladenie pre každú verziu svojej aplikácie v službe Play Console. Uľahčuje to analýzu a opravu pádov aj nereagovaní aplikácie.

Dôležité: Na účely rozjasňovania aplikácií kompilovaných v jazyku Java sú podporované iba mapovacie súbory kompatibilné s nástrojom ReTrace. Je to rovnaký formát, aký používa ProGuard alebo R8.

1. krok: vygenerujte rozjasňovací súbor alebo súbor symbolikácie

Ak chcete rozjasniť alebo symbolikovať pády a nereagovania určitej verzie aplikácie, musíte najprv vygenerovať požadované súbory pre tú istú verziu aplikácie. Rozjasnenie a symbolikácia fungujú, len keď nahráte súbor pre každú novú verziu svojej aplikácie.

Java: generovanie mapovacieho súboru ProGuard

Ak chcete rozjasniť sledovania zásobníka Java, musíte najprv vygenerovať mapovací súbor ProGuard. Postup nájdete na webe Google Developers.

Natívny kód: generovanie súboru so symbolmi ladenia

Doplnok Android pre Gradle verzie 4.1 alebo novšej

Ak váš projekt kompiluje balík Android App Bundle, môžete doň automaticky zahrnúť súbor symbolov na ladenie. Ak chcete zahrnúť tento súbor, pridajte do súboru build.gradle svojej aplikácie nasledujúci kód:

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

Poznámka: Maximálna veľkosť súboru symbolov na ladenie je 800 MB. Ak je množstvo symbolov ladenia príliš veľké, znížte veľkosť súboru použitím úrovne symbolov SYMBOL_TABLE namiesto úrovne FULL.

Ak váš projekt kompiluje súbor APK, použite nastavenie build.gradle uvedené vyššie na vygenerovanie súboru so symbolmi ladenia osobitne. Manuálne nahrajte súbor so symbolmi ladenia do služby Google Play Console, ako je to opísané nižšie v 2. kroku: nahrajte rozjasňovací súbor alebo súbor symbolikácie. V rámci procesu kompilácie vytvorí doplnok Android pre Gradle tento súbor v nasledujúcom umiestnení projektu:

  • app/build/outputs/native-debug-symbols/nazov-variantu/native-debug-symbols.zip

Doplnok Android pre Gradle verzie 4.0 a staršej (a ďalšie systémy kompilácie)

V rámci procesu kompilácie balíka aplikácie alebo súboru APK uchováva doplnok Android pre Gradle v adresári projektu kópiu neredukovaných knižníc. Tento adresár má štruktúru podobnú tejto:

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

Poznámka: Ak používate iný systém kompilácie, môžete ho zmeniť tak, aby ukladal neredukované knižnice do adresára s požadovanou štruktúrou uvedenou vyššie.

  1. Zbaľte obsah tohto adresára:
    • $ cd app/build/intermediates/cmake/universal/release/obj
    • $ zip -r symbols.zip .
  2. Manuálne nahrajte súbor symbols.zip do služby Play Console tak, ako to opisuje nižšie 2. krok: nahrajte rozjasňovací súbor alebo súbor symbolikácie.

Maximálna veľkosť súboru symbolov na ladenie je 800 MB. Ak je váš súbor príliš veľký, pravdepodobne je to tým, že vaše súbory .so obsahujú tabuľku symbolov (názvy funkcií) a aj informácie o ladení DWARF (názvy súborov a riadky kódu). Tieto informácie nie sú potrebné na symbolikáciu kódu a je ich možné odstrániť spustením tohto príkazu:

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

Poznámka: Premenná $OBJCOPY ukazuje na konkrétnu verziu rozhrania ABI, ktoré redukujete, napríklad:ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-objcopy.

2. krok: nahrajte rozjasňovací súbor alebo súbor symbolikácie

Ak chcete rozjasniť alebo symbolikovať zrútenia a nereagovania určitej verzie aplikácie, musíte nahrať rozjasňovací súbor alebo súbor symbolikácie pre jednotlivé verzie aplikácie.

Dôležité: Tento krok sa vyžaduje len v prípade vývojárov používajúcich súbory APK. Ak používate balík aplikácie a doplnok Android pre Gradle verzie 4.1 alebo novšej, nemusíte robiť nič. Rozjasňovací súbor automaticky vyberieme z balíka. Môžete prejsť na 3. krok: pozrite si rozjasnené sledovania zásobníka pred pádom. Viac o balíkoch aplikácií sa dozviete na webe Android Developers.

Nahrávanie súborov pomocou služby Play Console

Ak chcete nahrať rozjasňovací súbor alebo súbor symbolikácie:

  1. Otvorte Play Console.
  2. Vyberte požadovanú aplikáciu.
  3. V ponuke vľavo vyberte

    Testovanie a vydávanie

    > Prieskumník balíkov aplikácie.
  4. Pomocou výberu v pravom hornom rohu zvoľte príslušný artefakt.
  5. Vyberte kartu Stiahnuté a posuňte sa nadol na sekciu Podklady.
  6. Kliknite na šípku nahrania mapovacieho súboru alebo súboru so symbolmi ladenia a nahrajte rozjasňovací súbor či súbor symbolikácie pre príslušnú verziu svojej aplikácie.
Nahranie súborov prostredníctvom rozhrania Google Play Developer API

Ak chcete nahrať súbory prostredníctvom rozhrania Google Play Developer API, prejdite na web Google Developers.

3. krok: pozrite si rozjasnené sledovania zásobníka pred pádom

Po nahraní mapovacieho súboru ProGuard alebo súboru so symbolmi ladenia pre určitú verziu aplikácie budú rozjasnené iba pády a nereagovania aplikácie, ktoré sa vyskytnú následne. Rozjasnené sledovania zásobníka pre jednotlivé pády a nereagovania svojej aplikácie môžete skontrolovať na stránke Pády a nereagovania aplikácie.

  1. Otvorte Play Console.
  2. Vyberte požadovanú aplikáciu.
  3. V ponuke vľavo vyberte Sledovanie a zlepšovanie > Android Vitals > Pády a nereagovania aplikácie.
  4. Vyberte požadovaný pád.
  5. V sekcii Sledovania zásobníka uvidíte svoje trasovania zásobníka, ktoré boli rozjasnené alebo na ktoré bola aplikovaná symbolikácia.

Dôležité: Po nahraní mapovacieho súboru pre určitú verziu aplikácie budú rozjasnené iba následné pády a nereagovania danej verzie aplikácie. Pády a nereagovania určitej verzie aplikácie, ku ktorým došlo pred nahraním príslušného mapovacieho súboru, nebudú rozjasnené.

Časté otázky

Nechcem používať rozjasnenie alebo symbolikáciu v službe Play Console. Môžem to urobiť offline?

Play Console vytvorí symbolikáciu sledovaní zásobníka natívnych aplikácií pomocou nástroja ndk-stack a v prípade pádov aplikácií v jazyku Java použije nástroj ReTrace. Ak sa rozhodnete nezdieľať svoje rozjasňovacie súbory, môžete skopírovať rozjasnené zásobníky pádov zo služby Play Console a vytvoriť ich symbolikáciu vhodným offline nástrojom. Tento postup je však nutné vykonať manuálne pre každý zásobník pádov, takže je pomalý a časovo náročný. Ak poskytnete rozjasňovacie súbory, Play Console to vyrieši za vás.

Po nahraní rozjasňovacieho súboru alebo súboru symbolikácie sú moje pády a nereagovania aplikácie stále znejasnené. Prečo sa to deje?

Po nahraní mapovacieho súboru ProGuard alebo súboru symbolov na ladenie pre určitú verziu aplikácie budú rozjasnené iba pády a nereagovania aplikácie, ktoré sa vyskytnú následne. Zariadenia používateľov nahlasujú pády a nereagovania aplikácie až po určitom čase, preto sa v službe Play Console zobrazia rozjasnené oneskorene.

Prečo sú moje pády a nereagovania aplikácie po nahraní rozjasňovacieho súboru alebo súboru symbolikácie rozjasnené iba čiastočne?

Je to preto, lebo nahraný rozjasňovací súbor alebo súbor symbolikácie nie je kompletný. Nezabudnite zahrnúť súbory symbolikácie pre celú svoju aplikáciu, najmä ak používate zložitý alebo viacstupňový proces kompilácie. Jedným z najbežnejších dôvodov čiastočného rozjasnenia je použitie knižnice tretej strany. V takom prípade skúste získať rozjasňovacie súbory od poskytovateľa knižnice.

Prečo sa zdá, že sa po nahraní rozjasňovacieho súboru alebo súboru symbolikácie vyskytuje menej pádov a nereagovaní aplikácie, avšak závažnejších?

Bez rozjasňovacích súborov sa rovnaký pád alebo nereagovanie aplikácie v 32‑bitovom a 64‑bitovom zariadení alebo zariadení s procesorom ARM a procesorom Intel zobrazí samostatne. Poskytnutím rozjasňovacích súborov môžeme tieto pády zoskupiť dohromady, čo vám poskytne lepšiu perspektívu pri najzávažnejších pádoch a nereagovaniach aplikácie.

Čo sa stane, ak zabudnem nahrať súbor?

Ak zabudnete nahrať súbor pre novú verziu svojej aplikácie, pády a nereagovania aplikácie budú opäť znejasnené. Nahrajte súbor podľa pokynov uvedených vyššie. Po nahraní mapovacieho súboru ProGuard alebo súboru symbolov na ladenie pre určitú verziu aplikácie budú rozjasnené iba pády a nereagovania aplikácie, ktoré sa vyskytnú následne. Zariadenia používateľov nahlasujú pády a nereagovania aplikácie až po určitom čase, preto sa v službe Play Console zobrazia rozjasnené oneskorene.

Ak chcete predísť riziku, že zabudnete nahrať súbor, môžete zmeniť proces kompilácie a používať balíky aplikácie s doplnkom Android pre Gradle verzie 4.1 alebo novšej. Potom budete môcť súbor so symbolmi ladenia zahrnúť do balíka aplikácie automaticky podľa pokynov uvedených na webe Android Developers.

Čo sa stane, ak nahrám nesprávny súbor?

Ak pre niektorú verziu svojej aplikácie nahráte nesprávny súbor, pády a nereagovania aplikácie budú opäť znejasnené. Postup nahrania opravenej verzie:

  1. Otvorte Play Console.
  2. Vyberte požadovanú aplikáciu.
  3. V ponuke vľavo vyberte

    Testovanie a vydávanie

    > Prieskumník balíkov aplikácie.
  4. Pomocou výberu v pravom hornom rohu zvoľte príslušný artefakt.
  5. Vyberte kartu Stiahnuté a posuňte sa nadol na sekciu Podklady.
  6. Kliknite na ikonu odstránenia vedľa nesprávneho rozjasňovacieho súboru alebo súboru symbolikácie.
  7. Po odstránení nesprávnej verzie kliknite na ikonu nahrania a nahrajte správny súbor pre príslušnú verziu aplikácie.

Po nahraní správneho mapovacieho súboru ProGuard alebo súboru so symbolmi ladenia pre určitú verziu vašej aplikácie budú rozjasnené iba pády a nereagovania aplikácie, ktoré sa vyskytnú následne. Zariadenia používateľov nahlasujú pády a nereagovania aplikácie až po určitom čase, preto sa v službe Play Console zobrazia rozjasnené oneskorene.

Tip: Ak chcete predísť riziku, že nahráte nesprávny súbor, môžete zmeniť proces kompilácie a používať balíky aplikácie s doplnkom Android pre Gradle verzie 4.1 alebo novšej. Potom budete môcť súbor so symbolmi ladenia zahrnúť do balíka aplikácie automaticky podľa pokynov uvedených na webe Android Developers.

Momentálne používam súbory APK. Ako mám postupovať, keď chcem používať balíky aplikácie?

Postup, ako začať, nájdete na webe Android Developers.

Moja aplikácia obsahuje natívny kód aj kód v jazyku Java. Môžem nahrať súbor symbolikácie pre natívny kód aj rozjasňovací súbor pre jazyk Java?

Áno.

Prečo niektoré hlásenia o neragovaniach aplikácie nezobrazujú sledovanie zásobníka?

Niekedy dôjde v systéme k nereagovaniu aplikácie a informácie o sledovaní zásobníka sa nedajú získať. Vtedy sa zobrazí hlásenie o nereagovaní aplikácie, ktoré vám poskytne ucelenejší prehľad stability vašej aplikácie, ale informácie o sledovaní zásobníka sa nezobrazia. Nereagovania aplikácie bez sledovaní zásobníka sú zoskupené podľa typu a aktivity, takže kontrola a oprava podobných nereagovaní aplikácie môže pomôcť znížiť počet bez sledovaní zásobníka.

Pomohlo vám to?

Ako ju môžeme zlepšiť?

Potrebujete ďalšiu pomoc?

Vyskúšajte tieto ďalšie kroky:

Vyhľadávanie
Vymazať vyhľadávanie
Zavrieť vyhľadávanie
Hlavná ponuka
15978849867673125414
true
Vyhľadávanie v Centre pomoci
true
true
true
true
true
92637
false
false