Απεμπλοκή ή μετάφραση σε σύμβολα ιχνηλατήσεων στοίβας σφαλμάτων

Τα σφάλματα και τα ANR στο Android παράγουν μια ιχνηλάτηση στοίβας, η οποία αποτελεί στιγμιότυπο της ακολουθίας των ενσωματωμένων συναρτήσεων που είχε καλέσει το πρόγραμμά σας έως τη στιγμή που παρουσιάστηκε το σφάλμα. Αυτά τα στιγμιότυπα μπορούν να σας βοηθήσουν να προσδιορίσετε και να διορθώσετε τυχόν προβλήματα στην πηγή.

Εάν η ανάπτυξη της εφαρμογής ή του παιχνιδιού είχε γίνει με Java και χρησιμοποιείτε το ProGuard για τη βελτιστοποίηση και την εμπλοκή της εφαρμογής σας, μπορείτε να ανεβάσετε ένα αρχείο αντιστοίχισης ProGuard για κάθε έκδοση της εφαρμογής στο Play Console. Εάν η ανάπτυξη της εφαρμογής ή του παιχνιδιού είχε γίνει με εγγενή κώδικα, όπως C++, μπορείτε να ανεβάσετε ένα αρχείο συμβόλων εντοπισμού σφαλμάτων για κάθε έκδοση της εφαρμογής στο Play Console. Με αυτόν τον τρόπο διευκολύνεται η ανάλυση και η διόρθωση των σφαλμάτων και των ANR.

Σημαντικό: Για την απεμπλοκή εφαρμογών μεταγλωττισμένων σε Java υποστηρίζονται μόνο αρχεία αντιστοίχισης συμβατά με ReTrace. Αυτή είναι η ίδια μορφή που χρησιμοποιείται από το ProGuard ή το R8.

Βήμα 1: Δημιουργήστε ένα αρχείο απεμπλοκής ή μετάφρασης σε σύμβολα

Για την απεμπλοκή και τη μετάφραση σε σύμβολα των σφαλμάτων και των ANR της εφαρμογής σας για μια έκδοση της εφαρμογής, θα χρειαστεί πρώτα να δημιουργήσετε τα απαιτούμενα αρχεία για την ίδια έκδοση της εφαρμογής. Για να λειτουργήσει η απεμπλοκή ή η μετάφραση σε σύμβολα, θα πρέπει να δημιουργήσετε και να ανεβάσετε ένα αρχείο για κάθε νέα έκδοση της εφαρμογής.

Java: Δημιουργία αρχείου αντιστοίχισης ProGuard

Για την απεμπλοκή ιχνηλατήσεων στοιβών Java, θα πρέπει να δημιουργήσετε ένα αρχείο αντιστοίχισης ProGuard. Για να μάθετε τον τρόπο, μεταβείτε στον ιστότοπο Google Developers.

Εγγενής: Δημιουργήστε ένα αρχείο συμβόλων εντοπισμού σφαλμάτων

Προσθήκη Android Gradle έκδοση 4.1 και νεότερες εκδόσεις

Εάν το έργο δημιουργεί ένα Αρχείο Android App Bundle, μπορείτε αυτόματα να συμπεριλάβετε το αρχείο συμβόλων εντοπισμού σφαλμάτων σε αυτό. Για να συμπεριλάβετε αυτό το αρχείο, προσθέστε το παρακάτω στο αρχείο build.gradle της εφαρμογής:

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

Σημείωση: Το όριο για το αρχείο συμβόλων εντοπισμού σφαλμάτων είναι 800 MB. Εάν το αποτύπωμα των συμβόλων εντοπισμού σφαλμάτων είναι πολύ μεγάλο, χρησιμοποιήστε το στοιχείο SYMBOL_TABLE αντί του FULL, για να μειώσετε το μέγεθος του αρχείου.

Εάν το έργο δημιουργεί ένα APK, χρησιμοποιήστε την παραπάνω ρύθμιση build.gradle build, για να δημιουργήσετε ξεχωριστά το αρχείο συμβόλων εντοπισμού σφαλμάτων. Ανεβάστε το αρχείο συμβόλων εντοπισμού σφαλμάτων με μη αυτόματο τρόπο στο Google Play Console όπως περιγράφεται στην παρακάτω ενότητα Βήμα 2: Μεταφόρτωση αρχείου απεμπλοκής ή μετάφρασης σε σύμβολα. Στα πλαίσια της διαδικασίας κατασκευής, η προσθήκη Android Gradle εξάγει αυτό το αρχείο στην παρακάτω τοποθεσία έργου:

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

Προσθήκη Android Gradle έκδοση 4.0 και νεότερες εκδόσεις (και άλλα συστήματα κατασκευής)

Στο πλαίσιο της διαδικασίας κατασκευής για ένα πακέτο εφαρμογής ή APK, η προσθήκη Android Gradle διατηρεί ένα αντίγραφο των μη απλοποιημένων βιβλιοθηκών σε έναν κατάλογο έργου. Αυτός ο κατάλογος έχει δομή παρόμοια με την εξής:

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

Σημείωση: Εάν χρησιμοποιείτε διαφορετικό σύστημα κατασκευής, μπορείτε να το τροποποιήσετε, για να αποθηκεύσετε τις μη απλοποιημένες βιβλιοθήκες σε έναν κατάλογο με την παραπάνω απαιτούμενη δομή.

  1. Συμπιέστε τα περιεχόμενα αυτού του καταλόγου:
    • $ cd app/build/intermediates/cmake/universal/release/obj
    • $ zip -r symbols.zip .
  2. Ανεβάστε το αρχείο symbols.zip με μη αυτόματο τρόπο στο Play Console όπως περιγράφεται στην παρακάτω ενότητα Βήμα 2: Μεταφόρτωση αρχείου απεμπλοκής ή μετάφρασης σε σύμβολα.

Το όριο για το αρχείο συμβόλων εντοπισμού σφαλμάτων είναι 800 MB. Εάν το αρχείο είναι πολύ μεγάλο, αυτό πιθανότατα οφείλεται στο ότι τα αρχεία .so περιέχουν έναν πίνακα συμβόλων (ονόματα συναρτήσεων) και πληροφορίες εντοπισμού και διόρθωσης σφαλμάτων DWARF (ονόματα αρχείων και γραμμές κώδικα). Αυτά δεν είναι απαραίτητα για τη μετάφραση του κώδικα σε σύμβολα και μπορείτε να τα καταργήσετε εκτελώντας την εξής εντολή:

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

Σημείωση: Το στοιχείο $OBJCOPY υποδεικνύει τη συγκεκριμένη έκδοση του ABI που απλοποιείτε, για παράδειγμα:ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-objcopy

Βήμα 2: Μεταφόρτωση αρχείου απεμπλοκής ή μετάφρασης σε σύμβολα

Για την απεμπλοκή και τη μετάφραση σε σύμβολα των σφαλμάτων και των ANR της εφαρμογής σας για μια έκδοση της εφαρμογής, θα πρέπει να ανεβάσετε τα αρχεία απεμπλοκής ή μετάφρασης σε σύμβολα για κάθε έκδοση της εφαρμογής.

Σημαντικό: Αυτό το βήμα απαιτείται μόνο για προγραμματιστές που χρησιμοποιούν APK. Εάν χρησιμοποιείτε ένα πακέτο εφαρμογής και την προσθήκη Android Gradle έκδοση 4.1 ή νεότερες εκδόσεις, τότε δεν χρειάζεται να κάνετε κάτι. Η λήψη του αρχείου απεμπλοκής θα γίνει αυτόματα από το πακέτο και μπορείτε να παραβλέψετε αυτό το βήμα και να συνεχίσετε στην ενότητα Βήμα 3: Προβολή ιχνηλατήσεων στοιβών σφαλμάτων που έχουν απεμπλακεί. Μπορείτε να μάθετε περισσότερα σχετικά με τα πακέτα εφαρμογής στον ιστότοπο για προγραμματιστές Android.

Μεταφόρτωση αρχείων με χρήση του Play Console

Για να ανεβάσετε ένα αρχείο απεμπλοκής ή μετάφρασης σε σύμβολα:

  1. Ανοίξτε το Play Console.
  2. Επιλέξτε μια εφαρμογή.
  3. Στο μενού στα αριστερά, επιλέξτε Κυκλοφορία > Εξερευνητής πακέτου εφαρμογής.
  4. Χρησιμοποιώντας το εργαλείο επιλογής στην επάνω δεξιά γωνία, επιλέξτε το σχετικό τεχνούργημα.
  5. Επιλέξτε την καρτέλα Λήψεις και κάντε κύλιση προς τα κάτω, για να μεταβείτε στην ενότητα Στοιχεία.
  6. Κάντε κλικ στο βέλος μεταφόρτωσης για το αρχείο αντιστοίχισης ή τα σύμβολα εντοπισμού σφαλμάτων όπως απαιτείται, για να ανεβάσετε το αρχείο απεμπλοκής ή μετάφρασης σε σύμβολα για την έκδοση της εφαρμογής.
Μεταφόρτωση αρχείων με χρήση του API προγραμματιστών Google Play

Για να ανεβάσετε αρχεία χρησιμοποιώντας το API προγραμματιστών Google Play, μεταβείτε στον ιστότοπο Google Developers.

Βήμα 3: Προβολή ιχνηλατήσεων στοιβών σφαλμάτων που έχουν απεμπλακεί

Αφού ανεβάσετε ένα αρχείο αντιστοίχισης ProGuard ή ένα αρχείο συμβόλων εντοπισμού σφαλμάτων για μια έκδοση της εφαρμογής, τα σφάλματα και τα ANR που προκύπτουν μετά θα απεμπλέκονται. Μπορείτε να δείτε τις ιχνηλατήσεις στοιβών που έχουν απεμπλακεί για μεμονωμένα σφάλματα και ANR στη σελίδα Σφάλματα και ANR της εφαρμογής σας.

  1. Ανοίξτε το Play Console.
  2. Επιλέξτε μια εφαρμογή.
  3. Στο μενού στα αριστερά, επιλέξτε Ποιότητα > Android Vitals > Σφάλματα και ANR.
  4. Επιλέξτε κάποιο σφάλμα.
  5. Στην ενότητα Ιχνηλατήσεις στοιβών, θα δείτε τις ιχνηλατήσεις στοιβών που έχουν απεμπλακεί ή μεταφραστεί σε σύμβολα.

Σημαντικό: Αφού ανεβάσετε ένα αρχείο αντιστοίχισης για μια έκδοση της εφαρμογής, θα απεμπλέκονται μόνο μελλοντικά σφάλματα και ANR για τη συγκεκριμένη έκδοση της εφαρμογής. Τα σφάλματα και τα ANR για μια έκδοση της εφαρμογής που προέκυψαν πριν από τη μεταφόρτωση του συγκεκριμένου αρχείου αντιστοίχισης δεν θα απεμπλέκονται.

Συνήθεις ερωτήσεις

Δεν θέλω να χρησιμοποιήσω την απεμπλοκή/μετάφραση σε σύμβολα του Play Console. Μπορώ να το κάνω εκτός σύνδεσης;

Το Play Console χρησιμοποιεί το στοιχείο ndk-stack, για να μεταφράσει σε σύμβολα ιχνηλατήσεις στοιβών για εγγενείς εφαρμογές και το ReTrace για σφάλματα Java. Εάν επιλέξετε να μην κοινοποιήσετε τα αρχεία απεμπλοκής, μπορείτε να αντιγράψετε από το Play Console τις στοίβες σφαλμάτων που βρίσκονται σε κατάσταση εμπλοκής και να χρησιμοποιήσετε το κατάλληλο εργαλείο εκτός σύνδεσης, για να τις μεταφράσετε σε σύμβολα. Ωστόσο, αυτή η διαδικασία θα πρέπει να γίνεται με μη αυτόματο τρόπο για κάθε στοίβα σφαλμάτων, γεγονός που κάνει τη διαδικασία αργή και χρονοβόρα. Με την παροχή των αρχείων απεμπλοκής, το Play Console θα μπορεί να αναλάβει τη διαδικασία για λογαριασμό σας.

Έχω ανεβάσει το αρχείο απεμπλοκής/μετάφρασης σε σύμβολα. Γιατί τα σφάλματα και τα ANR εξακολουθούν να είναι σε κατάσταση εμπλοκής;

Αφού ανεβάσετε ένα αρχείο αντιστοίχισης ProGuard ή ένα αρχείο συμβόλων εντοπισμού σφαλμάτων για μια έκδοση της εφαρμογής, θα απεμπλέκονται μόνο τα σφάλματα και τα ANR που προκύπτουν μετά τη μεταφόρτωση. Θα πρέπει να αφήσετε να περάσει κάποιο χρονικό διάστημα μέχρι οι συσκευές των χρηστών να αναφέρουν νέα σφάλματα και ANR, ώστε να εμφανιστούν τα σφάλματα και τα ANR που έχουν απεμπλακεί στο Play Console.

Γιατί τα σφάλματα και τα ANR απεμπλέκονται μερικώς μετά τη μεταφόρτωση του αρχείου απεμπλοκής/μετάφρασης σε σύμβολα;

Αυτό προκαλείται από τη μεταφόρτωση ενός ημιτελούς αρχείου απεμπλοκής/μετάφρασης σε σύμβολα. Βεβαιωθείτε ότι έχετε συμπεριλάβει τα αρχεία μετάφρασης σε σύμβολα για ολόκληρη την εφαρμογή, ειδικά αν χρησιμοποιείτε μια περίπλοκη διαδικασία κατασκευής ή πολλαπλών σταδίων. Ένας από τους πιο συνηθισμένους λόγους για τη μερική απεμπλοκή είναι η χρήση μιας βιβλιοθήκης τρίτου μέρους. Σε αυτήν την περίπτωση, μπορεί να είναι δυνατή η λήψη των αρχείων απεμπλοκής από τον πάροχο της βιβλιοθήκης.

Γιατί εμφανίζονται λιγότερα, αλλά πιο σοβαρά, σφάλματα και ANR μετά τη μεταφόρτωση του αρχείου απεμπλοκής/μετάφρασης σε σύμβολα;

Χωρίς τα αρχεία απεμπλοκής, θα εμφανίζεται ξεχωριστά το ίδιο σφάλμα ή ANR από μια συσκευή 32 bit και 64 bit ή από μια συσκευή ARM και Intel. Με την παροχή των αρχείων απεμπλοκής, είναι δυνατή η συγκέντρωση αυτών των σφαλμάτων, γεγονός που σας δίνει καλύτερη εικόνα των πιο σοβαρών σφαλμάτων και ANR για την εφαρμογή.

Τι θα συμβεί αν ξεχάσω να ανεβάσω το αρχείο;

Αν ξεχάσετε να ανεβάσετε το αρχείο για μια νέα έκδοση της εφαρμογής, τα σφάλματα και τα ANR θα επανέλθουν στην κατάσταση εμπλοκής. Ακολουθήστε τις παραπάνω οδηγίες, για να το ανεβάσετε τώρα. Αφού ανεβάσετε ένα αρχείο αντιστοίχισης ProGuard ή ένα αρχείο συμβόλων εντοπισμού σφαλμάτων για μια έκδοση της εφαρμογής, θα απεμπλέκονται μόνο τα σφάλματα και τα ANR που προκύπτουν μετά τη μεταφόρτωση. Θα πρέπει να αφήσετε να περάσει κάποιο χρονικό διάστημα μέχρι οι συσκευές των χρηστών να αναφέρουν νέα σφάλματα και ANR, ώστε να εμφανιστούν τα σφάλματα και τα ANR που έχουν απεμπλακεί στο Play Console.

Για να αποφύγετε τον κίνδυνο να ξεχάσετε τη μεταφόρτωση του αρχείου, σκεφτείτε το ενδεχόμενο να αλλάξετε τη διαδικασία κατασκευής, ώστε να χρησιμοποιεί πακέτα εφαρμογών με την προσθήκη Android Gradle έκδοση 4.1 ή νεότερες εκδόσεις. Σε αυτήν την περίπτωση, μπορείτε να συμπεριλάβετε αυτόματα το αρχείο συμβόλων εντοπισμού σφαλμάτων στο πακέτο εφαρμογής, ακολουθώντας τις οδηγίες στον ιστότοπο για προγραμματιστές Android.

Τι θα συμβεί αν ανεβάσω λάθος αρχείο;

Εάν ανεβάσετε λάθος αρχείο για μια έκδοση της εφαρμογής, τα σφάλματα και τα ANR θα επανέλθουν στην κατάσταση εμπλοκής. Για τη μεταφόρτωση της σωστής έκδοσης:

  1. Ανοίξτε το Play Console.
  2. Επιλέξτε μια εφαρμογή.
  3. Στο μενού στα αριστερά, επιλέξτε Κυκλοφορία > Εξερευνητής πακέτου εφαρμογής
  4. Χρησιμοποιώντας το εργαλείο επιλογής στην επάνω δεξιά γωνία, επιλέξτε το σχετικό τεχνούργημα.
  5. Επιλέξτε την καρτέλα Λήψεις και κάντε κύλιση προς τα κάτω, για να μεταβείτε στην ενότητα Στοιχεία.
  6. Κάντε κλικ στο εικονίδιο διαγραφής δίπλα από το λάθος αρχείο απεμπλοκής ή μετάφρασης σε σύμβολα.
  7. Μόλις διαγραφεί η λανθασμένη έκδοση, κάντε κλικ στο εικονίδιο μεταφόρτωσης και ανεβάστε το σωστό αρχείο για την έκδοση της εφαρμογής.

Αφού ανεβάσετε το σωστό αρχείο αντιστοίχισης ProGuard ή το αρχείο συμβόλων εντοπισμού σφαλμάτων για μια έκδοση της εφαρμογής, θα απεμπλέκονται μόνο τα σφάλματα και τα ANR που προκύπτουν μετά τη μεταφόρτωση. Θα πρέπει να αφήσετε να περάσει κάποιο χρονικό διάστημα μέχρι οι συσκευές των χρηστών να αναφέρουν νέα σφάλματα και ANR, ώστε να εμφανιστούν τα σφάλματα και τα ANR που έχουν απεμπλακεί στο Play Console.

Συμβουλή: Για να αποφύγετε τον κίνδυνο μεταφόρτωσης μιας λανθασμένης έκδοσης του αρχείου, σκεφτείτε το ενδεχόμενο να αλλάξετε τη διαδικασία κατασκευής, ώστε να χρησιμοποιεί πακέτα εφαρμογών με την προσθήκη Android Gradle έκδοση 4.1 ή νεότερες εκδόσεις. Σε αυτήν την περίπτωση, μπορείτε να συμπεριλάβετε αυτόματα το αρχείο συμβόλων εντοπισμού σφαλμάτων στο πακέτο εφαρμογής, ακολουθώντας τις οδηγίες στον ιστότοπο για προγραμματιστές Android.

Αυτήν τη στιγμή χρησιμοποιώ APK. Πώς μπορώ να αλλάξω σε πακέτα εφαρμογών;

Επισκεφτείτε τον ιστότοπο για προγραμματιστές Android, για να ξεκινήσετε.

Η εφαρμογή μου περιέχει εγγενή κώδικα και κώδικα Java. Μπορώ να ανεβάσω ένα εγγενές αρχείο μετάφρασης σε σύμβολα και ένα αρχείο απεμπλοκής Java;

Ναι.

Γιατί ορισμένα ANR δεν εμφανίζουν ιχνηλάτηση στοίβας;

Περιστασιακά, το σύστημα εντοπίζει ένα ANR, αλλά δεν μπορεί να συλλέξει την ιχνηλάτηση στοίβας. Σε αυτήν την περίπτωση, το ANR εμφανίζεται, προκειμένου να έχετε πληρέστερη εικόνα σχετικά με τη σταθερότητα της εφαρμογής σας, αλλά η προβολή της ιχνηλάτησης στοίβας δεν είναι δυνατή. Τα ANR χωρίς ιχνηλατήσεις στοίβας ομαδοποιούνται ανά τύπο και δραστηριότητα, επομένως ο έλεγχος και η διόρθωση παρόμοιων ANR μπορεί να συμβάλλει στη μείωση του αριθμού ANR χωρίς ιχνηλατήσεις στοίβας.

Σας βοήθησε αυτό;

Με ποιον τρόπο μπορούμε να το βελτιώσουμε;

Χρειάζεστε περισσότερη βοήθεια;

Δοκιμάστε αυτά τα επόμενα βήματα:

Αναζήτηση
Διαγραφή αναζητήσεων
Κλείσιμο αναζήτησης
Κύριο μενού
13473823407258466387
true
Αναζήτηση στο Κέντρο Βοήθειας
true
true
true
true
true
92637
false
false