Fjern sløring af nedbrud i staksporing, eller oversæt til symboler

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-tilknytningsfil

Hvis 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.

Indbygget: Generér en fil med fejlretningssymboler

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.

  1. Komprimer indholdet i denne mappe til en zip-fil:
    • $ cd app/build/intermediates/cmake/universal/release/obj
    • $ zip -r symbols.zip .
  2. 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 Console

Sådan uploader du en fil til fjernelse af sløring eller oversættelse til symboler:

  1. Åbn Play Console.
  2. Vælg en app.
  3. I menuen til venstre skal du vælge

    Test og udgiv

    > App Bundle Explorer.
  4. Vælg det relevante artefakt ved hjælp af vælgeren øverst til højre.
  5. Vælg fanen Downloads, og rul ned til sektionen "Aktiver".
  6. 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.
Upload filer ved hjælp af Google Play Developer API

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.

  1. Åbn Play Console.
  2. Vælg en app.
  3. I menuen til venstre skal du vælge Mål og optimer > Android-statistikdata > Nedbrud og ANR-fejl.
  4. Vælg et nedbrud.
  5. 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.

Hvorfor er mine nedbrud og ANR-fejl stadig slørede, når jeg allerede har uploadet filen til fjernelse af sløring eller oversættelse til symboler?

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.

Hvorfor er sløringen af mine nedbrud og ANR-fejl kun delvist fjernet, efter jeg har uploadet filen til fjernelse af sløring eller oversættelse til symboler?

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.

Hvorfor får jeg tilsyneladende færre, men mere alvorlige nedbrud og ANR-fejl, efter jeg har uploadet filen til fjernelse af sløring eller oversættelse til symboler?

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.

Hvad sker der, hvis jeg glemmer at uploade filen?

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.

Hvad sker der, hvis jeg uploader den forkerte fil?

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:

  1. Åbn Play Console.
  2. Vælg en app.
  3. I menuen til venstre skal du vælge

    Test og udgiv

    > App Bundle Explorer
  4. Vælg det relevante artefakt ved hjælp af vælgeren øverst til højre.
  5. Vælg fanen Downloads, og rul ned til sektionen "Aktiver".
  6. Klik på sletteikonet ud for den forkerte fil til fjernelse af sløring eller oversættelse til symboler.
  7. 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.

Jeg bruger i øjeblikket APK-filer. Hvordan skifter jeg til at bruge app-pakker?

Gå til websitet for Android-udviklere for at komme i gang.

Min app indeholder både indbygget kode og Java-kode. Kan jeg både uploade en fil til oversættelse til symboler i forbindelse med indbygget kode og en fil til fjernelse af sløring i forbindelse med Java-kode?

Ja.

Hvorfor vises der ikke en staksporing for nogle ANR-fejl?

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.

Var disse oplysninger nyttige?

Hvordan kan vi forbedre siden?

Har du brug for mere hjælp?

Prøv følgende næste trin:

Søgning
Ryd søgning
Luk søgning
Hovedmenu
4734129607048667063
true
Søg i Hjælp
true
true
true
true
true
92637
false
false