הוספת סמלים מקוריים לגרסה היציבה

כברירת מחדל, ספריות של קוד Native מוסרות בגרסאות של האפליקציה שמוכנות להפצה. ההסרה הזו כוללת את טבלת הסמלים ומידע על תוצאות ניפוי הבאגים שנמצאים בספריות Native שבהן נעשה שימוש באפליקציה. הסרה של ספריות קוד Native מובילה לחיסכון משמעותי בגודל האפליקציה, אבל אי אפשר לאבחן קריסות ב-Google Play Console בגלל המידע החסר (כמו שמות של מחלקות ופונקציות). כדי לנפות באגים בקריסות, צריך לכלול קובץ של סמלי ניפוי באגים באפליקציה ב-Play Console.

העלאת קובץ סמלים

דוחות של קריסות מקוריות ב-Google Play Console מופיעים בקטע מדדי איכות של Android. בכמה שלבים אפשר ליצור ולהעלות קובץ בשפה אנושית לניפוי באגים עבור האפליקציה. הקובץ הזה מאפשר לכם לראות בתפקוד האפליקציה עקבות מחסנית של קריסות מקומיות עם סמלים (שכוללים שמות של מחלקות ופונקציות), כדי לעזור לכם לנפות באגים באפליקציה בסביבת הייצור. השלבים האלה משתנים בהתאם לגרסה של פלאגין של Android Gradle שבה נעשה שימוש בפרויקט, ולסוג הקובץ שבו משתמשים – קובץ Android App Bundle (מומלץ) או APK.

פלאגין של Android Gradle בגרסה 4.1 ואילך

אם הפרויקט שלכם יוצר קובץ Android App Bundle ‏ (AAB), אתם יכולים להגדיר את תהליך הבנייה כך שיכלול באופן אוטומטי את קובץ בשפה אנושית לניפוי באגים ב-AAB, כדי שהוא יועלה ל-Play Console כשאתם מפרסמים את האפליקציה. כדי לכלול את הקובץ הזה בגרסאות build להפצה, מוסיפים את השורה הבאה לקובץ build.gradle.kts של האפליקציה:

android.buildTypes.release.ndk.debugSymbolLevel = { SYMBOL_TABLE | FULL }

בוחרים את רמת סמלי ניפוי הבאגים מבין האפשרויות הבאות:

  • אפשר להשתמש ב-SYMBOL_TABLE כדי לקבל שמות של פונקציות ב-stack trace עם סימון של סמלים ב-Play Console. הרמה הזו תומכת בהודעות על הסרת תוכן.
  • אפשר להשתמש ב-FULL כדי לקבל שמות של פונקציות, קבצים ומספרי שורות ב-symbolicated stack traces ב-Play Console.

אם הפרויקט שלכם יוצר קובץ APK, צריך להשתמש בהגדרה android.buildTypes.release.ndk.debugSymbolLevel שמוצגת למעלה כדי ליצור בנפרד את קובץ בשפה אנושית לניפוי באגים. מעלים באופן ידני את קובץ הסמלים המקוריים לניפוי באגים אל Google Play Console (התהליך דומה להעלאת קובץ מיפוי כדי לבטל את הטשטוש של עקבות מחסנית). כחלק מתהליך build, פלאגין של Android Gradle מוציא את הקובץ הזה במיקום הפרויקט הבא:

app/build/outputs/native-debug-symbols/<var>variant-name</var>/native-debug-symbols.zip

אם התלויות שלכם מכילות ספריות מקוריות, סביר להניח שפרטי הניפוי באגים יוסרו כדי להקטין את הגודל. כדי לוודא זאת, אפשר להריץ build עם רמת היומן info ולהגדיר את debugSymbolLevel = { SYMBOL_TABLE | FULL }. אחר כך מחפשים את השורה הבאה בפלט של הבנייה:

Unable to extract native debug metadata from ... because the native debug metadata has already been stripped.

פלאגין של Android Gradle מגרסה 4.0 ומגרסאות קודמות (ומערכות build אחרות)

במסגרת תהליך build, פלאגין של Android Gradle שומר עותק של הספריות שלא הוסרו בספריית פרויקט. מבנה הספריות דומה לזה:

app/build/intermediates/cmake/universal/release/obj/
├── armeabi-v7a/
│   ├── libgameengine.so
│   ├── libothercode.so
│   └── libvideocodec.so
├── arm64-v8a/
│   ├── libgameengine.so
│   ├── libothercode.so
│   └── libvideocodec.so
├── x86/
│   ├── libgameengine.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 אל Google Play Console באופן ידני.