Avārijas steka trasējumu pieslēpšanas atcelšana vai simbolizācija

Avārijas un lietojumprogrammas nereaģēšanas (ANR) gadījumi operētājsistēmā Android veido steka trasējumu — tas ir momentuzņēmums ar programmā ligzdoto funkciju izsaukumu secību līdz avārijas brīdim. Šie momentuzņēmumi var palīdzēt noteikt un novērst problēmas to izcelsmes vietā.

Ja jūsu lietotne vai spēle tika izstrādāta, izmantojot valodu Java, un lietotnes optimizēšanai un pieslēpšanai izmantojat programmatūru ProGuard, rīkā Play Console katrai lietotnes versijai varat augšupielādēt ProGuard kartēšanas failu. Ja lietotne vai spēle tika izstrādāta, izmantojot iebūvēto kodu (piemēram, C++), rīkā Play Console katrai lietotnes versijai varat augšupielādēt atkļūdošanas simbolu failu. Tādējādi ir ērtāk analizēt un novērst avārijas un ANR gadījumus.

Svarīgi! Java valodā kompilēto lietotņu pieslēpšanas atcelšanai tiek atbalstīti tikai ar rīku ReTrace saderīgi kartēšanas faili. Šis formāts tiek izmantots arī programmatūrās ProGuard un R8.

1. darbība. Pieslēpšanas atcelšanas vai simbolizācijas faila ģenerēšana

Lai kādai jūsu lietotnes versijai varētu atcelt avāriju un ANR pieslēpšanu vai veikt simbolizāciju, vispirms attiecīgajai lietotnes versijai šie faili ir jāģenerē. Lai pieslēpšanas atcelšanu vai simbolizāciju varētu veikt, šāds fails ir jāaugšupielādē katrai jūsu lietotnei jaunajai versijai.

Java: ProGuard kartēšanas faila ģenerēšana

Lai atceltu Java steka trasējumu pieslēpšanu, vispirms ir jāģenerē ProGuard kartēšanas fails. Lai uzzinātu, kā to paveikt, apmeklējiet Google Developers vietni.

Iebūvētais kods: atkļūdošanas simbolu faila ģenerēšana

Android Gradle spraudņa versija 4.1 vai jaunāka versija

Ja jūsu projektā tiek izveidots Android App Bundle komplekts, tajā var automātiski iekļaut atkļūdošanas simbolu failu. Lai iekļautu šo failu, savas lietotnes failam build.gradle pievienojiet šādu elementu:

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

Piezīme. Atkļūdošanas simbolu faila lielums nedrīkst pārsniegt 800 MB. Ja atkļūdošanas simbolu fails ir pārāk liels, tā samazināšanai izmantojiet elementu SYMBOL_TABLE, nevis FULL.

Ja jūsu projektā tiek izveidots fails APK, izmantojiet iepriekš norādīto faila build.gradle būvējuma iestatījumu, lai atkļūdošanas simbolu failu ģenerētu atsevišķi. Manuāli augšupielādējiet atkļūdošanas simbolu failu rīkā Google Play Console, kā aprakstīts nākamajā sadaļā 2. darbība. Pieslēpšanas atcelšanas vai simbolizācijas faila augšupielāde. Būvēšanas procesā Android Gradle spraudnis šo izvades failu izveido šādā projekta atrašanās vietā:

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

Android Gradle spraudņa versija 4.0 vai vecāka versija (un citas būvējumu sistēmas)

Lietotnes komplekta vai APK faila būvēšanas procesa laikā Android Gradle spraudnis projekta katalogā saglabā bibliotēkas kopijas, kurās ir ietverta atkļūdošanas informācija. Katalogā tiek veidota aptuveni šāda struktūra:

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

Piezīme. Ja izmantojat citu būvējuma sistēmu, jūs to varat to mainīt, lai glabātu bibliotēkas ar atkļūdošanas informāciju katalogā, kurā ir izveidota iepriekš norādītā struktūra.

  1. Saglabājiet ZIP failā šī kataloga saturu:
    • $ cd app/build/intermediates/cmake/universal/release/obj
    • $ zip -r symbols.zip .
  2. Manuāli augšupielādējiet failu symbols.zip rīkā Play Console, kā aprakstīts nākamajā sadaļā 2. darbība. Pieslēpšanas atcelšanas vai simbolizācijas faila augšupielāde.

Atkļūdošanas simbolu faila lielums nedrīkst pārsniegt 800 MB. Ja fails ir pārāk liels, iespējams, tāds tas ir tāpēc, ka jūsu .so failos ir ietverta simbolu tabula (funkciju nosaukumi) un DWARF atkļūdošanas informācija (failu nosaukumi un koda rindiņas). Koda simbolizācijai šie dati nav vajadzīgi un tos var noņemt, izpildot šādu komandu:

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

Piezīme. Elements $OBJCOPY norāda vienkāršojamo ABI versiju, piemēram:ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-objcopy

2. darbība. Pieslēpšanas atcelšanas vai simbolizācijas faila augšupielāde

Lai kādai jūsu lietotnes versijai varētu atcelt avāriju un ANR pieslēpšanu vai veikt to simbolizāciju, katrai lietotnes versijai ir jāaugšupielādē pieslēpšanas atcelšanas vai simbolizācijas faili.

Svarīgi! Šī darbība ir obligāta tikai tiem izstrādātājiem, kuri izmanto APK failus. Ja izmantojat lietotnes komplektu un Android Gradle spraudņa versiju 4.1 vai jaunāku versiju, jums nav jāveic nekādas darbības. Komplektā iekļauto pieslēpšanas atcelšanas failu mēs iegūsim automātiski. Pārejiet uz sadaļu 3. darbība. Tādu avāriju steka trasējumu skatīšana, kuriem ir atcelta pieslēpšana. Plašāka informācija par lietotņu komplektiem ir pieejama Android izstrādātāju vietnē.

Failu augšupielāde, izmantojot Play Console

Lai augšupielādētu pieslēpšanas atcelšanas vai simbolizācijas failu, veiciet tālāk norādītās darbības.

  1. Atveriet rīku Play Console.
  2. Atlasiet lietotni.
  3. Kreisās puses izvēlnē atlasiet Laidiens > Lietotnes komplekta pārlūks.
  4. Izmantojot atlasītāju augšējā labajā stūrī, izvēlieties atbilstošo artefaktu.
  5. Atlasiet cilni Lejupielādes un ritiniet lejup līdz sadaļai “Līdzekļi”.
  6. Noklikšķiniet uz augšupielādes bultiņas, lai iegūtu kartēšanas failu vai atkļūdošanas simbolus — atkarībā no tā, vai attiecīgajai lietotnes versijai augšupielādēsiet pieslēpšanas atcelšanas vai simbolizācijas failu.
Failu augšupielāde, izmantojot Google Play izstrādātāja API

Lai augšupielādētu failus, izmantojot Google Play izstrādātāja API, atveriet Google Developers vietni.

3. darbība. Tādu avāriju steka trasējumu skatīšana, kuriem ir atcelta pieslēpšana

Kad lietotnes versijai būsiet augšupielādējis ProGuard kartēšanas failu vai atkļūdošanas simbolu failu, turpmākās avārijas un ANR gadījumi vairs netiks pieslēpti. Lietotnes lapā Avārijas un ANR varat pārskatīt atsevišķu avāriju un ANR steka trasējumus, kuriem ir atcelta pieslēpšana.

  1. Atveriet rīku Play Console.
  2. Atlasiet lietotni.
  3. Kreisās puses izvēlnē atlasiet Kvalitāte > Android vitals > Avārijas un ANR.
  4. Atlasiet avāriju.
  5. Sadaļā “Steka trasēšana” būs redzami steka trasējumi, kuriem ir atcelta pieslēpšana vai veikta simbolizācija.

Svarīgi! Kad būsiet augšupielādējis kartēšanas failu kādai savas lietotnes versijai, pieslēpšana tiks atcelta tikai turpmākajām avārijām un ANR attiecīgajā lietotnes versijā. Pieslēpšana nav atcelta tām avārijām un ANR gadījumiem, kas konkrētajā lietotnes versijā notiek pirms tās kartēšanas faila augšupielādes.

Bieži uzdotie jautājumi

Es nevēlos izmantot rīku Play Console pieslēpšanas atcelšanai/simbolizācijai. Vai varu to darīt bezsaistē?

Iebūvēto lietotņu steka trasējumu simbolizācijai rīkā Play Console tiek izmantots ndk-stack, bet Java avārijām — ReTrace. Ja nevēlaties kopīgot pieslēpšanas atcelšanas failus, varat kopēt pieslēptos avārijas stekus no rīka Play Console un to simbolizācijai izmantot atbilstošu bezsaistes rīku. Tomēr šīs darbības katram avārijas stekam ir jāatkārto manuāli, tāpēc tas ir lēns un laikietilpīgs process. Ja iesniegsiet pieslēpšanas atcelšanas failus, Play Console šo darbu paveiks jūsu vietā.

Esmu augšupielādējis pieslēpšanas atcelšanas vai simbolizācijas failu. Kāpēc visas avārijas un ANR kļūdas joprojām ir pieslēptas?

Pieslēpšanas atcelšana tiek veikta tikai tām avārijām un ANR kļūdām, kas rodas pēc tam, kad ir augšupielādēts attiecīgās lietotnes versijas ProGuard kartēšanas fails vai atkļūdošanas simbolu fails. Avārijas un ANR kļūdas, kurām ir veikta pieslēpšanas atcelšana, rīkā Play Console būs redzamas tikai pēc kāda laika, kad no lietotāju ierīcēm būs saņemta informācija par jaunām avārijām un ANR kļūdām.

Kāpēc pēc pieslēpšanas atcelšanas/simbolizācijas faila augšupielādes tiek veikta tikai daļēja avāriju un ANR gadījumu pieslēpšanas atcelšana?

Tā notiek, ja tiek augšupielādēts nepilnīgs pieslēpšanas atcelšanas/simbolizācijas fails. Raugieties, lai tiktu iekļauts visai lietotnei atbilstošs simbolizācijas fails, it īpaši tad, ja izmantojat sarežģītu vai daudzpakāpju būvēšanas procesu. Viens no visizplatītākajiem cēloņiem daļējai pieslēpšanas atcelšanai ir trešās puses bibliotēkas izmantošana. Tādā gadījumā pieslēpšanas atcelšanas failu, iespējams, varat saņemt no bibliotēkas nodrošinātāja.

Kāpēc pēc pieslēpšanas atcelšanas/simbolizācijas faila augšupielādes avāriju un ANR gadījumu skaits samazinās, bet to ietekme palielinās?

Ja pieslēpšanas atcelšanas faili netiek iesniegti, viena un tā pati avārija vai ANR gadījums 32 bitu un 64 bitu vai ARM un Intel ierīcēs tiks rādīts atsevišķi. Ja pieslēpšanas atcelšanas faili ir iesniegti, mēs varam šīs avārijas apkopot, lai sniegtu labāku ieskatu par nozīmīgākajām avārijām un ANR gadījumiem jūsu lietotnē.

Kas notiek, ja esmu aizmirsis augšupielādēt šo failu?

Ja aizmirstat augšupielādēt jaunās lietotnes versijas failu, avārijām un ANR tiks atsākta pieslēpšana. Izpildiet iepriekš sniegtos norādījumus, lai augšupielādētu to tagad. Pieslēpšanas atcelšana tiek veikta tikai tām avārijām un ANR kļūdām, kas rodas pēc tam, kad ir augšupielādēts attiecīgās lietotnes versijas ProGuard kartēšanas fails vai atkļūdošanas simbolu fails. Avārijas un ANR kļūdas, kurām ir veikta pieslēpšanas atcelšana, rīkā Play Console būs redzamas tikai pēc kāda laika, kad no lietotāju ierīcēm būs saņemta informācija par jaunām avārijām un ANR kļūdām.

Lai novērstu risku, ka tiek aizmirsts augšupielādēt failu, ieteicams mainīt būvēšanas procesu un izmantot lietotņu komplektus ar Android Gradle spraudņa versiju 4.1 vai jaunāku versiju. Šādā gadījumā varēsiet iestatīt automātisku atkļūdošanas simbolu faila iekļaušanu lietotnes komplektā. Lai to paveiktu, izpildiet Android izstrādātāju vietnē sniegtos norādījumus.

Kas notiek, ja esmu augšupielādējis nepareizo failu?

Ja lietotnes versijai augšupielādējat nepareizu failu, avārijām un ANR tiks atjaunota pieslēpšana. Lai augšupielādētu labotu versiju, veiciet tālāk norādītās darbības.

  1. Atveriet rīku Play Console.
  2. Atlasiet lietotni.
  3. Kreisās puses izvēlnē atlasiet Laidiens > Lietotnes komplekta pārlūks.
  4. Izmantojot atlasītāju augšējā labajā stūrī, izvēlieties atbilstošo artefaktu.
  5. Atlasiet cilni Lejupielādes un ritiniet lejup līdz sadaļai “Līdzekļi”.
  6. Noklikšķiniet uz dzēšanas ikonas blakus nepareizajam pieslēpšanas atcelšanas vai simbolizācijas failam.
  7. Kad nepareizā versija ir izdzēsta, noklikšķiniet uz augšupielādes ikonas un augšupielādējiet pareizo lietotnes versijas failu.

Kad būsiet augšupielādējis pareizo ProGuard kartēšanas failu vai atkļūdošanas simbolu failu attiecīgajai lietotnes versijai, pieslēpšanas atcelšana tiks veikta tikai tām avārijām un ANR kļūdām, kuras radīsies pēc pareizā faila augšupielādes. Avārijas un ANR kļūdas, kurām ir veikta pieslēpšanas atcelšana, rīkā Play Console būs redzamas tikai pēc kāda laika, kad no lietotāju ierīcēm būs saņemta informācija par jaunām avārijām un ANR kļūdām.

Padoms. Lai novērstu risku, ka tiek augšupielādēta nepareiza faila versija, ieteicams mainīt būvēšanas procesu un izmantot lietotņu komplektus ar Android Gradle spraudņa versiju 4.1 vai jaunāku versiju. Šādā gadījumā varēsiet iestatīt automātisku atkļūdošanas simbolu faila iekļaušanu lietotnes komplektā. Lai to paveiktu, izpildiet Android izstrādātāju vietnē sniegtos norādījumus.

Es šobrīd izmantoju APK failus. Kā varu sākt lietotņu paku lietošanu?

Lai sāktu darbu, apmeklējiet Android izstrādātāju vietni.

Manā lietotnē ir gan iebūvētais, gan Java kods. Vai varu augšupielādēt gan iebūvētā koda simbolizācijas failu, gan Java pieslēpšanas atcelšanas failu?

Jā.

Kāpēc dažām ANR kļūdām netiek rādīts steka trasējums?

Laiku pa laikam sistēma konstatē ANR kļūdu, taču nevar iegūt steka trasējumu. Šādā gadījumā tiek rādīta ANR kļūda, lai sniegtu pilnīgāku ieskatu par lietotnes stabilitāti, taču pašu steka trasējumu nevar parādīt. ANR kļūdas bez steka trasējumiem tiek grupētas pēc veida un darbības, tādējādi līdzīgu ANR kļūdu pārskatīšana un labošana var palīdzēt samazināt tādu kļūdu skaitu, kurām nav steka trasējumu.

Vai tas bija noderīgs?

Kā varam to uzlabot?

Vai nepieciešama papildu palīdzība?

Izmēģiniet norādītās nākamās darbības.

Meklēšana
Notīrīt meklēšanu
Aizvērt meklēšanas lodziņu
Galvenā izvēlne
10602948789041671632
true
Meklēšanas palīdzības centrs
true
true
true
true
true
92637
false
false