Kokkujooksmiste virnajälgede lihtsustamine või loetavaks muutmine

Androidi kokkujooksmised ja ANR-id loovad virnajälje ehk programmis vahetult enne kokkujooksmist kutsutud pesastatud funktsioonide järjestuse hetktõmmise. Need hetktõmmised aitavad teil lähtekoodis esinevaid probleeme tuvastada ja lahendada.

Kui teie rakendus või mäng loodi Java abil ning kasutate rakenduse optimeerimiseks ja hägustamiseks ProGuardi, võite rakenduses Play Console oleva rakenduse iga versiooni jaoks üles laadida ProGuardi vastendusfaili. Kui teie rakendus või mäng loodi omakoodiga (nt C++), võite oma rakenduse iga versiooni kohta Play Console'i üles laadida silumissümbolite faili. See muudab kokkujooksmiste ja ANR-ide analüüsimise ja parandamise lihtsamaks.

Tähtis. Javas kompileeritud rakenduste hägu eemaldamiseks toetatakse ainult ReTrace'i ga ühilduvaid vastendusfaile. See on sama vorming, mida kasutavad ProGuard ja R8.

1. toiming: looge lihtsustamisfail või loetavaks muutmise fail

Rakenduse konkreetse versiooni kokkujooksmiste ja ANR-ide hägu eemaldamiseks või loetavaks muutmiseks tuleb teil esmalt luua rakenduse sama versiooni jaoks nõutavad failid. Teil tuleb luua ja üles laadida fail rakenduse iga uue versiooni jaoks, et hägu eemaldamine või loetavaks muutmine töötaks.

Java: looge ProGuardi vastendusfail

Java virnajälgede hägu eemaldamiseks tuleb esmalt luua ProGuardi vastendusfail. Vaadake teavet Google Developersi saidilt.

Omakood: looge silumissümbolite fail

Android Gradle'i pistikprogrammi versioon 4.1 või uuem

Kui teie projekt loob Android App Bundle'i, saab silumissümbolite faili sellele automaatselt kaasata. Faili kaasamiseks lisage rakenduse faili build.gradle järgmine kood:

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

Märkus. Silumissümbolite faili limiit on 800 MB. Kui teie silumissümbolite jalajälg on liiga suur, kasutage faili mahu vähendamiseks koodi FULL asemel koodi SYMBOL_TABLE.

Kui teie projekt loob APK, kasutage silumissümbolite faili eraldi loomiseks failis build.gradle ülalolevat järguseadet. Laadige silumissümbolite fail käsitsi Google Play Console'i üles, nagu on kirjeldatud allpool jaotises 2. toiming: laadige üles lihtsustamisfail või loetavaks muutmise fail. Android Gradle'i pistikprogramm talletab loomisprotsessi raames selle faili järgmisesse projekti asukohta:

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

Android Gradle'i pistikprogrammi versioon 4.0 ja vanemad versioonid (ning muud järgusüsteemid)

Rakenduse kogumi või APK loomisprotsessi raames säilitab Android Gradle'i pistikprogramm kärpimata teekide koopia projekti kataloogis. Kataloogi struktuur sarnaneb järgmisega:

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

Märkus. Kui kasutate muud järgusüsteemi, võite seda muuta, et talletada kärpimata teegid ülalmärgitud nõutava struktuuriga kataloogis.

  1. Tihendage selle kataloogi sisu:
    • $ cd app/build/intermediates/cmake/universal/release/obj
    • $ zip -r symbols.zip .
  2. Laadige fail symbols.zip käsitsi Play Console'i üles, nagu on kirjeldatud allpool jaotises 2. toiming: laadige üles lihtsustamisfail või loetavaks muutmise fail.

Silmussümbolite faili limiit on 800 MB. Kui teie fail on liiga suur, on põhjus tõenäoliselt selles, et teie SO-failid sisaldavad nii sümbolitabelit (funktsiooninimed) kui ka DWARF-i silumisteavet (failinimed ja koodiread). Neid ei ole teie koodi loetavaks muutmiseks vaja ja nende eemaldamiseks võib käitada järgmist käsklust:

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

Märkus. $OBJCOPY viitab kärbitava ABI konkreetsele versioonile, näiteks: ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-objcopy

2. toiming: laadige üles lihtsustamisfail või loetavaks muutmise fail.

Rakenduse konkreetse versiooni kokkujooksmiste ja ANR-ide hägu eemaldamiseks või loetavaks muutmiseks tuleb teil üles laadida lihtsustamisfail või loetavaks muutmise fail rakenduse iga uue versiooni jaoks.

Tähtis. See toiming on nõutav ainult APK-sid kasutavate arendajate jaoks. Kui kasutate rakenduse kogumit ja Android Gradle'i pistikprogrammi versiooni 4.1 või uuemat versiooni, ei ole teil vaja midagi teha. Hangime lihtsustamisfaili kogumist automaatselt. Võite jätkata jaotisega 3. toiming: vaadake kokkujooksmiste virnajälgi, millelt on hägu eemaldatud. Vaadake lisateavet rakenduse kogumite kohta Android Developersi saidilt.

Failide üleslaadimine Play Console'i abil

Lihtsustamisfaili või loetavaks muutmise faili üleslaadimiseks tehke järgmist.

  1. Avage Play Console.
  2. Valige rakendus.
  3. Tehke vasakpoolses menüüs valikud Versioon > App Bundle Explorer.
  4. Valige paremas ülanurgas oleva valija abil asjakohane artefakt.
  5. Valige vahekaart Allalaadimised ja kerige alla jaotiseni „Varad“.
  6. Rakenduse versiooni lihtsustamisfaili või loetavaks muutmise faili üleslaadimiseks klõpsake asjakohase vastendusfaili või silumissümbolite faili kõrval üleslaadimisnoolel.
Failide üleslaadimine Google Play arendaja API-ga

Failide üleslaadimiseks Google Play arendaja API-ga minge teenuse Google Developers saidile.

3. toiming: vaadake kokkujooksmiste virnajälgi, millelt on hägu eemaldatud

Kui olete rakenduse konkreetse versiooni jaoks ProGuardi vastendusfaili või silumissümbolite faili üles laadinud, eemaldatakse hägu kokkujooksmistelt ja ANR-idelt, mis leiavad aset pärast üleslaadimist. Individuaalsete kokkujooksmiste ja ANR-ide hägustamata virnajälgi saate vaadata rakenduse lehel Kokkujooksmised ja ANR-id.

  1. Avage Play Console.
  2. Valige rakendus.
  3. Tehke vasakpoolses menüüs valikud Kvaliteet > Android Vitals > Kokkujooksmised ja ANR-id.
  4. Valige kokkujooksmine.
  5. Jaotises „Virnajäljed“ näete hägustamata ja loetavaks muudetud virnajälgi.

Tähtis. Pärast rakenduse versiooni jaoks vastendusfaili üleslaadimist eemaldatakse hägu ainult rakenduse selle versiooni tulevastelt kokkujooksmistelt ja ANR-idelt. Enne asjakohase vastendusfaili üleslaadimist toimunud rakenduse versiooni kokkujooksmistelt ja ANR-idelt ei eemaldata hägu.

Korduma kippuvad küsimused

Ma ei soovi kasutada Play Console'i lihtsustamisfaili / loetavaks muutmise faili. Kas saan seda teha võrguväliselt?

Play Console kasutab omarakenduste virnajälgede loetavaks muutmiseks tööriista ndk-stack ja Java kokkujooksmiste puhul tööriista ReTrace. Kui otsustate lihtsustamisfaili mitte jagada, võite hägustatud kokkujooksmiste virnad Play Console'ist kopeerida ja kasutada nende loetavaks muutmiseks sobivat võrguvälist tööriista. See toiming tuleb aga teha iga kokkujooksmiste virna puhul käsitsi, mistõttu on see pikaldane ja aeganõudev. Kui lisate lihtsustamisfailid, teeb Play Console seda teie eest.

Laadisin lihtsustamisfaili / loetavaks muutmise faili üles. Miks on mu kokkujooksmised ja ANR-id siiski hägustatud?

Kui olete rakenduse konkreetse versiooni jaoks ProGuardi vastendusfaili või silumissümbolite faili üles laadinud, eemaldatakse hägu ainult kokkujooksmistelt ja ANR-idelt, mis leiavad aset pärast üleslaadimist. Enne kui näete Play Console'is eemaldatud häguga kokkujooksmisi ja ANR-e, tuleb teil oodata, kuni kasutajate seadmed uutest kokkujooksmistest ja ANR-idest teada annavad.

Miks on pärast lihtsustamisfaili / loetavaks muutmise faili üleslaadimist minu kokkujooksmiste ja ANR-ide hägu ainult osaliselt eemaldatud?

Selle põhjuseks on pooliku lihtsustamisfaili / loetavaks muutmise faili üleslaadimine. Lisage kindlasti terve rakenduse loetavaks muutmise failid, eriti kui kasutate keerukat või mitmeetapilist loomisprotsessi. Osaliselt eemaldatud hägu üks sagedasemaid põhjuseid on kolmanda osapoole teegi kasutamine. Sel juhul saate võib-olla hankida lihtsustamisfaili teegi pakkujalt.

Miks näib, et pärast lihtsustamisfaili / loetavaks muutmise faili üleslaadimist on kokkujooksmisi ja ANR-e vähem, ent need on rängemad?

Ilma lihtsustamisfailideta esitatakse sama kokkujooksmine või ANR 32-bitises ja 64-bitises ning ARM-i ja Inteli seadmes eraldi. Kui esitate lihtsustamisfailid, rühmitame need kokkujooksmised, et teil oleks parem ülevaade rakenduse tugevaima mõjuga kokkujooksmistest ja ANR-idest.

Mis juhtub, kui unustan faili üles laadida?

Kui unustate rakenduse uue versiooni faili üles laadida, hägustatakse kokkujooksmised ja ANR-id uuesti. Faili üleslaadimiseks järgige ülalolevaid juhiseid. Kui olete rakenduse konkreetse versiooni jaoks ProGuardi vastendusfaili või silumissümbolite faili üles laadinud, eemaldatakse hägu ainult kokkujooksmistelt ja ANR-idelt, mis leiavad aset pärast üleslaadimist. Enne kui näete Play Console'is eemaldatud häguga kokkujooksmisi ja ANR-e, tuleb teil oodata, kuni kasutajate seadmed uutest kokkujooksmistest ja ANR-idest teada annavad.

Selleks et mitte unustada faili üles laadida, võite muuta loomisprotsessi nii, et see kasutaks Android Gradle'i pistikprogrammi versiooniga 4.1 või uuema versiooniga rakenduse kogumeid. Sel juhul saab silumissümbolite faili automaatselt rakenduse kogumisse kaasata, järgides Android Developersi saidil olevaid juhiseid.

Mis juhtub siis, kui laadin üles vale faili?

Kui laadite rakenduse versiooni jaoks üles vale faili, hägustatakse teie kokkujooksmised ja ANR-id uuesti. Õige versiooni üleslaadimiseks tehke järgmist.

  1. Avage Play Console.
  2. Valige rakendus.
  3. Tehke vasakpoolses menüüs valikud Versioon > App Bundle Explorer.
  4. Valige paremas ülanurgas oleva valija abil asjakohane artefakt.
  5. Valige vahekaart Allalaadimised ja kerige alla jaotiseni „Varad“.
  6. Klõpsake vale lihtsustamisfaili või loetavaks muutmise faili kõrval kustutamisikoonil.
  7. Pärast vale versiooni kustutamist klõpsake üleslaadimisikoonil ja laadige rakenduse versiooni jaoks üles õige fail.

Kui olete rakenduse konkreetse versiooni jaoks õige ProGuardi vastendusfaili või silumissümbolite faili üles laadinud, eemaldatakse hägu ainult kokkujooksmistelt ja ANR-idelt, mis leiavad aset pärast üleslaadimist. Enne kui näete Play Console'is eemaldatud häguga kokkujooksmisi ja ANR-e, tuleb teil oodata, kuni kasutajate seadmed uutest kokkujooksmistest ja ANR-idest teada annavad.

Nõuanne. Selleks et vältida faili vale versiooni üleslaadimist, võite oma loomisprotsessi muuta nii, et see kasutaks Android Gradle'i pistikprogrammi versiooniga 4.1 või uuemate versioonidega rakenduse kogumeid. Sel juhul saab silumissümbolite faili automaatselt rakenduse kogumisse kaasata, järgides Android Developersi saidil olevaid juhiseid.

Kasutan praegu APK-sid. Kuidas minna üle rakenduse kogumitele?

Alustamiseks külastage Android Developersi saiti.

Mu rakendus sisaldab nii omakoodi kui ka Java koodi. Kas võin üles laadida nii omakoodi loetavaks muutmise faili kui ka Java lihtsustamisfaili?

Jah.

Miks ei näita mõned ANR-id virna jälge?

Vahel esineb süsteemis ANR, kuid virna jälge ei õnnestu koguda. Sellisel juhul kuvatakse ANR, et teile rakenduse stabiilsusest põhjalikum ülevaade anda, kuid virna jälge ei saa kuvada. Ilma virnajälgedeta ANR-id grupeeritakse tüübi ja tegevuse põhjal, seega võib sarnaste ANR-ide ülevaatamine ja parandamine aidata vähendada ilma virnajälgedeta ANR-ide arvu.

Kas see oli ab?

Kuidas saame seda täiustada?
Otsing
Kustuta otsing
Sule otsing
Peamenüü
14714657696993291091
true
Abikeskusest otsimine
true
true
true
true
true
92637
false
false