הנחיות ליבה בנוגע לאיכות האפליקציות

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

ההנחיות מגדירות את האיכות המינימלית שכל האפליקציות צריכות לעמוד בה.

איכות אפליקציה דינמית

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

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

  • יצירת אפליקציות שעברו אופטימיזציה לכל גורמי הצורה ולכל גדלי המסך
  • שיפור הדירוג של האפליקציות ברשימות ובחיפוש ב-Google Play
  • איך מושכים יותר משתמשים ומשפרים את שימור המשתמשים

הנחיות

ההנחיות הבסיסיות הבאות יעזרו לכם לפתח אפליקציה בסיסית ואיכותית.

חוויית משתמש

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

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

נוחות השימוש

מזהה בדיקות תיאור
Consistent_UX T-Consistent_UX,
T-SD_Card
האפליקציה מספקת חוויית משתמש עקבית לכל התרחישים לדוגמה של השימוש באפליקציה בכל גורמי הצורה.
App_Switcher T-App_Switcher,
T-SD_Card
האפליקציה עוברת לרקע כשהמיקוד עובר לאפליקציה אחרת. האפליקציה חוזרת לחזית כשהיא מופעלת מחדש ממחליף האפליקציות האחרונות.
Sleep_Resume T-Sleep_Resume,
T-SD_Card
כשהאפליקציה היא אפליקציה שפועלת בחזית, היא מושהית כשהמכשיר עובר למצב שינה ומופעלת מחדש כשהמכשיר יוצא ממצב שינה.
Lock_Resume T-Lock_Resume,
T-SD_Card
כשהאפליקציה פועלת בחזית, היא מושהית כשהמכשיר נעול ומופעלת מחדש כשהמכשיר לא נעול.

ממשק משתמש

מזהה בדיקות תיאור
Display_State_Parity T-Orientation_Transitions

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

Fullscreen_Display T-Orientation_Transitions

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

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

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

איכות חזותית

מזהה בדיקות תיאור
Graphic_Quality T-Graphic_Quality

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

  • האפליקציה משתמשת בפריטים גרפיים וקטוריים שניתנים לשרטוט במידת האפשר
  • האפליקציה משתמשת בגרפיקה באיכות גבוהה לכל גדלי המסך וגורמי הצורה שמטרגטים
  • אין החלקה של קצוות בתפריטים, בלחצנים וברכיבים אחרים בממשק המשתמש
Line_Length T-Line_Length האפליקציה מגבילה את אורך השורה ל-45 עד 75 תווים (כולל רווחים) בכל אחת מהשפות הנתמכות באפליקציה, כדי להבטיח שהטקסט ובלוקי הטקסט יהיו קריאים.
Theme_Support T-Theme_Support התוכן של האפליקציה וכל תוכן האינטרנט שאליו יש לאפליקציה גישה תומכים גם במצב בהיר וגם במצב כהה.
מזהה בדיקות תיאור
Back_Button_Nav T-Back_Nav האפליקציה תומכת בניווט באמצעות הכפתור "הקודם" רגיל ולא נעשה בה שימוש בהנחיות מותאמות אישית של הכפתור "הקודם" במסך.
Back_Gesture_Nav T-Back_Nav האפליקציה תומכת בניווט באמצעות תנועות כדי לחזור אחורה ולעבור למסך הבית.
State_Preservation T-State_Preservation,
T-Back_Nav

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

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

  • כשממשיכים את הפעלת האפליקציה מהאפליקציות האחרונות, האפליקציה חוזרת למצב המדויק שבו היא הייתה בשימוש האחרון.
  • כשממשיכים את הפעלת האפליקציה אחרי שהמכשיר יוצא ממצב שינה (נעול), האפליקציה מחזירה את המשתמש למצב המדויק שבו האפליקציה הייתה בשימוש האחרון.
  • כשמפעילים מחדש את האפליקציה ממסך הבית או מכל האפליקציות, היא צריכה לבצע אחת מהפעולות הבאות, בהתאם לכמות הזמן שעברה מאז השימוש האחרון באפליקציה:
    • אם נעשה שימוש באפליקציה לפני זמן קצר (דקות), המערכת תשחזר את מצב האפליקציה למצב שקרוב ככל האפשר למצב שהיא הייתה בו לפני הפסקת הפעילות שלה.
    • אם עבר יותר זמן מאז השימוש האחרון באפליקציה, כדאי לנסות לשחזר את האפליקציה למצב שהיא הייתה בו לפני הפסקת הפעילות שלה או להפעיל את האפליקציה ממסך הבית שלה או ממצב ברירת מחדל אחר.

התראות

מזהה בדיקות תיאור
Notification_Quality T-Notification_Quality

התראות מספקות מידע רלוונטי שקשור לאפליקציה.

Conversation_Quality T-Notification_Quality

באפליקציות לשליחת הודעות, באפליקציות חברתיות ובשיחות:

נגישות

מזהה בדיקות תיאור
Touch_Target_Size T-Touch_Target_Size משטחי המגע הם לפחות 48 dp. אפשר לעיין בהנחיות של Material Design בנושא פריסה וטיפוגרפיה.
Visual_Contrast T-Visual_Contrast

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

  • ‫3:1 לטקסט ולגרפיקה גדולים
  • ‫4.5:1 לטקסט קטן (פחות מ-18 נקודות או פחות מ-14 נקודות אם הטקסט מודגש)

מידע נוסף על צבע וניגודיות

Content_Description T-Content_Description תיאור של כל רכיב בממשק המשתמש, למעט TextView, באמצעות contentDescription.

הפונקציונליות

האפליקציה שלך צריכה להטמיע את ההתנהגות הפונקציונלית הבאה.

אודיו

מזהה בדיקות תיאור
Audio_Playback_Start T-Audio_Playback_Start

כשהמשתמש מפעיל השמעה של אודיו, האפליקציה צריכה לבצע אחת מהפעולות הבאות תוך שנייה אחת:

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

האפליקציה צריכה לתמוך בהפעלה ברקע.

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

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

Audio_Notification_Style T-Audio_Notification_Style כשהאפליקציה מפעילה אודיו ברקע, היא צריכה ליצור התראה עם סגנון MediaStyle.
Audio_Playback_Resume T-Audio_Playback_Resume אם האפליקציה פועלת ברקע וההפעלה של האודיו מושהית, ההפעלה של האודיו צריכה להתחדש כשהאפליקציה חוזרת לחזית, או שהאפליקציה צריכה לציין למשתמש שההפעלה מושהית.

וידאו

מזהה בדיקות תיאור
Video_PiP T-Video_PiP אם האפליקציה מפעילה סרטונים, היא צריכה לתמוך בהפעלה של תמונה בתוך תמונה.
Video_Encoding T-Video_Encoding אם האפליקציה מקודדת סרטון, היא צריכה לעשות זאת באמצעות תקן הדחיסה של סרטוני HEVC.
Video_Playback_Background T-Video_Playback_Background

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

  • ממוזער
  • מאחורי חלונות אחרים או ממשק המשתמש של המערכת (לדוגמה, מרכז ההתראות או מסך הבית/מסך הנעילה)
  • מחוץ למסך שולחן העבודה הגלוי

שיתוף

מזהה בדיקות תיאור
System_Sharesheet T-System_Sharesheet האפליקציה צריכה להשתמש בקובץ לשיתוף ב-Android כשמשתפים תוכן. האפליקציה יכולה להציע יעדים שלא זמינים לפתרונות מותאמים אישית.

שירותים ברקע

מזהה בדיקות תיאור
Background_Service_Optimization T-Background_Service_Optimization

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

הערה: המערכת מטילה הגבלות שונות על שירותים שפועלים ברקע.

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

  • שמירה על חיבור לרשת כדי לקבל התראות
  • שמירה על חיבור Bluetooth
  • השארת ה-GPS מופעל

מידע נוסף מופיע במאמר סקירה כללית על משימות ברקע.

ביצועים ויציבות

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

ביצועים

מזהה בדיקות תיאור
App_Startup_Time T-App_Startup_Time האפליקציה נטענת במהירות או מספקת למשתמש משוב במסך (אינדיקטור התקדמות או רמז דומה) אם טעינת האפליקציה נמשכת יותר משתי שניות.
Rendering_Performance T-Rendering_Performance האפליקציה מעבדת פריימים כל 16 מילישניות (או פחות) כדי להציג לפחות 60 פריימים בשנייה. לקבלת עזרה בפתרון בעיות שקשורות לרינדור, אפשר לעיין במאמר בנושא רינדור איטי.
StrictMode_Compliance T-StrictMode_Compliance אם האפשרות StrictMode מופעלת (ראו את הקטע בנושא בדיקות StrictMode), לא יוצגו הבהובים אדומים (אזהרות ביצועים מ-StrictMode) במהלך בדיקת האפליקציה.

יציבות

מזהה בדיקות תיאור
Stability_ANR T-Stability_ANR האפליקציה לא קורסת או חוסמת את שרשור ה-UI וגורמת לשגיאות ANR (האפליקציה לא מגיבה ב-Android). כדאי להשתמש בדוח טרום-השקה של Google Play כדי לזהות בעיות פוטנציאליות ביציבות. אחרי הפריסה, עוקבים אחרי הדף Android Vitals ב-Google Play Console.

SDK

מזהה בדיקות תיאור
Android_Platform_Compatibility T-Android_Platform_Compatibility האפליקציה פועלת בגרסה הציבורית האחרונה של פלטפורמת Android בלי לקרוס או להשפיע באופן משמעותי על הפונקציונליות העיקרית.
Target_SDK_Version T-Target_SDK_Version האפליקציה מטרגטת את הגרסה האחרונה של Android SDK שנדרשת כדי לעמוד בדרישות של Google Play. לשם כך, צריך להגדיר את הערך targetSdk בקובץ build.gradle של מודול האפליקציה.
‫Compile_SDK_Version T-Target_SDK_Version האפליקציה נוצרה באמצעות Android SDK העדכני ביותר על ידי הגדרת הערך compileSdk בקובץ build.gradle של מודול האפליקציה.
SDK_Maintenance T-SDK_Maintenance,
T-Non_SDK_Interfaces

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

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

Non_SDK_Interfaces T-Non_SDK_Interfaces האפליקציה לא משתמשת בממשקים שאינם SDK.
Production_Build_Quality T-Production_Build_Quality לא נכללות ספריות ניפוי באגים באפליקציית הייצור. ספריות ניפוי באגים שנכללות באפליקציה עלולות לגרום לבעיות בביצועים ובאבטחה.

סוללה

מזהה בדיקות תיאור
Power_Management T-Power_Management

האפליקציה תומכת כראוי בתכונות לניהול צריכת חשמל נמנום ואפליקציה במצב המתנה.

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

פרטיות ואבטחה

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

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

הרשאות

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

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

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

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

נתונים וקבצים

מזהה בדיקות תיאור
Sensitive_Data_Storage T-Sensitive_Data_Storage,
T-Sensitive_Data_Handling
כל הנתונים הרגישים מאוחסנים באחסון הפנימי של האפליקציה.
Sensitive_Data_Logging T-Sensitive_Data_Logging לא מתבצע רישום ביומן של נתונים אישיים או רגישים של משתמשים ביומן המערכת או ביומן ספציפי לאפליקציה.
Hardware_IDs T-Hardware_IDs האפליקציה לא משתמשת במזהי חומרה שלא ניתן לאפס, כמו IMEI, למטרות זיהוי.

זהות

מזהה בדיקות תיאור
Autofill_Hints T-Autofill_Hints האפליקציה מספקת הצעות למילוי אוטומטי של פרטי כניסה לחשבון ומידע רגיש אחר, כמו פרטי כרטיס אשראי, כתובת ומספר טלפון.
Credential_Manager T-Credential_Manager האפליקציה משלבת את Credential Manager ל-Android כדי ליצור חוויית כניסה חלקה שמאחדת את התמיכה במפתחות גישה, בזהות מאוחדת ובסיסמאות.
Biometric_Authentication T-Biometric_Authentication האפליקציה תומכת באימות ביומטרי כדי להגן על טרנזקציות פיננסיות או על מידע רגיש, כמו מסמכים חשובים של המשתמש.

רכיבים באפליקציה

מזהה בדיקות תיאור
Component_Export T-Component_Export

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

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

Component_Permissions T-Component_Permissions

כל הכוונות והשידורים פועלים לפי השיטות המומלצות:

Component_Protection T-Component_Protection

כל הרכיבים שמשתפים תוכן בין אפליקציות משתמשים ב-android:protectionLevel="signature" עבור הרשאות מותאמות אישית. הם כוללים פעילויות, שירותים, מקלטי שידור, ובמיוחד ספקי תוכן.

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

רשתות

מזהה בדיקות תיאור
Network_Security_Traffic T-Network_Security_Traffic כל התעבורה ברשת נשלחת באמצעות SSL.
Network_Security_Configuration T-Network_Security_Configuration האפליקציה מצהירה על תצורה של אבטחת רשת.
Security_Provider_Initialization T-Security_Provider_Initialization אם האפליקציה משתמשת ב-Google Play Services, ספק האבטחה מאותחל בהפעלת האפליקציה.

רכיבי WebView

מזהה בדיקות תיאור
WebView_Asset_Loader T-WebView_Asset_Loader,
T-WebView_Navigation
אל תשתמשו ב-setAllowUniversalAccessFromFileURLs() כדי לגשת לתוכן מקומי. במקום זאת, צריך להשתמש ב-WebViewAssetLoader.
WebView_JavaScript T-WebView_JavaScript,
T-WebView_Navigation

תצוגות אינטרנט לא משתמשות ב-addJavaScriptInterface() עם תוכן לא מהימן.

ב-Android 6.0 (רמת API‏ 23 ומעלה), צריך להשתמש במקום זאת בערוצי הודעות HTML.

ביצוע

מזהה בדיקות תיאור
App_Bundles T-App_Bundles

האפליקציה לא טוענת באופן דינמי קוד ממקור חיצוני לחבילת ה-APK של האפליקציה. משתמשים ב-קובץ Android App Bundle, שכוללים את הפצת פיצ'רים ב-Play ו-Play Asset Delivery.

החל מאוגוסט 2021, חובה להשתמש ב-Android App Bundle בכל האפליקציות החדשות בחנות Google Play.

קריפטוגרפיה

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

Google Play

הפעלת האפשרות לפרסם את האפליקציה ב-Google Play.

מדיניות

מזהה בדיקות תיאור
Play_Content_Policies T-Play_Content_Policies האפליקציה עומדת בדרישות של מדיניות Google Play בנושא תוכן למפתחים, לא מציעה תוכן בלתי הולם ולא משתמשת בקניין רוחני או במותג של אחרים.
Play_Content_Rating T-Play_Content_Policies רמת הבגרות של האפליקציה מוגדרת בצורה מתאימה על סמך ההנחיות לסיווג תוכן.

דף פרטי האפליקציה

מזהה בדיקות תיאור
Play_Feature_Graphic T-Play_Feature_Graphic,
T-Play_Graphic_Assets

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

  • דף האפליקציה בחנות כולל גרפיקה של פריט באיכות גבוהה
  • הגרפיקה של פריט לא מכילה תמונות של מכשירים, צילומי מסך או טקסט קטן שלא ניתן לקרוא אותו כשמצמצמים את גודל התמונה ומציגים אותה במסך הקטן ביותר שהאפליקציה מיועדת לו
  • הגרפיקה של הפריט לא דומה למודעה
Play_Device_References T-Play_Graphic_Assets צילומי המסך והסרטונים של האפליקציה לא מציגים מכשירים שאין בהם מערכת Android ולא מפנים אליהם.
Play_Misleading_Content T-Play_Graphic_Assets צילומי המסך או הסרטונים של האפליקציה לא מציגים את התוכן ואת חוויית השימוש באפליקציה בצורה מטעה.

תמיכה למשתמשים

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

סביבת בדיקה

מגדירים סביבת בדיקה באופן הבא:

  • בדיקה באמצעות אמולטור: אמולטור Android הוא דרך מצוינת לבדוק את האפליקציה בגרסאות שונות של Android וברזולוציות מסך שונות. כדאי להגדיר מכשירים מדומיים (AVD) כדי לייצג את גורמי הצורה הנפוצים ביותר ואת השילובים של חומרה/תוכנה עבור בסיס המשתמשים שלכם. כדאי לבדוק מגוון של גורמי צורה באמצעות האמולטורים הבאים (לפחות):

    • טלפונים מתקפלים: מסך פנימי בגודל 7.6 אינץ' עם מסך חיצוני (מופיע בקטע 'טלפונים' בכלי AVD Manager)
    • טאבלט: Pixel C‏ 9.94"‏ (‎2,560px x 1,800px)
    • בדיקת התראות באפליקציה לנייד: התאמה של מכשיר נייד או אמולטור לאמולטור Wear OS: Wear OS Round 1.84"
  • מכשירי חומרה: סביבת הבדיקה צריכה לכלול מספר קטן של מכשירי חומרה בפועל שמייצגים את גורמי הצורה העיקריים ואת השילובים של חומרה ותוכנה שזמינים לצרכנים. לא צריך לבדוק את האפליקציה בכל מכשיר שקיים בשוק. מומלץ להתמקד במספר קטן של מכשירים מייצגים, ואפילו להשתמש במכשיר אחד או שניים לכל גורם צורה.

  • מעבדות לבדיקת מכשירים: אפשר גם להשתמש בשירותים של צד שלישי, כמו Firebase Test Lab, כדי לבדוק את האפליקציה במגוון רחב של מכשירים.

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

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

StrictMode

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

מגדירים מדיניות ניטור לכל שרשור באמצעות StrictMode.ThreadPolicy.Builder ומפעילים את כל אפשרויות הניטור הנתמכות ב-ThreadPolicy באמצעות detectAll().

הפעלת התראה חזותית על הפרות מדיניות עבור ThreadPolicy באמצעות penaltyFlashScreen().

בדיקות

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

חוויית משתמש

חשוב לבדוק אם חוויית המשתמש עקבית ואינטואיטיבית.

נוחות השימוש

מזהה תכונה תיאור
T-Consistent_UX Consistent_UX

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

מבצעים את הפעולות הבאות:
  • אם האפליקציה מאפשרת עריכה או יצירת תוכן, משחק או הפעלת מדיה, חשוב לבדוק את התהליכים האלה.
  • במהלך בדיקת האפליקציה, כדאי ליצור הפרעות מאפליקציות אחרות, כמו קבלת התראה או שיחת טלפון, ולבצע שינויים זמניים במאפייני המכשיר, כמו קישוריות לרשת, פעולת הסוללה, זמינות GPS ועומס המערכת.
  • הזנה ובדיקה של כל תהליכי הרכישה באפליקציה
T-App_Switcher App_Switcher מכל מסך של אפליקציה, עוברים לאפליקציה אחרת שפועלת, ואז חוזרים לאפליקציה שנבדקת באמצעות הממשק למעבר בין אפליקציות האחרונות.
T-Sleep_Resume Sleep_Resume לוחצים על לחצן ההפעלה כדי להעביר את המכשיר למצב שינה, ואז לוחצים שוב על לחצן ההפעלה כדי להוציא את המסך ממצב שינה.
T-Lock_Resume Lock_Resume מגדירים נעילת מסך במכשיר. לוחצים על לחצן ההפעלה כדי להעביר את המכשיר למצב שינה (שגורם לנעילת המכשיר). אחר כך לוחצים שוב על כפתור ההפעלה כדי להוציא את המסך ממצב שינה ולבטל את נעילת המכשיר.

כרטיס SD

מזהה תכונה תיאור
T-SD_Card Consistent_UX

ביצוע בדיקות של הפונקציונליות העיקרית כשהאפליקציה מותקנת בכרטיס SD של המכשיר (אם האפליקציה תומכת בשיטת ההתקנה הזו).

כדי להעביר את האפליקציה לכרטיס SD, צריך לעיין בהגדרות האפליקציה.

ממשק משתמש

מזהה תכונה תיאור
T-Orientation_Transitions Display_State_Parity,‏
Fullscreen_Display,‏
Orientation_Transitions

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

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

איכות חזותית

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

בודקים את כל בלוקי הטקסט באפליקציה. מוודאים שאורך השורה של הטקסט ושל בלוק הטקסט מוגבל ל-45 עד 75 תווים (כולל רווחים) כדי שהטקסט יהיה קריא.

מוודאים את הפרטים הבאים:
  • הקומפוזיציה מקובלת בכל גורמי הצורה הנתמכים
  • אין אותיות או מילים חתוכות
  • אין מעברי שורה לא תקינים בתוך לחצנים או סמלים
  • יש מספיק רווח בין הטקסט לבין האלמנטים שמסביב
T-Theme_Support Theme_Support מוודאים שכל הטקסט קריא בעיצוב בהיר ובעיצוב כהה. מוודאים שכל הרכיבים החזותיים נראים בבירור ונעימים לעין גם במצב בהיר וגם במצב כהה.
מזהה תכונה תיאור
T-Back_Nav Back_Button_Nav,
Back_Gesture_Nav

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

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

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

התראות

מזהה תכונה תיאור
T-Notification_Quality Notification_Quality,
Conversation_Quality
מפעילים את כל סוגי ההתראות שהאפליקציה יכולה להציג ומסתכלים על מגירת ההתראות. מרחיבים את ההתראות כשזה רלוונטי (Android 4.1 ואילך), ומקישים על כל הפעולות הזמינות.

נגישות

מזהה תכונה תיאור
T-Touch_Target_Size Touch_Target_Size מוודאים שמשטחי המגע שומרים על גודל ומיקום עקביים ונגישים בכל הגדלים והתצורות של המסך. מידע על נגישות זמין במאמר בנושא Accessibility Scanner.
T-Visual_Contrast Visual_Contrast בודקים את הניגודיות של כל הרכיבים החזותיים.
T-Content_Description Content_Description מוודאים שלכל הרכיבים בממשק המשתמש, מלבד TextView, יש תיאורי תוכן.

הפונקציונליות

צריך לוודא שהאפליקציה מיישמת את ההתנהגות הפונקציונלית הבאה.

אודיו

מזהה תכונה תיאור
T-Audio_Playback_Start Audio_Playback_Start מתחילים את הפעלת האודיו. מוודאים שבתוך שנייה אחת האפליקציה מתחילה להפעיל את האודיו או מספקת אינדיקטור ויזואלי לכך שנתוני האודיו מוכנים להפעלה.
T-Audio_Focus_Request Audio_Focus_Request מתחילים את הפעלת האודיו. האפליקציה צריכה לבקש הרשאת אודיו. כשמפסיקים את השמעת האודיו, האפליקציה צריכה לוותר על מיקוד האודיו (זה קורה באופן אוטומטי באפליקציות שמטרגטות Android 12 (רמת API‏ 31) ומעלה).
T-Audio_Focus_Change Audio_Focus_Change מתחילים את הפעלת האודיו. מתחילים להפעיל אודיו באפליקציה אחרת. האפליקציה שלכם צריכה להגיב לשינוי בהרשאת האודיו ולהפסיק את הפעלת האודיו או להנמיך את עוצמת הקול של האודיו.
T-Audio_Playback_Background Audio_Playback_Background

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

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

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

וידאו

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

שיתוף

מזהה תכונה תיאור
T-System_Sharesheet System_Sharesheet יוצרים כוונה ומתחילים פעילות על ידי קריאה ל-startActivity() עם הכוונה כארגומנט. איך משתמשים בקובץ לשיתוף ב-Android האפליקציה צריכה להציג את הקובץ לשיתוף ב-Android.

שירותים ברקע

מזהה תכונה תיאור
T-Background_Service_Optimization Background_Service_Optimization

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

עוברים לאפליקציה אחרת כדי להעביר את האפליקציה לרקע. עוברים אל הגדרות ובודקים אם יש באפליקציה שירותים שפועלים ברקע. ב-Android מגרסה 4.0 ואילך, עוברים למסך Apps (אפליקציות) ומחפשים את האפליקציה בכרטיסייה Running (פועלות).

ביצועים ויציבות

בודקים את הביצועים, היציבות והתצוגה החזותית המושלמת.

ביצועים

מזהה תכונה תיאור
T-App_Startup_Time App_Startup_Time מפעילים את האפליקציה. מוודאים שהאפליקציה נטענת במהירות או שמסופק בה אינדיקטור התקדמות או רמז דומה אם טעינת האפליקציה נמשכת יותר משתי שניות.
T-Rendering_Performance Rendering_Performance להשתמש בכל התכונות העיקריות של האפליקציה. לוודא שהאפליקציה מעבדת לפחות 60 פריימים לשנייה. אפשר להשתמש באפשרות עיבוד פרופיל ב-HWUI כדי לבדוק את האפליקציה.
T-StrictMode_Compliance StrictMode_Compliance

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

חשוב לשים לב במיוחד ל-garbage collection ולהשפעה שלו על חוויית המשתמש.

יציבות

מזהה תכונה תיאור
T-Stability_ANR Stability_ANR משתמשים בכל התכונות העיקריות של האפליקציה. מוודאים שהאפליקציה לא קורסת או חוסמת את שרשור ה-UI וגורמת לשגיאות ANR (האפליקציה לא מגיבה) ב-Android. כדאי לעיין בדוח טרום-השקה ב-Google Play כדי לזהות בעיות יציבות פוטנציאליות.

SDK

מזהה תכונה תיאור
T-Android_Platform_Compatibility Android_Platform_Compatibility להפעיל את האפליקציה בגרסה הציבורית האחרונה של פלטפורמת Android. שימוש בכל התכונות העיקריות. מוודאים שהאפליקציה לא קורסת ופועלת בלי לפגוע בפונקציונליות העיקרית שלה.
T-Target_SDK_Version Target_SDK_Version,‏
Compile_SDK_Version
בודקים את קובץ המניפסט של Android ואת הגדרות ה-build כדי לוודא שהאפליקציה נוצרה על בסיס הגרסה העדכנית ביותר של ה-SDK (targetSdk ו-compileSdk).
T-SDK_Maintenance SDK_Maintenance בודקים אם יש תלויות לא מעודכנות בקובץ build.gradle של האפליקציה.
T-Non_SDK_Interfaces Non_SDK_Interfaces כדי לזהות שימוש בממשק שאינו SDK, אפשר להשתמש בכלי ה-lint של Android Studio. לשיטות בדיקה חלופיות, אפשר לעיין במאמר בנושא הגבלות על ממשקים שאינם SDK.
T-Production_Build_Quality Production_Build_Quality בודקים אם קיימות ספריות ניפוי באגים בקובץ build.gradle של האפליקציה.

סוללה

מזהה תכונה תיאור
T-Power_Management Power_Management

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

בודקים את ההתנהגות של נמנום ושל אפליקציה במצב המתנה באמצעות פקודות adb (הדרישות וההנחיות מפורטות במאמר בדיקה באמצעות נמנום ו-אפליקציה במצב המתנה).

כדי לאבחן התרוקנות סוללה לא צפויה, אפשר להשתמש בכלי Power Profiler של Android Studio או בכלי Battery Historian בשילוב עם עבודה מתוכננת ברקע.

פרטיות ואבטחה

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

הרשאות

מזהה תכונה תיאור
T-Minimize_Permissions Minimize_Permissions בודקים את כל ההרשאות שהאפליקציה דורשת, בקובץ המניפסט, בזמן הריצה ובהגדרות האפליקציה במכשיר (הגדרות > פרטי האפליקציה).
T-Sensitive_Permissions Sensitive_Permissions משתמשים בתכונות של האפליקציה שמבקשות הרשאות. מוודאים שהאפליקציה מבקשת הרשאה לגשת למידע אישי רגיש או לשירותים רק בתרחישי שימוש מרכזיים באפליקציה. מוודאים שההשלכות של מתן הרשאה למידע אישי רגיש ולשירותים רגישים מוסברות למשתמש בצורה ברורה.
T-Runtime_Permissions Runtime_Permissions משתמשים בכל התכונות באפליקציה שדורשות הרשאות. מוודאים שההרשאות מתבקשות בצורה עצלה, כלומר רק כשניגשים לתכונות, ולא במהלך הפעלת האפליקציה.
T-Permission_Rationale Permission_Rationale משתמשים בכל התכונות באפליקציה שדורשות הרשאות. מוודאים שהאפליקציה מסבירה למשתמש למה נדרשות ההרשאות.
T-Graceful_Degradation Graceful_Degradation משתמשים בכל התכונות באפליקציה שדורשות הרשאות. דוחים או מבטלים את ההרשאות. מוודאים שהאפליקציה מספקת תרחיש שימוש חלופי וממשיכה לפעול.

נתונים וקבצים

מזהה תכונה תיאור
T-Sensitive_Data_Storage Sensitive_Data_Storage בודקים את כל הנתונים שמאוחסנים באחסון הפנימי. מוודאים שהנתונים שמאוחסנים מחוץ לארגון לא מכילים מידע אישי רגיש.
T-Sensitive_Data_Handling Sensitive_Data_Storage בודקים איך המערכת מטפלת בנתונים שנטענים מאחסון חיצוני ומעבדת אותם.
T-Sensitive_Data_Logging Sensitive_Data_Logging משתמשים בכל התכונות העיקריות של האפליקציה תוך כדי מעקב אחרי קובץ יומן במכשיר. מוודאים שלא מתבצע רישום ביומן של מידע פרטי על המשתמשים.
T-Hardware_IDs Hardware_IDs שימוש בכל התכונות העיקריות של האפליקציה. מוודאים שהאפליקציה לא משתמשת במזהי חומרה כמו IMEI למטרות זיהוי.

זהות

מזהה תכונה תיאור
T-Autofill_Hints Autofill_Hints שימוש בכל התכונות של האפליקציה שדורשות קלט של משתמשים. מוודאים שהאפליקציה מספקת רמזים למילוי אוטומטי של שדות קלט לנתונים כמו פרטי כניסה לחשבון ומידע רגיש אחר.
T-Credential_Manager Credential_Manager נכנסים לאפליקציה ומוודאים שהיא משתמשת ב-Credential Manager for Android כדי לאפשר כניסה באמצעות מפתחות גישה, זהות מאוחדת וסיסמאות.
T-Biometric_Authentication Biometric_Authentication להשתמש בכל התכונות של האפליקציה שדורשות אימות. צריך לוודא שהאפליקציה מגנה על טרנזקציות פיננסיות או על מידע רגיש, כמו מסמכים חשובים של משתמשים, באמצעות אימות ביומטרי.

רכיבים באפליקציה

מזהה תכונה תיאור
T-Component_Export Component_Export בודקים את כל רכיבי האפליקציה שמוגדרים בקובץ המניפסט של Android כדי לוודא שהם מוגדרים למצב הייצוא המתאים. צריך להגדיר במפורש את המאפיין exported לכל הרכיבים.
T-Component_Permissions Component_Permissions צריך לבדוק את כל ההרשאות שהאפליקציה דורשת בקובץ המניפסט, בזמן הריצה ובהגדרות האפליקציה במכשיר (הגדרות > פרטי האפליקציה).
T-Component_Protection Component_Protection בודקים את כל ספקי התוכן שמוגדרים בקובץ המניפסט של Android. מוודאים שלכל ספק יש protectionLevel מתאים.

רשתות

מזהה תכונה תיאור
T-Network_Security_Traffic Network_Security_Traffic מצהירים על תצורה של אבטחת רשת שמשביתה תנועה שאינה מוצפנת, ואז בודקים את האפליקציה.
T-Network_Security_Configuration Network_Security_Configuration בודקים את הגדרות אבטחת הרשת של האפליקציה. מוודאים שכל בדיקות ה-lint בהגדרה עוברות בהצלחה.
T-Security_Provider_Initialization Security_Provider_Initialization מוודאים שספק האבטחה מאותחל בהפעלת האפליקציה בשירותי Google Play.

רכיבי WebView

מזהה תכונה תיאור
T-WebView_Asset_Loader WebView_Asset_Loader בודקים את הגדרות אבטחת הרשת של האפליקציה. מוודאים שכל בדיקות ה-lint בהגדרה עוברות בהצלחה.
T-WebView_JavaScript WebView_JavaScript לכל WebView, עוברים לדף שנדרש בו JavaScript.
T-WebView_Navigation WebView_Asset_Loader,
WebView_JavaScript
בכל WebView, מנסים לנווט לאתרים ולתוכן שלא נטענים ישירות על ידי האפליקציה.

ביצוע

מזהה תכונה תיאור
T-App_Bundles App_Bundles מוודאים שהאפליקציה משתמשת בקובצי Android App Bundle ולא טוענת קוד באופן דינמי מחוץ ל-APK של האפליקציה.

קריפטוגרפיה

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

Google Play

מוודאים שהאפליקציה מוכנה לפרסום ב-Google Play.

מדיניות

מזהה תכונה תיאור
T-Play_Content_Policies Play_Content_Policies,
Play_Content_Rating,
Play_User_Reviews
נכנסים אל Google Play Console כדי לבדוק את פרופיל המפתח, תיאור האפליקציה, צילומי המסך, גרפיקה של פריט, סיווג התוכן ומשוב המשתמשים.

דף פרטי האפליקציה

מזהה תכונה תיאור
T-Play_Feature_Graphic Play_Feature_Graphic מורידים את הגרפיקה של פריט ואת צילומי המסך, ומקטינים אותם כך שיתאימו לגדלי המסכים במכשירים ובגורמי הצורה שמטרגטים.
T-Play_Graphic_Assets Play_Feature_Graphic,
Play_Device_References,
Play_Misleading_Content
בודקים את כל הנכסים הגרפיים, המדיה, הטקסט, ספריות הקוד ותכנים אחרים שנכללים בחבילת האפליקציה או בהורדה של קובץ ההרחבה.

העברה לארכיון

גרסאות קודמות של הנחיות האיכות העיקריות לאפליקציות: