אופטימיזציה של קוד DEX

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

קבצי DEX, או Dalvik Executable, מכילים את הקוד המהודר שמשמש להפעלת האפליקציה. בדרך כלל הם כוללים קוד Java ו-Kotlin, בניגוד לקוד C++ מהודר או לקבצי .so.

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

זיהוי הבעיה

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

מעקב אחר סטטוס האופטימיזציה

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

באפליקציות שנוצרו באמצעות הטלאי האחרון של AGP בגרסה 8.10 ואילך, אחוזי השימוש האלה נלקחים מקובץ r8.json שכלול באפליקציה.

בגרסאות ישנות יותר של AGP או במקרים שבהם הקובץ r8.json לא נכלל, האחוזים מחושבים מהקובץ mapping.txt אם הוא נכלל, או באמצעות היוריסטיקה של DEX אם קובץ המיפוי לא זמין.

באפליקציות שעברו אופטימיזציה באמצעות כלי אופטימיזציה חלופי של קוד, תכונת תפקוד האפליקציה ב-Android מבצעת ניתוח כדי להעריך את אחוז המחלקות, השיטות והשדות שעברו הסתרה בקובץ AAB.

הגודל הכולל המינימלי של קובצי DEX

מערכת תפקוד האפליקציה מחשבת מדדי אופטימיזציה של קוד לכל האפליקציות, אבל תקבלו התראות רק אם קובץ ה-AAB שלכם עומד בדרישות הבאות לגבי הגודל הכולל של קובץ ה-DEX:

  • אפליקציות: ה-Bundle מכיל לפחות 10MB של קוד DEX שנמדד כגודל לא דחוס
  • משחקים: קובץ ה-Bundle מכיל לפחות 50MB של קוד DEX, שנמדד כגודל לא דחוס

במדד תפקוד האפליקציה ב-Android מוצג הגודל של קובץ ה-DEX של האפליקציה, אבל אפשר גם למדוד אותו באופן מקומי באמצעות שורת הפקודה:

  unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'

כדי לבדוק את המטא-נתונים המדויקים שמשמשים את תפקוד האפליקציה לחישוב הציונים, צריך לחלץ את הקובץ r8.json מקובץ ה-AAB של האפליקציה:

unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json