Nedbrud og ANR-fejl i Android skaber staksporing. Staksporing er et øjebliksbillede af den sekvens af indlejrede funktioner, der blev kaldt i dit program frem til det tidspunkt, hvor fejlen opstod. Disse øjebliksbilleder kan hjælpe dig med at identificere og løse problemer i kilden.
Hvis din app eller dit spil er udviklet ved hjælp af Java, og du bruger ProGuard til at optimere og sløre din app, kan du uploade en ProGuard-tilknytningsfil for hver version af din app i Play Console. Hvis din app eller dit spil er udviklet ved hjælp af indlejret kode, f.eks. C++, kan du uploade en symbolfil til fejlfinding for hver version af din app i Play Console. Det gør det nemmere at analysere og løse dine nedbrud og ANR-fejl.
Vigtigt! Det er kun ReTrace-kompatible tilknytningsfiler, der understøttes til fjernelse af sløring for apps, der er kompileret i Java. Det er det samme format, der bruges af ProGuard og R8.
Trin 1: Generér en fil til fjernelse af sløring eller oversættelse til symboler
Hvis du i forbindelse med en bestemt version af din app vil fjerne sløring af appens nedbrud og ANR-fejl eller oversætte nedbruddene og ANR-fejlene til symboler, skal du først generere de nødvendige filer for den pågældende version af din app. Du skal generere og uploade en fil for hver ny version af din app, før fjernelsen af sløring eller oversættelsen til symboler kan fungere.
Java: Generér en ProGuard-tilknytningsfilHvis du vil fjerne sløring i Java-staksporing, skal du først generere en ProGuard-tilknytningsfil. Gå til Google Developers-websitet for at få flere oplysninger.
Android Gradle-plugin version 4.1 og nyere
Hvis dit projekt anvender en Android App Bundle, kan du automatisk inkludere symbolfilen til fejlfinding i den. Hvis du vil inkludere denne fil, skal du føje følgende til din apps build.gradle
-fil:
android.defaultConfig.ndk.debugSymbolLevel = 'FULL'
Bemærk! Symbolfilen til fejlfinding må højst fylde 800 MB. Hvis dine fejlretningssymboler er for store, skal du bruge SYMBOL_TABLE
i stedet for FULL
for at reducere filstørrelsen.
Hvis dit projekt anvender en APK-fil, skal du bruge buildindstillingen build.gradle ovenfor til at generere filen med fejlfindingssymboler separat. Upload filen med fejlfindingssymboler manuelt til Google Play Console som beskrevet nedenfor i Trin 2: Upload en fil til fjernelse af sløring eller oversættelse til symboler. Som en del af buildprocessen udsender Android Gradle-pluginnet denne fil på følgende projektplacering:
app/build/outputs/native-debug-symbols/variant-name/native-debug-symbols.zip
Android Gradle-pluginversion 4.0 og ældre (og andre buildsystemer)
Som en del af buildprocessen for en app-pakke eller APK gemmer Android Gradle-pluginnet en kopi af de uslørede biblioteker i en projektmappe. Denne mappe følger en struktur, der ligner denne:
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
Bemærk! Hvis du bruger et andet buildsystem, kan du ændre det, så det gemmer uslørede biblioteker i en mappe med den påkrævede struktur ovenfor.
- Komprimer indholdet i denne mappe til en zip-fil:
$ cd app/build/intermediates/cmake/universal/release/obj
$ zip -r symbols.zip .
- Upload filen symbols.zip manuelt til Play Console som beskrevet nedenfor i Trin 2: Upload en fil til fjernelse af sløring eller oversættelse til symboler.
Symbolfilen til fejlfinding må højst fylde 800 MB. Hvis din fil er for stor, skyldes det sandsynligvis, at dine .so-filer indeholder en symboltabel (funktionsnavne) og DWARF-fejlretningsoplysninger (filnavne og kodelinjer). De er ikke nødvendige for at oversætte din kode til symboler og kan fjernes ved at køre denne kommando:
$OBJCOPY --strip-debug lib.so lib.so.sym
Bemærk! $OBJCOPY
peger på den specifikke version af den ABI, du vil fjerne sløringen af, f.eks.: ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-objcopy
Trin 2: Upload en fil til fjernelse af sløring eller oversættelse til symboler
Hvis du i forbindelse med en bestemt version af din app vil fjerne sløring af appens nedbrud og ANR-fejl eller oversætte nedbruddene og ANR-fejlene til symboler, skal du først uploade filerne til fjernelse af sløring eller oversættelse til symboler.
Vigtigt! Dette trin er kun påkrævet for udviklere, der bruger APK-filer. Hvis du bruger en app-pakke og Android Gradle-plugin version 4.1 eller nyere, behøver du ikke at foretage dig noget. Vi henter automatisk filen til fjernelse af sløring fra pakken, og du kan gå til Trin 3: Se staksporing for nedbrud med fjernet sløring. Du kan få flere oplysninger om app-pakker på websitet for Android-udviklere.
Upload filer ved hjælp af Play ConsoleSådan uploader du en fil til fjernelse af sløring eller oversættelse til symboler:
- Åbn Play Console.
- Vælg en app.
- I menuen til venstre skal du vælge
Test og udgiv
> App Bundle Explorer. - Vælg det relevante artefakt ved hjælp af vælgeren øverst til højre.
- Vælg fanen Downloads, og rul ned til sektionen "Aktiver".
- Klik på uploadpilen for tilknytningsfilen eller fejlretningssymbolerne for at uploade filen til fjernelse af sløring eller oversættelse til symboler for den pågældende version af din app.
Hvis du vil uploade filer ved hjælp af Google Play Developer API, skal du gå til Google Developers-websitet.
Trin 3: Se staksporing for nedbrud med fjernet sløring
Når du har uploadet en ProGuard-tilknytningsfil eller en fil med fejlretningssymboler for en version af din app, bliver sløringen af efterfølgende nedbrud og ANR-fejl fjernet. På siden Nedbrud og ANR i din app kan du gennemgå staksporing for individuelle nedbrud og ANR-fejl med fjernet sløring.
- Åbn Play Console.
- Vælg en app.
- I menuen til venstre skal du vælge Mål og optimer > Android-statistikdata > Nedbrud og ANR-fejl.
- Vælg et nedbrud.
- I sektionen "Stakspor" vises dine stakspor uden sløring eller uden at være oversat til symboler.
Vigtigt! Når du har uploadet en tilknytningsfil for en version af din app, bliver sløringen kun fjernet for efterfølgende nedbrud og ANR-fejl i den pågældende version af appen. Sløringen fjernes ikke for nedbrud og ANR-fejl, der sker i en version af din app, før du har uploadet tilknytningsfilen for den pågældende version.
Ofte stillede spørgsmål
Jeg vil ikke bruge funktionen til fjernelse af sløring eller oversættelse til symboler i Play Console. Kan jeg fjerne sløring eller oversætte til symboler offline?Play Console bruger ndk-stack til at oversætte staksporing til symboler i forbindelse med indbyggede apps og ReTrace i forbindelse med Java-nedbrud. Hvis du vælger ikke at dele dine filer til fjernelse af sløring, kan du kopiere de slørede nedbrudsstakke fra Play Console og bruge et egnet værktøj til at oversætte dem til symboler offline. Denne proces er dog langsom og tidskrævende, fordi den skal udføres manuelt for hver nedbrudsstak. Når du deler dine filer til fjernelse af sløring, håndterer Play Console opgaven for dig.
Når du har uploadet en ProGuard-tilknytningsfil eller en symbolfil til fejlfinding for en version af din app, bliver sløringen kun fjernet for efterfølgende nedbrud og ANR-fejl. Du kan først se nedbrud og ANR-fejl uden sløring i Play Console, når brugernes enheder rapporterer nye nedbrud og ANR-fejl.
Det skyldes upload af en ufuldstændig fil til fjernelse af sløring eller oversættelse til symboler. Sørg for at inkludere filerne til oversættelse til symboler for hele din app – især hvis du bruger en buildproces, der er kompleks eller består af flere trin. En af de mest almindelige årsager til delvis fjernelse af sløring er, at du bruger et tredjepartsbibliotek. Hvis det er tilfældet, kan du muligvis hente filerne til fjernelse af sløring fra biblioteksudbyderen.
Uden filer til fjernelse af sløring bliver nedbrud eller ANR-fejl, der ellers er ens, vist separat, hvis de sker på henholdsvis en 32-bit- og en 64-bit-enhed eller henholdsvis en ARM- og en Intel-enhed. Ved at levere filer til fjernelse af sløring kan vi samle disse nedbrud, så du får et bedre overblik over de mest alvorlige nedbrud og ANR-fejl for din app.
Hvis du glemmer at uploade filen i forbindelse med en ny version af din app, bliver nedbrud og ANR-fejl igen sløret. Følg vejledningen ovenfor for at uploade filen nu. Når du har uploadet en ProGuard-tilknytningsfil eller en symbolfil til fejlfinding for en version af din app, bliver sløringen kun fjernet for efterfølgende nedbrud og ANR-fejl. Du kan først se nedbrud og ANR-fejl uden sløring i Play Console, når brugernes enheder rapporterer nye nedbrud og ANR-fejl.
Hvis du vil sikre, at du ikke glemmer at uploade filen, kan du overveje at ændre din buildproces, så du bruger app-pakker med Android Gradle-plugin version 4.1 eller nyere. Hvis du gør det, kan du automatisk inkludere filen med fejlretningssymboler i app-pakken ved at følge vejledningen på websitet for Android-udviklere.
Hvis du uploader den forkerte fil i forbindelse med en ny version af din app, bliver nedbrud og ANR-fejl igen sløret. Sådan uploader du en rettet version:
- Åbn Play Console.
- Vælg en app.
- I menuen til venstre skal du vælge
Test og udgiv
> App Bundle Explorer - Vælg det relevante artefakt ved hjælp af vælgeren øverst til højre.
- Vælg fanen Downloads, og rul ned til sektionen "Aktiver".
- Klik på sletteikonet ud for den forkerte fil til fjernelse af sløring eller oversættelse til symboler.
- Når den forkerte version er slettet, skal du klikke på uploadikonet og uploade den korrekte fil for den pågældende version af din app.
Når du har uploadet den korrekte ProGuard-tilknytningsfil eller fil med fejlretningssymboler for en version af din app, bliver sløringen kun fjernet for efterfølgende nedbrud og ANR-fejl. Du kan først se nedbrud og ANR-fejl uden sløring i Play Console, når brugernes enheder rapporterer nye nedbrud og ANR-fejl.
Tip! Hvis du vil sikre, at du ikke uploader en forkert version af filen, kan du overveje at ændre din buildproces, så du bruger app-pakker med Android Gradle-plugin version 4.1 eller nyere. Hvis du gør det, kan du automatisk inkludere filen med fejlretningssymboler i app-pakken ved at følge vejledningen på websitet for Android-udviklere.
Gå til websitet for Android-udviklere for at komme i gang.
Ja.
I nogle tilfælde kan systemet støde på en ANR-fejl, men kan ikke indsamle staksporingen. I dette tilfælde vises ANR-fejlen, så du får et mere dækkende billede af din apps stabilitet, men selve staksporingen kan ikke vises. ANR-fejl uden staksporing grupperes efter type og aktivitet. Gennemgang og rettelse af lignende ANR-fejl kan derfor hjælpe med at reducere antallet af ANR-fejl uden staksporing.