בדיקה ופתרון בעיות באופטימיזציה

אחרי שמפעילים את האופטימיזציה של האפליקציה, צריך לבדוק שהאפליקציה פועלת כצפוי ושההגדרה של R8 פועלת כמצופה. השלבים הכלליים הם:

  1. בודקים את התהליכים הקריטיים שהמשתמשים עוברים באפליקציה (CUJ): לדוגמה, מוודאים שהמשתמשים יכולים להיכנס לחשבון ולבצע משימות חשובות אחרות.
  2. מדידת השיפור בביצועים באמצעות מדדי השוואה: משווים את הביצועים של האפליקציה לפני ואחרי הפעלת האופטימיזציה של האפליקציה.

אם נתקלתם בבעיות, ב-R8 יש כלים שיעזרו לכם לפתור אותן. אם אתם לא מצליחים לפתור בעיה ב-R8, אתם יכולים לדווח על באג.

טיפים כלליים

בדרך כלל, בעיות ב-R8 הן ייחודיות לאפליקציה שלכם, אבל ריכזנו כאן כמה טיפים כלליים שיעזרו לכם לנפות באגים בקלות רבה יותר:

  • השבתה זמנית של האפליקציה: R8 מבצע ערפול קוד כחלק מתהליך האופטימיזציה שלו. בדרך כלל, ערפול לא גורם לשגיאות, אבל הוא מקשה על ניפוי באגים. מוסיפים את הדגלים ‑dontobfuscate ו-‑dontoptimize לקובץ הכללים לשמירה כדי לאתר קוד בעייתי.
  • בדיקת השתקפות: אם נתקלתם בחריגה מסוג no such element, למשל:

    Caused by: java.util.NoSuchElementException: Collection contains no element matching the predicate in the stack trace ,

    בדרך כלל, המשמעות של היוצא מן הכלל היא שהשדה הרלוונטי נמצא בשימוש באמצעות השתקפות, וצריך להוסיף כלל שמאפשר לשמור אותו.

  • בדיקת קוד בייט: רוב הבעיות ב-R8 מחייבות בדיקת קוד בייט, שאפשר לבצע באמצעות כלים כמו APK Analyzer.

איך בודקים אילו כללים חלים

כדי להפיק דוח מלא של כל הכללים שחלות על R8 בזמן ה-build של הפרויקט, צריך לכלול את הקטע הבא בקובץ proguard‑rules.pro של המודול של האפליקציה:

-printconfiguration <output-dir>/<report-name>.txt

אפשר לציין כל נתיב ושם קובץ. אם לא מציינים נתיב או שם קובץ, דוח הכללים יופיע ב-R8 ב-<module-name>/build/outputs/mapping/<build-type>/configuration.txt.

הסיבה לכך שהקוד נשמר

אם אתם רואים קוד שנשאר ולא ציפית שהוא יוסר, תוכלו להשתמש באפשרות ההגדרה ‑whyareyoukeeping כדי להבין למה הקוד נשאר. R8 יוצר נתיב מהקוד שנשמר לאחת מנקודות הכניסה של האפליקציה. למידע נוסף, עיינו במסמכי העזרה של ‑whyareyoukeeping במדריך של Proguard.

שחזור של נתיב הקריאה החוזרת המקורי

הקוד שמעובד על ידי R8 משתנה בדרכים שונות, כך שניתוח עקבות הקריאה לא מתייחס יותר לקוד המקורי. לדוגמה, מספרי השורות והשמות של הכיתות והשיטות יכולים להשתנות. כדי לשחזר את מעקב הסטאק המקורי, ב-R8 יש את כלי שורת הפקודה retrace, שמצורף לחבילת הכלים של שורת הפקודה.

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