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ēšanaLai 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.
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.
- Saglabājiet ZIP failā šī kataloga saturu:
$ cd app/build/intermediates/cmake/universal/release/obj
$ zip -r symbols.zip .
- 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 ConsoleLai augšupielādētu pieslēpšanas atcelšanas vai simbolizācijas failu, veiciet tālāk norādītās darbības.
- Atveriet rīku Play Console.
- Atlasiet lietotni.
- Kreisās puses izvēlnē atlasiet Testēšana un izlaišana > Lietotnes komplekta pārlūks.
- Izmantojot atlasītāju augšējā labajā stūrī, izvēlieties atbilstošo artefaktu.
- Atlasiet cilni Lejupielādes un ritiniet lejup līdz sadaļai “Līdzekļi”.
- 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.
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.
- Atveriet rīku Play Console.
- Atlasiet lietotni.
- Kreisās puses izvēlnē atlasiet Pārraudzība un uzlabošana > Android vitals > Avārijas un ANR.
- Atlasiet avāriju.
- 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ā.
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.
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.
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ē.
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.
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.
- Atveriet rīku Play Console.
- Atlasiet lietotni.
- Kreisās puses izvēlnē atlasiet Testēšana un izlaišana > Lietotnes komplekta pārlūks
- Izmantojot atlasītāju augšējā labajā stūrī, izvēlieties atbilstošo artefaktu.
- Atlasiet cilni Lejupielādes un ritiniet lejup līdz sadaļai “Līdzekļi”.
- Noklikšķiniet uz dzēšanas ikonas blakus nepareizajam pieslēpšanas atcelšanas vai simbolizācijas failam.
- 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.
Lai sāktu darbu, apmeklējiet Android izstrādātāju vietni.
Jā.
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.