כדי להגיע למשתמשים חדשים, צריך לתמוך במגוון הולך וגדל של גרסאות פלטפורמת Android ומפרטי מכשירים. כדי לשפר את חוויית המשתמש, כדאי לבצע אופטימיזציה להגדרות נפוצות של זיכרון RAM, גדלי מסך ורזולוציות.
תמיכה בגדלים שונים של מסכים
האפליקציה שלכם יכולה לספק חוויית משתמש טובה יותר למיליארדי משתמשים אם היא תומכת במסכים בגדלים וברזולוציות שונים. בקטע הזה מתוארות כמה דרכים לעשות זאת.
שימוש בפיקסלים שלא תלויים בדחיסות (dp)
- הגדרת ממדי פריסה באמצעות פיקסלים לא עובדת טוב כי למסכים שונים יש רמות דחיסות שונות של פיקסלים, לכן אותו מספר פיקסלים עשוי להתאים לגדלים פיזיים שונים במכשירים שונים.
- כדי לפתור את הבעיה הזו, מערכת Android תומכת בפיקסל בלתי תלוי בדחיסות (dp), שמתאים לגודל הפיזי של פיקסל ב-160 נקודות לאינץ' (דחיסות mdpi).
- הגדרת פריסות באמצעות dp מבטיחה שהגודל הפיזי של ממשק המשתמש יהיה עקבי, ללא קשר למכשיר. במדריך ל-Android בנושא תמיכה בריבוי מסכים מפורטות שיטות מומלצות לשימוש בפיקסלים שאינם תלויים בצפיפות.
בדיקת טקסט וגרפיקה בערכי דחיסות מסך ldpi ו-mdpi
- כדאי לבדוק שהטקסט והגרפיקה פועלים היטב במסכים עם צפיפות נמוכה ובינונית (ldpi ו-mdpi), כי אלה צפיפויות נפוצות, במיוחד במכשירים זולים יותר. שימו לב לטקסט שאולי לא ברור במסכים עם צפיפות פיקסלים נמוכה יותר, שבהם לא רואים פרטים קטנים.
- במכשירים עם מסכים בצפיפות נמוכה יותר יש בדרך כלל מפרט חומרה נמוך יותר. כדי לוודא שהאפליקציה פועלת היטב במכשירים האלה, כדאי לצמצם או לבטל עומסי עיבוד גרפיקה כבדים, כמו אנימציות ומעברים.
- מידע נוסף על תמיכה בצפיפויות שונות זמין בהדרכה בנושא Android תמיכה בצפיפויות שונות.
בדיקת פריסות במסכים קטנים ובינוניים
- כדי לוודא שהפריסות שלכם מוקטנות, כדאי לבדוק אותן במסכים קטנים יותר. ככל שהמסכים קטנים יותר, צריך לבחור בקפידה את הרכיבים בממשק המשתמש שמוצגים, כי יש להם מקום מוגבל.
- בהנחיות של Material Design מפורטים מדדים וקווי מפתח כדי לוודא שהפריסות שלכם יכולות להסתגל לצפיפות פיקסלים שונה במסכים.
- מידע נוסף על תמיכה בגדלים שונים של מסכים זמין בהדרכה בנושא Android בנושא תמיכה בגדלים שונים של מסכים.
תאימות לדורות קודמים
יכול להיות שלא כל המשתמשים שלכם משתמשים במכשירים עם הגרסה הכי חדשה של פלטפורמת Android. ריכזנו כאן כמה דרכים לשפר את התאימות לאחור, כדי שהאפליקציה תהיה זמינה לכמה שיותר אנשים.
הגדרת targetSdkVersion וminSdkVersion בצורה מתאימה
-
כדי להבטיח שהאפליקציות יציעו את ההתנהגות העדכנית ביותר במגוון רחב של מכשירים, הן צריכות להיבנות ולכוון לגרסה העדכנית ביותר של Android. עם זאת, הן עדיין מספקות תאימות לאחור לגרסאות ישנות יותר.
ריכזנו כאן שיטות מומלצות לטירגוט לרמות API בצורה מתאימה:
-
targetSdkVersionצריכה להיות הגרסה האחרונה של Android. טירגוט לגרסה העדכנית ביותר מבטיח שהאפליקציה שלכם תירש התנהגויות חדשות יותר בזמן ריצה כשהיא פועלת בגרסאות חדשות יותר של Android. חשוב לבדוק את האפליקציה בגרסאות חדשות יותר של Android כשמעדכנים אתtargetSdkVersion, כי זה יכול להשפיע על התנהגות האפליקציה. -
minSdkVersionהגדרת הגרסה המינימלית הנתמכת של Android. ההגדרהminSdkVersionגורמת גם לכך שכלי הבנייה של Android ידווחו על שימוש לא נכון בממשקי API חדשים, שאולי לא זמינים בגרסאות ישנות יותר של הפלטפורמה. כך תוכלו להגן על עצמכם מפני פגיעה לא מכוונת בתאימות לדורות קודמים.
-
- כדי להעריך אילו גרסאות של Android כדאי לטרגט על סמך משתמשי היעד, מומלץ לעיין ב לוחות הבקרה של Android, ב-Google Play Developer Console עבור האפליקציה ובמחקרים בתעשייה בשווקי היעד.
שימוש בספריות התמיכה של Android
-
כדי לוודא שהאפליקציה מספקת חוויה עקבית בגרסאות שונות של מערכת ההפעלה, צריך להשתמש בספריית התמיכה של Android.
הספרייה הזו מספקת גרסאות של ממשקי API של Android framework שתואמות לדור קודם, וגם תכונות שזמינות רק דרך ממשקי ה-API של הספרייה, כמו
AppCompatActivityוספריית התמיכה של Material Design. - דוגמאות לכמה תכונות:
- ספריית התמיכה בגרסאות 4 ו-7: ממשקי API רבים של מסגרות לגרסאות ישנות יותר של Android, כמו
ViewPager,ActionBar, RecyclerViewו-Palette. - ספריית התמיכה של Material Design: ממשקי API לתמיכה בהוספה של רכיבים ודפוסים של Material Design לאפליקציות.
- ספריית תמיכה ב-Multidex: מספקת תמיכה באפליקציות גדולות שיש בהן יותר מ-65,000 שיטות. זה יכול לקרות אם האפליקציה משתמשת בספריות רבות.
- ספריית התמיכה בגרסאות 4 ו-7: ממשקי API רבים של מסגרות לגרסאות ישנות יותר של Android, כמו
- מידע נוסף על ספריות התמיכה הזמינות מופיע בקטע Support Libraries Features באתר למפתחי Android.
שימוש ב-Google Play Services
- Google Play Services מספקת את ממשקי ה-API הטובים ביותר של Google, ללא קשר לגרסת פלטפורמת Android. כדאי להשתמש בתכונות של Google Play Services כדי להציע את חוויית השימוש הכי חלקה ב-Google במכשירי Android.
- שירותי Google Play כוללים גם ממשקי API שימושיים כמו
GcmNetworkManager, שמספק חלק גדול מממשק ה-API של Android 5.0JobSchedulerלגרסאות ישנות יותר של Android. - עדכונים ל-Google Play Services מופצים באופן אוטומטי על ידי חנות Google Play, וגרסאות חדשות של ספריית הלקוח מועברות דרך Android SDK Manager.
שימוש יעיל בזיכרון
הזיכרון הוא גיבור לא מוערך של חוויית המשתמש. ניהול טוב של הזיכרון יכול להפוך את האפליקציה ליציבה יותר ולשפר את הביצועים שלה. במקרים מסוימים, שימוש יעיל בזיכרון הוא הדבר היחיד שמאפשר להשתמש באפליקציה. ריכזנו כאן כמה דרכים שיעזרו לכם להשתמש בזיכרון בצורה חכמה באפליקציה.
הקטנת הזיכרון שבשימוש במכשירים זולים
- התאמה דינמית של הזיכרון שבשימוש כדי להבטיח תאימות בין מכשירים עם תצורות שונות של RAM.
- שיטות כמו
isLowRamDevice()ו-getMemoryClass()עוזרות לקבוע את מגבלות הזיכרון בזמן הריצה. על סמך המידע הזה, אפשר לצמצם את השימוש בזיכרון. לדוגמה, אפשר להשתמש בתמונות ברזולוציה נמוכה במכשירים עם זיכרון נמוך. - מידע נוסף על ניהול הזיכרון של האפליקציה זמין בהדרכה בנושא ניהול הזיכרון של האפליקציה ב-Android.
הימנעות מתהליכים שפועלים לאורך זמן
- תהליכים שפועלים לאורך זמן נשארים בזיכרון ויכולים להאט את פעולת המכשיר. ברוב המקרים, האפליקציה אמורה להתעורר כשמתרחש אירוע מסוים, לעבד את הנתונים ואז להיסגר. כדי להימנע משירותי רקע שפועלים לאורך זמן ולצמצם את העומס על הזיכרון במכשיר של המשתמש, מומלץ להשתמש בהעברת הודעות בענן ב-Firebase (FCM) וב
GcmNetworkManager.
שימוש בזיכרון בהשוואה לביצועים
Android Studio מספק כלים להשוואה בין ביצועים של זיכרון וליצירת פרופילים, שמאפשרים למדוד את השימוש בזיכרון בזמן הריצה. השוואת הזיכרון שבשימוש באפליקציה מאפשרת לעקוב אחרי השימוש בזיכרון בכמה גרסאות של האפליקציה. כך אפשר לזהות גידול לא מכוון בזיכרון שבשימוש. אפשר להשתמש בכלי Memory Profiler כדי:
- לבדוק אם דפוסים לא רצויים של אירועי מנגנון איסוף זבל (GC) עלולים לגרום לבעיות בביצועים.
- זיהוי סוגי אובייקטים שמוקצים או נשארים מוקצים באופן לא צפוי או מיותר.
- מזהים איפה בקוד הבעיה עשויה להיות.
מידע נוסף על השוואת ביצועים של השימוש בזיכרון זמין במאמר בנושא הצגת הערימה וההקצאות באמצעות הכלי Memory Profiler.
אופטימיזציה למכשירים עם Android (מהדורת Go)
Android (מהדורת Go) היא חוויה שעברה אופטימיזציה למכשירים ברמה בסיסית עם RAM בנפח 1GB או פחות, החל מ-Android Oreo (מהדורת Go). כדי לוודא שהאפליקציה פועלת בצורה חלקה במכשירי Android (מהדורת Go), חשוב לפעול בהתאם להנחיות הבאות:
- הערך של targetSdkVersion צריך להיות הגרסה העדכנית ביותר של Android. מכשירים עם Android (מהדורת Go) מריצים רק Android Oreo (API 27 ומעלה).
- האפליקציה צריכה לפעול בצורה חלקה במכשירים עם זיכרון RAM בנפח ≤1GB. חשוב לזכור את האופטימיזציות של הזיכרון שמופיעות בקטע שימוש יעיל בזיכרון למעלה, ולהשתמש בתפקוד האפליקציה כדי לזהות ולתקן תפקודים לא תקינים כמו רינדור איטי ופריימים קפואים.
- יכול להיות שהתכונה תמונה בתוך תמונה (PIP) מושבתת במכשירים. לפני שהאפליקציה משתמשת ב-PIP, צריך לבדוק אם הוא זמין באמצעות קריאה ל-
hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE). - גודל האפליקציה במכשיר צריך להיות קטן מ-40MB.
- גודל הסט הפרופורציונלי (PSS) של השימוש בזיכרון ה-RAM של האפליקציה לא יכול להיות יותר מ-90MB. במשחקים, ערך ה-PSS של השימוש ב-RAM של המשחק לא צריך לעלות על 150MB. מידע נוסף על PSS זמין במדריך בדיקת השימוש ב-RAM.
- זמן ההפעלה של האפליקציה צריך להיות מינימלי, ופחות מ-5 שניות.
-
SYSTEM_ALERT_WINDOW(שמאפשרת לאפליקציות לצייר חלון מעל אפליקציות אחרות) עשויה להיות מושבתת במכשירי Android Go עם זיכרון RAM נמוך. לפני שמציירים מעל אפליקציות אחרות, צריך לבדוק אם לאפליקציה יש הרשאה לכך באמצעות הקריאה Settings.canDrawOverlays(). אם האפליקציה לא מקבלת את ההרשאה, צריך להוריד את רמת הפונקציונליות של האפליקציה בצורה אלגנטית כדי שהמשתמש יוכל להמשיך להשתמש בה. אפשר לעשות זאת על ידי השבתת התכונה שדורשת את ההרשאהSYSTEM_ALERT_WINDOW.
אנחנו ממליצים לרוב המפתחים לבצע אופטימיזציה לאפליקציה הקיימת שלהם, שתהיה זמינה בכל מכשירי Android (מהדורת Go), כי שיפור המהירות והמשקל של האפליקציה יועיל לכל קהל היעד שלכם.
אתם יכולים להשתמש בתכונה 'מספר חבילות APK' ב-Play Console כדי להפיץ חבילת APK ספציפית למכשירי Android (Go edition), אבל מומלץ לעשות זאת רק אם לא פוגעים בחוויית השימוש (למשל, לא מומלץ להסיר תכונות).
קובץ ה-APK שמטרגט מכשירים עם Android (מהדורת Go) צריך להצהיר על
<uses-feature android:name="android.hardware.ram.low" android:required="true">,
לטרגט לפחות API ברמה 26,
ולהיות בעל קוד גרסה גבוה יותר מקובץ ה-APK של מהדורת Android שאינה Go.
ישויות קשורות
מקורות מידע נוספים
מידע נוסף על תמיכה במגוון מכשירים זמין במקור המידע הבא: