כדי ליצור בסיס מוצק לאפליקציה איכותית, צריך לפעול לפי ההנחיות הבסיסיות לאיכות האפליקציה.
ההנחיות מגדירות את האיכות המינימלית שכל האפליקציות צריכות לעמוד בה.
איכות האפליקציה האדפטיבית
אפליקציות ל-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 |
הטקסט והתוכן בחזית של האפליקציה שומרים על יחסי הניגודיות הבאים עם הרקע של האפליקציה:
|
| 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 |
האפליקציה לא מפעילה שירותים ארוכים שלא לצורך ברקע כדי להבטיח שהמכשיר של המשתמש יפעל בצורה חלקה. הערה: המערכת מחילה הגבלות שונות על שירותים שפועלים ברקע. הנה כמה דוגמאות לשימוש לא נכון בשירותים שפועלים ברקע:
מידע נוסף זמין במאמר סקירה כללית של משימות ברקע. |
ביצועים ויציבות
האפליקציה צריכה לספק ביצועים, יציבות, תאימות ורספונסיביות אופטימליים.
ביצועים
| מזהה | בדיקות | תיאור |
|---|---|---|
| App_Startup_Time | T-App_Startup_Time | האפליקציה נטענת במהירות או מספקת למשתמש משוב במסך (אינדיקטור התקדמות או רמז דומה) אם טעינת האפליקציה נמשכת יותר משתי שניות. |
| Rendering_Performance | T-Rendering_Performance | האפליקציה מעבדת פריימים כל 16 אלפיות השנייה (או פחות) כדי להציג לפחות 60 FPS. לקבלת עזרה בפתרון בעיות ברינדור, אפשר לעיין במאמר רינדור איטי. |
| StrictMode_Compliance | T-StrictMode_Compliance | כשהתכונה StrictMode מופעלת (ראו את הקטע בנושא בדיקת StrictMode), לא מופיעים הבזקים אדומים (אזהרות לגבי ביצועים מ-StrictMode) במהלך בדיקת האפליקציה. |
יציבות
| מזהה | בדיקות | תיאור |
|---|---|---|
| Stability_ANR | T-Stability_ANR | האפליקציה לא קורסת או חוסמת את שרשור ה-UI, מה שגורם לשגיאות ANR (האפליקציה לא מגיבה). אפשר להשתמש בדוח טרום-השקה של Google Play כדי לזהות בעיות פוטנציאליות ביציבות. אחרי הפריסה, עוקבים אחרי הדף תפקוד האפליקציה ב-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 האלה תואמות לדורות קודמים, מקבלות עדכונים אוטומטיים, מקטינות את גודל חבילת ה-APK של האפליקציה ומשתמשות ביעילות במשאבים במכשיר. |
| Non_SDK_Interfaces | T-Non_SDK_Interfaces | האפליקציה לא משתמשת בממשקים שאינם SDK. |
| Production_Build_Quality | T-Production_Build_Quality | אין ספריות ניפוי באגים באפליקציה בסביבת הייצור. ספריות ניפוי באגים שנכללות באפליקציה עלולות לגרום לבעיות בביצועים ובאבטחה. |
סוללה
| מזהה | בדיקות | תיאור |
|---|---|---|
| Power_Management | T-Power_Management |
האפליקציה תומכת כראוי בתכונות ניהול צריכת החשמל Doze ואפליקציה במצב המתנה. אפליקציות יכולות לבקש פטור מתחזוקת צריכת החשמל. אפשר לעיין בקטע תמיכה בתרחישים אחרים לדוגמה במאמר אופטימיזציה למצב חיסכון בסוללה ולאפליקציה במצב המתנה. |
פרטיות ואבטחה
האפליקציה מטפלת בנתוני משתמשים ובמידע אישי באופן בטוח ומספקת רמות הרשאה מתאימות.
אפליקציות שמתפרסמות בחנות Google Play צריכות גם לפעול בהתאם למדיניות של Google Play בנושא נתוני משתמשים כדי להגן על פרטיות המשתמשים.
הרשאות
| מזהה | בדיקות | תיאור |
|---|---|---|
| Minimize_Permissions | T-Minimize_Permissions | האפליקציה מבקשת רק את ההרשאות המינימליות שנדרשות כדי לתמוך בתרחיש לדוגמה הנוכחי. בהרשאות מסוימות, כמו מיקום, האפליקציה משתמשת במפרט משוער במקום מדויק, אם אפשר. צמצום בקשות ההרשאה |
| Sensitive_Permissions | T-Sensitive_Permissions |
האפליקציה מבקשת הרשאה לגשת לנתונים רגישים (כמו קבוצות ההרשאות "SMS" או "יומן שיחות" או מיקום) או לשירותים שעולים כסף (כמו חייגן או SMS) רק כשהם קשורים ישירות לתרחישי השימוש העיקריים של האפליקציה. חובה להציג למשתמשים גילוי נאות במקום בולט לגבי ההשלכות של ההרשאות האלה. בהתאם לאופן שבו האפליקציה משתמשת בהרשאות, יכול להיות שיש דרך חלופית למלא את תרחיש השימוש של האפליקציה בלי להסתמך על גישה למידע רגיש. לדוגמה, במקום לבקש הרשאות שקשורות לאנשי הקשר של המשתמש, אפשר להשתמש בכוונה משתמעת כדי לבקש גישה. |
| 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, למטרות זיהוי. |
גיבוי ושחזור נתונים
| מזהה | בדיקות | תיאור |
|---|---|---|
| App_Data_Backup | T-App_Data_Backup |
האפליקציה שומרת את נתוני המשתמש, ההגדרות ומצב האפליקציה בגיבויים בענן ובהעברות ממכשיר למכשיר (D2D). מטמיעים גיבוי אוטומטי ומגדירים את |
| App_Logins_Restoration | T-App_Logins_Restoration |
האפליקציה משחזרת באופן אוטומטי את חשבונות המשתמשים ואת מצב הכניסה כשהמשתמש מגדיר מכשיר חדש. מטמיעים את שחזור פרטי הכניסה באמצעות Credential Manager כדי לאמת מחדש את המשתמשים באופן אוטומטי, בלי לאלץ אותם להתחבר ידנית או לעבור תהליכים של שחזור חשבון. |
זהות
| מזהה | בדיקות | תיאור |
|---|---|---|
| Autofill_Hints | T-Autofill_Hints | האפליקציה מספקת רמזים למילוי אוטומטי של פרטי כניסה לחשבון ומידע רגיש אחר, כמו פרטי כרטיס אשראי, כתובת פיזית ומספר טלפון. |
| Credential_Manager | T-Credential_Manager | האפליקציה משלבת את Credential Manager ל-Android כדי לספק חוויית כניסה חלקה שמאחדת את התמיכה במפתחות גישה, בזהות מאוחדת ובסיסמאות. |
| Biometric_Authentication | T-Biometric_Authentication | האפליקציה תומכת באימות ביומטרי כדי להגן על עסקאות פיננסיות או על מידע רגיש, כמו מסמכים חשובים של המשתמשים. |
רכיבי האפליקציה
| מזהה | בדיקות | תיאור |
|---|---|---|
| Component_Export | T-Component_Export |
האפליקציה מגדירה את המאפיין רק רכיבים באפליקציה שמשתפים נתונים עם אפליקציות אחרות, או רכיבים שאפליקציות אחרות צריכות להפעיל, מיוצאים. |
| Component_Permissions | T-Component_Permissions |
כל ה-intents וה-broadcasts פועלים לפי השיטות המומלצות:
|
| Component_Protection | T-Component_Protection |
כל הרכיבים שמשתפים תוכן בין אפליקציות משתמשים ב- האפליקציות לא צריכות להסתמך על גישה לרשימה של חבילות מותקנות. |
Networking
| מזהה | בדיקות | תיאור |
|---|---|---|
| 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 |
תצוגות אינטרנט לא משתמשות ב- ב-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 אינץ' עם מסך חיצוני (האפשרות הזו מופיעה בקטע Phones ב-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 כדי לזהות פעולות שעלולות להשפיע על הביצועים, על הגישה לרשת ועל קריאה וכתיבה של קבצים. חפשו פעולות שעלולות להיות בעייתיות גם ב-thread הראשי וגם ב-threads אחרים.
מגדירים מדיניות מעקב לכל שרשור באמצעות StrictMode.ThreadPolicy.Builder ומפעילים את כל המעקבים הנתמכים ב-ThreadPolicy באמצעות detectAll().
מפעילים התראה חזותית על הפרות מדיניות ב-ThreadPolicy באמצעות penaltyFlashScreen().
בדיקות
הבדיקות הבסיסיות של איכות האפליקציה עוזרות לכם להעריך את האיכות הבסיסית של האפליקציה. אתם יכולים לשלב את הבדיקות או לשלב קבוצות של בדיקות יחד בתוכנית הבדיקה שלכם.
חוויית משתמש
בודקים שחוויית המשתמש עקבית ואינטואיטיבית.
נוחות השימוש
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Consistent_UX | Consistent_UX |
עוברים לכל החלקים של האפליקציה – כל המסכים, תיבות הדו-שיח, ההגדרות וכל מסלולי המשתמש. מבצעים את הפעולות הבאות:
|
| 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 |
בכל מסך של האפליקציה, מסובבים את המכשיר בין פריסה לרוחב ולאורך ובין מצב מקופל ופתוח לפחות שלוש פעמים. מוודאים שהאפליקציה מבצעת את הפעולות הבאות:
|
איכות חזותית
| מזהה | תכונה | תיאור |
|---|---|---|
| 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 | יוצרים Intent ומתחילים פעילות על ידי קריאה ל-startActivity() עם ה-Intent כארגומנט. איך משתמשים בקובץ לשיתוף ב-Android האפליקציה אמורה להציג את הקובץ לשיתוף ב-Android. |
שירותים הפועלים ברקע
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Background_Service_Optimization | Background_Service_Optimization | משתמשים בכל התכונות העיקריות של האפליקציה. מוודאים שלא מופעלים שירותים שפועלים ברקע לאורך זמן. עוברים לאפליקציה אחרת כדי להעביר את האפליקציה לרקע. עוברים אל הגדרות ובודקים אם יש באפליקציה שירותים שפועלים ברקע. ב-Android מגרסה 4.0 ואילך, עוברים למסך אפליקציות ומחפשים את האפליקציה בכרטיסייה פועלות. |
ביצועים ויציבות
בודקים את הביצועים, היציבות והאיכות של הרכיבים החזותיים.
ביצועים
| מזהה | תכונה | תיאור |
|---|---|---|
| T-App_Startup_Time | App_Startup_Time | מפעילים את האפליקציה. מוודאים שהאפליקציה נטענת במהירות או מציגה אינדיקטור התקדמות או רמז דומה אם הטעינה של האפליקציה נמשכת יותר משתי שניות. |
| T-Rendering_Performance | Rendering_Performance | השתמשו בכל התכונות העיקריות של האפליקציה. ודאו שהאפליקציה מעבדת לפחות 60 FPS. כדי לבדוק את האפליקציה, אפשר להשתמש באפשרות עיבוד פרופיל HWUI. |
| T-StrictMode_Compliance | StrictMode_Compliance |
מפעילים את חשוב לשים לב לאיסוף האשפה ולהשפעה שלו על חוויית המשתמש. |
יציבות
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Stability_ANR | Stability_ANR | משתמשים בכל התכונות העיקריות של האפליקציה. מוודאים שהאפליקציה לא קורסת או חוסמת את שרשור ה-UI, מה שגורם לשגיאות ANR (האפליקציה לא מגיבה). כדאי לעיין בדוח טרום-ההשקה של 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 (הדרישות וההנחיות מפורטות במאמר בדיקה באמצעות מצב חיסכון בסוללה ואפליקציה במצב המתנה). כדי לאבחן התרוקנות לא צפויה של הסוללה, אתם יכולים להשתמש ב-Android Studio Power Profiler או בכלי 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-App_Data_Backup | App_Data_Backup |
להגדיר העדפות מקומיות, מסדי נתונים והגדרות של אפליקציות במכשיר הראשי. מבצעים גיבוי בענן או העברה ממכשיר למכשיר (D2D) למכשיר חדש. אחרי ההעברה, מפעילים את האפליקציה במכשיר היעד ומוודאים שההעדפות המקומיות, מצב מסד הנתונים והגדרות המשתמש שוחזרו בצורה מדויקת בהתאם לכללי הגיבוי האוטומטי. במאמר בדיקת הגיבוי והשחזור מפורטים תהליכי הבדיקה. |
| T-App_Logins_Restoration | App_Logins_Restoration |
מגדירים סשן מחובר במכשיר הראשי באמצעות מפתחות גישה, סיסמאות או כניסה באמצעות חשבון Google. מבצעים גיבוי בענן או העברה ממכשיר למכשיר (D2D) למכשיר חדש. מפעילים את האפליקציה במכשיר היעד אחרי ההעברה ומוודאים שהאימות משוחזר באופן אוטומטי באמצעות "שחזור פרטי הכניסה", בלי להציג מסכי כניסה או לדרוש שחזור חשבון. במאמר בדיקת התכונה "שחזור פרטי הכניסה" מוסבר איך לבדוק את התכונה. |
זהות
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Autofill_Hints | Autofill_Hints | השתמשו בכל התכונות של האפליקציה שדורשות קלט מהמשתמש. מוודאים שהאפליקציה מספקת רמזים למילוי אוטומטי של שדות להזנת קלט של נתונים כמו פרטי כניסה לחשבון ומידע רגיש אחר. |
| T-Credential_Manager | Credential_Manager | נכנסים לאפליקציה. מוודאים שהאפליקציה משלבת את Credential Manager ל-Android כדי לספק חוויית כניסה שמאחדת את התמיכה במפתחות גישה, בזהות מאוחדת ובסיסמאות. |
| T-Biometric_Authentication | Biometric_Authentication | להשתמש בכל התכונות של האפליקציה שדורשות אימות. מוודאים שהאפליקציה מגינה על עסקאות פיננסיות או על מידע רגיש, כמו מסמכי משתמש חשובים, באמצעות אימות ביומטרי. |
רכיבי האפליקציה
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Component_Export | Component_Export | בודקים את כל הרכיבים באפליקציה שמוגדרים בקובץ המניפסט של Android כדי לוודא שמצב הייצוא מתאים. צריך להגדיר את המאפיין המיוצא באופן מפורש לכל הרכיבים. |
| T-Component_Permissions | Component_Permissions | בודקים את כל ההרשאות שהאפליקציה דורשת בקובץ המניפסט, בזמן הריצה ובהגדרות האפליקציה במכשיר (הגדרות > פרטי האפליקציה). |
| T-Component_Protection | Component_Protection | בודקים את כל הספקים לניהול גישה שמוגדרים בקובץ המניפסט של Android. חשוב לוודא שלכל ספק יש protectionLevel מתאים. |
Networking
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Network_Security_Traffic | Network_Security_Traffic | מצהירים על הגדרת אבטחת רשת שמשביתה תנועה של טקסט לא מוצפן, ואז בודקים את האפליקציה. |
| T-Network_Security_Configuration | Network_Security_Configuration | בודקים את הגדרות אבטחת הרשת של האפליקציה. מוודאים שאין שגיאות בבדיקות ה-lint של ההגדרות. |
| T-Security_Provider_Initialization | Security_Provider_Initialization | מוודאים שספק האבטחה מאותחל בהפעלת האפליקציה של Google Play Services. |
רכיבי 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 |
בודקים את כל הנכסים הגרפיים, המדיה, הטקסט, ספריות הקוד ותכנים אחרים שנכללים באפליקציה או בקובץ ההרחבה להורדה. |
העברה לארכיון
גרסאות קודמות של הנחיות האיכות הבסיסיות לאפליקציות: