הקטנת האפליקציה

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

שיטות מומלצות

העלאת האפליקציה כקובץ Android App Bundle

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

הקטנת הקוד בסביבת זמן הריצה

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

android {
    buildTypes {
        getByName("release") {
            isMinifyEnabled = true
            isShrinkResources = true
        }
    }
}

מסירים פריסות לא נחוצות

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

בדיקה מחדש של תכונות שנעשה בהן שימוש לעיתים רחוקות

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

שימוש בהצגת מודעות דינמית

ב-Play Feature Delivery נעשה שימוש בתכונות מתקדמות. היכולות של App Bundle, שמאפשרות שימוש בתכונות מסוימות של האפליקציה בהתאם לתנאי המבצע או להורדה לפי דרישה. אפשר להשתמש במודולים של תכונות למשלוח מותאם אישית. היתרון הייחודי של מודולים של תכונות הוא היכולת להתאים אישית את האופן והמועד של הורדת תכונות שונות של האפליקציה מכשירים שבהם פועלת מערכת Android בגרסה 5.0 (רמת API 21) ומעלה.

הקטנת הגודל של המחרוזת שניתן לתרגם

אפשר להשתמש בנכס Android Gradle resConfigs כדי להסיר קובצי משאבים חלופיים שהאפליקציה לא נחוצה. אם משתמשים הספרייה שכוללת משאבי שפה (כמו AppCompat או Google Play שירותים), האפליקציה שלך תכלול את כל מחרוזות השפה המתורגמות של הספרייה הודעות, בלי קשר לתרגום האפליקציה. אם ברצונך להשאיר רק את בשפות שהאפליקציה שלך תומכת בהן באופן רשמי, אפשר לציין את השפות האלה באמצעות המאפיין resConfig. כל המשאבים לשפות שלא צוינו הוסר.

כדי להגביל את משאבי השפה לאנגלית ולצרפתית בלבד, ניתן לערוך defaultConfig כפי שמוצג בהמשך:


android {
    defaultConfig {
        ...
        resConfigs "en", "fr"
    }
}

שימוש בתרגום סלקטיבי

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

לדוגמה, אל תטרחו לתרגם כתובות URL.

<string name="car_frx_device_incompatible_sol_message">
  This device doesn\'t support Android Auto.\n
  &lt;a href="https://support.google.com/androidauto/answer/6395843"&gt;Learn more&lt;/a&gt;
</string>

ייתכן ש-&lt; ו-&gt יזוהו על ידך, כי אלה תווי בריחה (escape) של < וגם >. הם נדרשים כאן, כי אם מוסיפים תג <a> בתוכו של תג <string>, אז מהדר המשאבים של Android מסיר אותם מפני לא מזהה את התג. עם זאת, המשמעות היא שאתם מתרגמים את קוד ה-HTML, את התגים ואת כתובת האתר ב-78 שפות. במקום זאת, אפשר להסיר את קוד ה-HTML:

<string name="car_frx_device_incompatible_sol_message">
         This device doesn\'t support Android Auto.
</string>

שילוב קבצים בינאריים מקומיים עם יחסי תלות נפוצים

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