Rozjasnenie alebo symbolikácia trasovania zásobníkov zrútenia

Zrútenia 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 zrútenia. Tieto snímky vám pomôžu pri identifikácii a odstránení akýchkoľvek problémov v zdroji.

Ak bola vaša aplikácia alebo hra vyvinutá pomocou jazyka Java a optimalizujete a znejasňujete súbory APK 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 so symbolmi ladenia pre každú verziu svojej aplikácie v službe Play Console. Uľahčuje to analýzu a opravu vašich zrútení a 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 softvér ProGuard alebo R8.

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

Ak chcete rozjasniť zrútenia a nereagovania určitej verzie aplikácie alebo na ne aplikovať symbolikáciu, 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ť trasovania 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 so symbolmi ladenia. 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 so symbolmi ladenia je 300 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 APK alebo Android App Bundle 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, ako to opisuje nižšie 2. krok: nahrajte rozjasňovací súbor alebo súbor symbolikácie.

Maximálna veľkosť súboru so symbolmi ladenia je 300 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 tiež 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ť zrútenia a nereagovania určitej verzie aplikácie alebo na ne aplikovať symbolikáciu, 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 Android App Bundle a doplnok Android pre Gradle verzie 4.1 alebo novšej, nemusíte robiť nič. Rozjasňovací súbor automaticky vyberieme z balíka a môžete prejsť na 3. krok: pozrite si rozjasnené trasovania zásobníkov zrútenia. Viac o balíkoch aplikácií sa dozviete na webe Android Developers.

Nahranie súborov pomocou služby Play Console

Postup nahrania rozjasňovacieho súboru alebo súboru symbolikácie:

  1. Otvorte službu Play Console.
  2. Vyberte aplikáciu.
  3. V ponuke vľavo vyberte Vydanie > Zariadenia a verzie> Prieskumník balíkov aplikácie.
  4. Pomocou výberu v pravom hornom rohu vyberte príslušný artefakt.
  5. Vyberte kartu Stiahnutia a prejdite nadol na sekciu Diela.
  6. Kliknite na šípku nahrania mapovacieho súboru alebo súboru so symbolmi ladenia a nahrajte rozjasňovací súbor alebo súbor symbolikácie pre príslušnú verziu vašej 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é trasovania zásobníkov zrútenia

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

  1. Otvorte službu Play Console.
  2. Vyberte aplikáciu.
  3. V ponuke vľavo vyberte Kvalita > Android Vitals > Zrútenia a nereagovania aplikácie.
  4. Vyberte požadované zrútenie.
  5. V sekcii Trasovania 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é zrútenia a nereagovania danej verzie aplikácie. Zrútenia 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?

Služba Play Console používa na symbolikáciu trasovaní zásobníka nástroj ndk-stack pre natívne aplikácie a nástroj ReTrace pre zrútenia aplikácií vytvorených v jazyku Java. Ak sa rozhodnete nezdieľať svoje rozjasňovacie súbory, môžete skopírovať rozjasnené zásobníky zrútení zo služby Play Console a na ich symbolikáciu použiť vhodný nástroj offline. Tento postup je však nutné vykonať manuálne pre každý zásobník zrútenia, je teda pomalý a časovo náročný. Ak poskytnete rozjasňovacie súbory, služba Play Console to vyrieši za vás.

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

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

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

Je to spôsobené nahraním nekompletného rozjasňovacieho súboru alebo súboru symbolikácie. 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, ale závažnejších zrútení a nereagovaní aplikácie?

Bez rozjasňovacích súborov sa rovnaké zrútenie 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 zrútenia zoskupiť dohromady, čo vám poskytne lepšiu perspektívu na najzávažnejšie zrútenia a nereagovania aplikácie.

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

Ak zabudnete nahrať súbor pre novú verziu svojej aplikácie, zrútenia 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 so symbolmi ladenia pre určitú verziu aplikácie budú rozjasnené iba zrútenia a nereagovania aplikácie, ktoré sa vyskytnú následne. Zariadenia používateľov nahlasujú zrútenia 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, zrútenia a nereagovania aplikácie budú opäť znejasnené. Postup nahrania opravenej verzie:

  1. Otvorte službu Play Console.
  2. Vyberte aplikáciu.
  3. V ponuke vľavo vyberte Vydanie > Zariadenia a verzie> Prieskumník balíkov aplikácie.
  4. Pomocou výberu v pravom hornom rohu vyberte príslušný artefakt.
  5. Vyberte kartu Stiahnutia a prejdite nadol na sekciu Diela.
  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 zrútenia a nereagovania aplikácie, ktoré sa vyskytnú následne. Zariadenia používateľov nahlasujú zrútenia 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.

Pomohlo vám to?
Ako ju môžeme zlepšiť?

Potrebujete ďalšiu pomoc?

Ak chcete problém rýchlo vyriešiť, prihláste sa a získajte ďalšie možnosti podpory