הקטנת הגודל של האפליקציה ללא התקנה

אזהרה: התכונה 'Google Play ללא התקנה' לא תהיה זמינה יותר. החל מדצמבר 2025, לא תהיה אפשרות לפרסם אפליקציות ללא התקנה דרך Google Play, וכל ממשקי Instant API של Google Play Services יפסיקו לפעול. המשתמשים לא יקבלו יותר אפליקציות מיידיות מ-Play באמצעות מנגנון כלשהו.

אנחנו מבצעים את השינוי הזה על סמך משוב שקיבלנו ממפתחים וההשקעות המתמשכות שלנו בשיפור הסביבה העסקית מאז השקת Google Play ללא התקנה.

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

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

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

ארגון מחדש למודולים מרובים של תכונות

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

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

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

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

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

עדכון משאבי אפליקציות

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

הקטנת גודל הקובץ של תמונות

אפשר להקטין באופן משמעותי את הגודל הכולל של רכיבי ה-drawable באפליקציה באמצעות הפורמט WebP במקום PNG. ‫Google Play Instant מספק תמיכה מלאה ב-WebP, כולל שקיפות ודחיסה ללא אובדן נתונים, כך שאיכות התמונה נשארת זהה.

אם אפשר, כדאי להסיר את כל הדרישות לתאימות לאחור לשימוש בתמונות PNG אחרות. אם אתם חייבים להשתמש בתמונות PNG, אתם צריכים למקם אותן במודול שמשמש לבנייה ולהתקנה של האפליקציה.

הסרה של שפות שלא בשימוש

אם האפליקציה תומכת בכמה שפות, כדאי לצמצם כמה שיותר משאבים מותאמים לשוק המקומי. השלב הזה שימושי במיוחד אם משתמשים בספריית 'תאימות לאפליקציות', כמו android.support.v7.appcompat. הספרייה הזו כוללת הודעות בשפות רבות, ויכול להיות שהאפליקציה שלכם לא תומכת בחלק מהן.

מידע נוסף זמין במאמר בנושא הסרת משאבים חלופיים שלא נמצאים בשימוש, במיוחד שפות שלא נמצאות בשימוש.

הסרת קבצים מיותרים

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

  1. מקישים על Control+Alt+Shift+I (‏Command+Alt+Shift+I ב-Mac OS).
  2. בתיבת הדו-שיח שמופיעה, מקלידים "unused resources".
  3. בוחרים באפשרות Unused resources (משאבים שלא נעשה בהם שימוש) כדי להתחיל בתהליך הבדיקה של השימוש במשאבים.

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

הסרה של ספריות שלא בשימוש

ככל שההיקף של האפליקציה גדל, היא יכולה לקבל מספר מפתיע של תלויות, במיוחד אם מדובר באחד מהסוגים הבאים:

  • ספריות מקוריות: ספריות שמכילות קוד מקורי שאפליקציה מיידית אף פעם לא מריצה.
  • תלויות טרנזיטיביות: ספריות שהספריות המיובאות של האפליקציה תלויות בהן.

ב-Android Studio יש כמה כלים שימושיים לזיהוי תלות חיצונית בפרויקט של האפליקציה:

ספריות חיצוניות

התצוגה Project ב-Android Studio כוללת את הקטע External Libraries.

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

הכלי לניתוח APK

אפשר להשתמש בכלי APK Analyzer כדי להשוות בין גרסאות build שונות, כולל גרסאות build של אפליקציות ללא התקנה.

אחרי שקובעים אילו ספריות לא נדרשות באפליקציה, מוסיפים לקובץ ה-build של Gradle שורות דומות לאלה כדי להחריג אותן:

<feature_module>/build.gradle

Groovy

dependencies {
    implementation('some-important-but-large-library') {
        exclude group: 'com.example.imgtools', module: 'native'
    }
}

Kotlin

dependencies {
    implementation('some-important-but-large-library') {
        exclude(group = "com.example.imgtools", module = "native")
    }
}

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

הטמעה של העברת נכסים בענן

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