כדי לספק את חוויית המשתמש הכי טובה, כדאי לבצע אופטימיזציה של האפליקציה כדי שהיא תהיה קטנה ומהירה ככל האפשר. כלי האופטימיזציה של האפליקציות שלנו, שנקרא R8, מייעל את האפליקציה על ידי הסרת קוד ומשאבים שלא נמצאים בשימוש, כתיבה מחדש של קוד כדי לבצע אופטימיזציה של ביצועי זמן הריצה ועוד. למשתמשים שלכם, המשמעות היא:
- זמן הפעלה מהיר יותר
- שיפורים בביצועי העיבוד והזמן הריצה
- פחות מקרי ANR
כדי להפעיל אופטימיזציה של האפליקציה, צריך להגדיר את isMinifyEnabled = true
(לאופטימיזציה של הקוד) ואת isShrinkResources = true
(לאופטימיזציה של המשאבים) בסקריפט הבנייה ברמת האפליקציה של גרסת ההפצה, כמו שמוצג בקוד הבא. מומלץ להפעיל תמיד את שתי ההגדרות. מומלץ גם להפעיל את האופטימיזציה של האפליקציה רק בגרסה הסופית של האפליקציה שאתם בודקים לפני הפרסום – בדרך כלל בגרסת ההפצה – כי האופטימיזציות מאריכות את זמן הבנייה של הפרויקט ויכולות להקשות על ניפוי הבאגים בגלל האופן שבו הן משנות את הקוד.
Kotlin
android { buildTypes { release { // Enables code-related app optimization. isMinifyEnabled = true // Enables resource shrinking. isShrinkResources = true proguardFiles( // Default file with automatically generated optimization rules. getDefaultProguardFile("proguard-android-optimize.txt"), ... ) ... } } ... }
מגניב
android { buildTypes { release { // Enables code-related app optimization. minifyEnabled true // Enables resource shrinking. shrinkResources true // Default file with automatically generated optimization rules. proguardFiles getDefaultProguardFile('proguard-android-optimize.txt') ... } } }
בנוסף, כדי לוודא ש-R8 משתמש ביכולות האופטימיזציה המלאות שלו, צריך להסיר את השורה הזו מקובץ gradle.properties
של הפרויקט, אם היא קיימת:
android.enableR8.fullMode=false # Remove this line from your codebase.
שימו לב שאם מפעילים את האופטימיזציה של האפליקציה, קשה להבין את עקבות המחסנית, במיוחד אם R8 משנה את השמות של המחלקות או השיטות. כדי לקבל עקבות מחסנית שתואמות לקוד המקור, אפשר לעיין במאמר בנושא שחזור עקבות המחסנית המקורי.
אם R8 מופעל, כדאי גם ליצור פרופילים להפעלה כדי לשפר עוד יותר את ביצועי ההפעלה.
אם הפעלתם אופטימיזציה של אפליקציות והיא גורמת לשגיאות, הנה כמה אסטרטגיות לפתרון הבעיות:
- הוספת כללי שמירה כדי להשאיר חלק מהקוד ללא שינוי.
- יישום אופטימיזציות באופן הדרגתי.
- צריך לעדכן את הקוד כדי להשתמש בספריות שמתאימות יותר לאופטימיזציה.