הצלחה לטווח ארוך של האפליקציה מבחינת מספר ההתקנות והביקורות של המשתמשים, מידת המעורבות ושימור המשתמשים.
כדי ליצור בסיס מוצק לאפליקציה איכותית, כדאי לפעול לפי ההנחיות העיקריות לגבי איכות האפליקציה.
ההנחיות מגדירות את האיכות המינימלית שכל האפליקציות צריכות לעמוד בה.
איכות אפליקציה דינמית
אפליקציות ל-Android פועלות במגוון רחב של מכשירים – החל מטלפונים קומפקטיים ועד טאבלטים, מכשירים מתקפלים, מחשבים, מסכים מחוברים, מערכות מידע ובידור ברכב, טלוויזיות ומכשירי XR. מצבי חלונות כמו מסך מפוצל וממשק מחשב מאפשרים להריץ אפליקציות בחלקים בגודל משתנה של המסך.
כדי לעמוד בדרישות של איכות אפליקציה אדפטיבית, צריך לפעול לפי ההנחיות האלה בנוסף להנחיות האיכות הבסיסיות של האפליקציה:
- יצירת אפליקציות שעברו אופטימיזציה לכל גורמי הצורה ולכל גדלי המסך
- שיפור הדירוג של האפליקציות בתוצאות החיפוש ובדפי האפליקציה ב-Google Play
- איך מושכים יותר משתמשים ומשפרים את שימור המשתמשים
הנחיות
ההנחיות הבסיסיות הבאות יעזרו לכם לפתח אפליקציה בסיסית ואיכותית.
חוויית משתמש
האפליקציה צריכה לספק עיצוב חזותי ודפוסי אינטראקציה סטנדרטיים של Android, כדי להבטיח חוויית משתמש עקבית ואינטואיטיבית.
כדאי להשתמש ברכיבי Material Design כדי ליצור את ממשק המשתמש של האפליקציה במקום ברכיבי פלטפורמת Android, איפה שאפשר. Material Design מספק מראה ותחושה מודרניים של Android, וגם עקביות בממשק המשתמש בכל גרסאות Android.
| מזהה | בדיקות | תיאור |
|---|---|---|
| נוחות השימוש | ||
| נוחות השימוש:UX | T-Usability:Core, T-SD-Card |
האפליקציה מספקת חוויית משתמש עקבית לכל התרחישים לדוגמה של השימוש באפליקציה בכל גורמי הצורה. |
| נוחות השימוש:Switcher | T-Usability:Switcher, T-SD-Card |
האפליקציה עוברת לרקע כשהמיקוד עובר לאפליקציה אחרת. האפליקציה חוזרת לחזית כשהיא מופעלת מחדש מתוך מחליף האפליקציות האחרונות. |
| נוחות השימוש:שינה | T-Usability:Sleep, T-SD-Card |
כשהאפליקציה היא האפליקציה בחזית, היא מושהית כשהמכשיר עובר למצב שינה ומופעלת מחדש כשהמכשיר יוצא ממצב שינה. |
| נוחות השימוש:נעילה | T-Usability:Lock, T-SD-Card |
כשהאפליקציה פועלת בחזית, היא מושהית כשהמכשיר נעול ומופעלת מחדש כשהמכשיר לא נעול. |
| ממשק משתמש | ||
| ממשק משתמש:שוויון | T-UI:Transitions |
ההגדרות של כיווני התצוגה ומצבי הקיפול חושפות למעשה את אותן תכונות ופעולות, ושומרות על שוויון פונקציונלי. |
| ממשק משתמש:מסך מלא | T-UI:Transitions |
האפליקציה ממלאת את חלון האפליקציה בשני הכיוונים ולא מופיעה עם שוליים שחורים (letterbox) בגלל שינויים בהגדרות, כולל קיפול ופתיחה של המכשיר. מותר להשתמש בפורמט letterbox כדי לפצות על שינויים קלים בגיאומטריית המסך. |
| ממשק משתמש:מעברים | T-UI:Transitions | האפליקציה מטפלת במעברים מהירים בין כיווני המסך ובין קיפול המכשיר לפתיחתו, ללא בעיות בעיבוד התצוגה וללא אובדן מצב. |
| איכות חזותית | ||
| ויזואלי:רשת המדיה | T-Visual:Display |
האפליקציה מציגה גרפיקה, טקסט, תמונות ואלמנטים אחרים בממשק המשתמש ללא עיוות, טשטוש או פיקסול בולטים.
|
| ויזואלי:קריאוּת | T-Visual:Readability | האפליקציה מגבילה את אורך השורה ל-45 עד 75 תווים (כולל רווחים) בכל אחת מהשפות הנתמכות באפליקציה, כדי להבטיח שהטקסט ובלוקי הטקסט יהיו קריאים. |
| רכיבים חזותיים:עיצובים | T-Visual:Themes | התוכן של האפליקציה וכל תוכן האינטרנט שאפשר לגשת אליו דרך האפליקציה תומכים במצבים בהירים וכהים. |
| ניווט | ||
| ניווט:כפתור חזרה | T-Nav:Back | האפליקציה תומכת בניווט באמצעות לחצן החזרה רגיל, ולא נעשה בה שימוש בהנחיות מותאמות אישית של לחצן החזרה במסך. |
| ניווט:תנועת חזרה | T-Nav:Back | האפליקציה תומכת בניווט באמצעות תנועות כדי לחזור אחורה ולעבור למסך הבית. |
| Nav:State | T-Nav:State, T-Nav:Back |
האפליקציה שומרת את מצב המשתמש או האפליקציה כשהיא לא בחזית ולא מונעת אובדן מקרי של נתונים בגלל ניווט חזרה ושינויים אחרים במצב שלה. כשחוזרים לחזית, האפליקציה משחזרת את המצב שנשמר ואת כל העסקאות התלויות שכוללות מצב. לדוגמה, שינויים בשדות שניתנים לעריכה, בהתקדמות במשחק, בתפריטים, בסרטונים ובחלקים אחרים באפליקציה.
|
| התראות | ||
| התראה:מידע | T-Notify:Info |
התראות מספקות מידע רלוונטי שקשור לאפליקציה.
|
| התראה:העברת הודעות | T-Notify:Info |
באפליקציות לשליחת הודעות, באפליקציות חברתיות ובשיחות:
|
| נגישות | ||
| גישה:נושאים | T-Access:Targets | גודל משטחי המגע הוא לפחות 48dp. אפשר לעיין בהנחיות של Material Design בנושא פריסה וטיפוגרפיה. |
| גישה:ניגודיות | T-Access:Contrast |
יחס הניגודיות בין הטקסט והתוכן בחזית האפליקציה לבין הרקע של האפליקציה הוא:
|
| גישה:תיאור | T-Access:Description | תיאור של כל רכיב בממשק המשתמש, למעט TextView, באמצעות contentDescription. |
הפונקציונליות
האפליקציה שלך צריכה להטמיע את ההתנהגות הפונקציונלית הבאה.
| מזהה | בדיקות | תיאור |
|---|---|---|
| אודיו | ||
| אודיו:Init | T-Audio:Init |
כשהמשתמש מפעיל השמעה של אודיו, האפליקציה צריכה לבצע אחת מהפעולות הבאות תוך שנייה אחת:
|
| אודיו:מיקוד | T-Audio:Focus | האפליקציה צריכה לבקש מיקוד אודיו כשהפעלת האודיו מתחילה, ולבטל את מיקוד האודיו כשההפעלה נפסקת. |
| אודיו:הפרעה | T-Audio:Interrupt | האפליקציה צריכה לטפל בבקשות של אפליקציות אחרות להתמקדות באודיו. לדוגמה, אפליקציה עשויה להנמיך את עוצמת הקול של ההפעלה כשבאפליקציה אחרת מושמע דיבור. |
| אודיו:רקע | T-Audio:Background | האפליקציה צריכה לתמוך בהפעלה ברקע. |
| אודיו:התראה | T-Audio:Notification | כשהאפליקציה מפעילה אודיו ברקע, היא צריכה ליצור התראה עם סגנון של MediaStyle. |
| אודיו:המשך | T-Audio:Resume | אם האפליקציה פועלת ברקע וההפעלה של האודיו מושהית, ההפעלה של האודיו צריכה להתחדש כשהאפליקציה חוזרת לחזית, או שהאפליקציה צריכה לציין למשתמש שההפעלה מושהית. |
| וידאו | ||
| סרטון:תמונה בתוך תמונה | T-Video:PiP | אם האפליקציה מפעילה סרטונים, היא צריכה לתמוך בהפעלה של תמונה בתוך תמונה. |
| סרטון:קידוד | T-Video:Encoding | אם האפליקציה מקודדת סרטון, היא צריכה לעשות זאת באמצעות תקן הדחיסה של סרטוני HEVC. |
| שיתוף | ||
| שיתוף:Sheet | T-Sharing:Sheet | האפליקציה צריכה להשתמש בקובץ לשיתוף ב-Android כשמשתפים תוכן. האפליקציה יכולה להציע יעדים שלא זמינים לפתרונות מותאמים אישית. |
| שירותים ברקע | ||
| רקע:שירותים | T-Background:Services |
האפליקציה לא מפעילה ברקע שירותים ארוכים שלא לצורך. כדי להבטיח שהמכשיר של המשתמש יפעל בצורה חלקה. הערה: המערכת מטילה הגבלות שונות על שירותים שפועלים ברקע. אלה כמה דוגמאות לשימוש לא טוב בשירותים שפועלים ברקע:
מידע נוסף מופיע במאמר סקירה כללית על משימות ברקע. |
ביצועים ויציבות
האפליקציה צריכה לספק ביצועים אופטימליים, יציבות, תאימות ורספונסיביות.
| מזהה | בדיקות | תיאור |
|---|---|---|
| ביצועים | ||
| ביצועים:הפעלה | T- Performance:Startup | האפליקציה נטענת במהירות או מספקת למשתמש משוב במסך (אינדיקטור התקדמות או רמז דומה) אם טעינת האפליקציה נמשכת יותר משתי שניות. |
| ביצועים:FPS | T-Performance:FPS | האפליקציה מעבדת פריימים כל 16 מילישניות (או פחות) כדי להציג לפחות 60 פריימים בשנייה. לקבלת עזרה בפתרון בעיות שקשורות לרינדור, אפשר לעיין במאמר בנושא רינדור איטי. |
| ביצועים:מדויק | T-Performance:Strict | אם האפשרות StrictMode מופעלת (ראו את הקטע בנושא בדיקות StrictMode), לא יוצגו הבהובים אדומים (אזהרות ביצועים מ-StrictMode) במהלך בדיקת האפליקציה. |
| יציבות | ||
| יציבות:ANR | T-Stability:ANR | האפליקציה לא קורסת או חוסמת את שרשור ה-UI וגורמת לשגיאות ANR (האפליקציה לא מגיבה ב-Android). כדאי להשתמש בדוח טרום-השקה של Google Play כדי לזהות בעיות פוטנציאליות ביציבות. אחרי הפריסה, עוקבים אחרי הדף Android Vitals ב-Google Play Console. |
| SDK | ||
| SDK:Platform | T-SDK:Platform | האפליקציה פועלת בגרסה הציבורית האחרונה של פלטפורמת Android בלי לקרוס או להשפיע באופן משמעותי על הפונקציונליות העיקרית. |
| SDK:Target | T-SDK:Latest | האפליקציה מטרגטת את הגרסה האחרונה של Android SDK שנדרשת כדי לעמוד בדרישות של Google Play. לשם כך, צריך להגדיר את הערך targetSdk בקובץ build.gradle של מודול האפליקציה. |
| SDK:Compile | T-SDK:Latest | האפליקציה נוצרה באמצעות Android SDK העדכני ביותר על ידי הגדרת הערך compileSdk בקובץ build.gradle של מודול האפליקציה. |
| SDK:3P | T-SDK:3P, T-SDK:Non |
ערכות ה-SDK של Google או של צד שלישי שבהן נעשה שימוש מעודכנות. כל שיפור בערכות ה-SDK האלה שקשור ליציבות, לתאימות או לאבטחה צריך להיות זמין למשתמשים בזמן. במקרה של ערכות SDK של Google, מומלץ להשתמש בערכות SDK שמבוססות על Google Play Services כשהן זמינות. ערכות ה-SDK האלה תואמות לאחור, מקבלות עדכונים אוטומטיים, מקטינות את גודל חבילת האפליקציה ומאפשרות שימוש יעיל במשאבים במכשיר. |
| SDK:Non | T-SDK:Non | האפליקציה לא משתמשת בממשקים שאינם SDK. |
| SDK:Debug | T-SDK:Debug | לא נכללות ספריות ניפוי באגים באפליקציית הייצור. ספריות ניפוי באגים שנכללות באפליקציה עלולות לגרום לבעיות בביצועים ובאבטחה. |
| סוללה | ||
| סוללה:ניהול | T-Battery:Manage |
האפליקציה תומכת כראוי בתכונות לניהול צריכת חשמל Doze ו-App Standby. אפליקציות יכולות לבקש פטור מתחזוקת צריכת החשמל. אפשר לעיין בקטע תמיכה בתרחישים אחרים לשימוש במאמר אופטימיזציה לשימוש בנמנום והמתנה של אפליקציות. |
פרטיות ואבטחה
האפליקציה מטפלת בנתוני משתמשים ובמידע אישי באופן בטוח ומספקת רמות הרשאה מתאימות.
אפליקציות שמתפרסמות בחנות Google Play חייבות גם לעמוד בדרישות המדיניות של Google Play בנושא נתוני משתמשים כדי להגן על פרטיות המשתמשים.
| מזהה | בדיקות | תיאור |
|---|---|---|
| הרשאות | ||
| הרשאות:Min | T-Permissions:Min | האפליקציה מבקשת רק את ההרשאות המינימליות שדרושות כדי לתמוך בתרחיש השימוש הנוכחי. לגבי הרשאות מסוימות, כמו מיקום, האפליקציה משתמשת במפרט גס במקום במפרט מדויק, אם אפשר. איך מצמצמים את מספר הבקשות להרשאות |
| הרשאות:רגישות | T-Permissions:Sensitive |
האפליקציה מבקשת הרשאה לגשת לנתונים רגישים (כמו קבוצות הרשאות של יומן שיחות או SMS או מיקום) או לשירותים שעולים כסף (כמו חייגן או SMS) רק אם יש קשר ישיר לתרחישי השימוש העיקריים של האפליקציה. צריך להציג למשתמשים גילוי נאות במקום בולט לגבי ההשלכות שקשורות להרשאות האלה. בהתאם לאופן השימוש של האפליקציה בהרשאות, יכול להיות שאפשר להשתמש בדרך חלופית כדי להשיג את תרחיש השימוש של האפליקציה בלי להסתמך על גישה למידע רגיש. לדוגמה, במקום לבקש הרשאות שקשורות לאנשי הקשר של המשתמש, אפשר להשתמש בכוונה משתמעת כדי לבקש גישה. |
| הרשאות:זמן ריצה | T-Permissions:Runtime | האפליקציה מבקשת הרשאות בזמן ריצה כשהמשתמש מבקש להשתמש בפונקציונליות מסוימת, ולא במהלך הפעלת האפליקציה. |
| הרשאות:הסבר | T-Permissions:Explain | האפליקציה מסבירה בצורה ברורה למה נדרשות הרשאות. |
| הרשאות:הורדה | T-Permissions:Degrade | האפליקציה מבצעת נסיגה הדרגתית כשמשתמשים דוחים או מבטלים הרשאה. האפליקציה לא אמורה למנוע מהמשתמשים גישה לחלוטין. |
| נתונים וקבצים | ||
| נתונים:רגישים | T-Data:Sensitive, T-Data:Handling |
כל הנתונים הרגישים מאוחסנים באחסון הפנימי של האפליקציה. |
| נתונים:יומן | T-Data:Log | לא מתבצעת רישום ביומן של נתונים אישיים או רגישים של משתמשים ביומן המערכת או ביומן ספציפי לאפליקציה. |
| נתונים:מזהים | T-Data:IDs | האפליקציה לא משתמשת במזהי חומרה שלא ניתן לאפס, כמו IMEI, למטרות זיהוי. |
| זהות | ||
| זהות:רמזים | T-Identity:Hints | האפליקציה מספקת הצעות למילוי אוטומטי של פרטי כניסה לחשבון ומידע רגיש אחר, כמו פרטי כרטיס אשראי, כתובת ומספר טלפון. |
| זהות:CredMan | T-Identity:CredMan | האפליקציה משלבת את המרכז לניהול פרטי כניסה ל-Android כדי ליצור חוויית כניסה חלקה שמאחדת את התמיכה במפתחות גישה, באיחוד זהויות ובסיסמאות. |
| זהות:ביוגרפיה | T-Identity:Bio | האפליקציה תומכת באימות ביומטרי כדי להגן על טרנזקציות פיננסיות או על מידע רגיש, כמו מסמכים חשובים של המשתמש. |
| רכיבים של אפליקציה | ||
| רכיבים:ייצוא | T-Components:Export |
האפליקציה מגדירה את המאפיין רק רכיבי אפליקציה שמשתפים נתונים עם אפליקציות אחרות או רכיבים שצריכים להיות מופעלים על ידי אפליקציות אחרות מיוצאים. |
| רכיבים:הרשאות | T-Components:Permissions |
כל הכוונות והשידורים פועלים לפי השיטות המומלצות:
|
| רכיבים:הגנה | T-Components:Protection |
כל הרכיבים שמשתפים תוכן בין אפליקציות משתמשים ב- אפליקציות לא צריכות להסתמך על גישה לרשימה של חבילות מותקנות. |
| רשתות | ||
| רשת:תנועה | T-Network:Traffic | כל התעבורה ברשת נשלחת באמצעות SSL. |
| רשת:הגדרה | T-Network:Config | האפליקציה מצהירה על תצורה של אבטחת רשת. |
| רשת:Play | T-Network:Play | אם האפליקציה משתמשת בשירותי Google Play, ספק האבטחה מאותחל בהפעלת האפליקציה. |
| רכיבי WebView | ||
| WebViews:Config | T-WebViews:Config, T-WebViews:Nav |
אל תשתמשו ב-setAllowUniversalAccessFromFileURLs() כדי לגשת לתוכן מקומי. במקום זאת, צריך להשתמש ב-WebViewAssetLoader. |
| WebViews:JavaScript | T-WebViews:JavaScript, T-WebViews:Nav |
תצוגות אינטרנט לא משתמשות ב- ב-Android 6.0 (רמת API 23 ומעלה), צריך להשתמש במקום זאת בערוצי הודעות HTML. |
| ביצוע | ||
| ביצוע:חבילות | T-Execution:Bundles |
האפליקציה לא טוענת באופן דינמי קוד ממקור חיצוני לחבילת ה-APK של האפליקציה. משתמשים ב-Android App Bundles, שכוללים את Play Feature Delivery ואת Play Asset Delivery. החל מאוגוסט 2021, חובה להשתמש ב-Android App Bundle בכל האפליקציות החדשות בחנות Google Play. |
| קריפטוגרפיה | ||
| קריפטו:אלגוריתמים | T-Crypto:Algorithms | האפליקציה משתמשת במחרוזת, באלגוריתמים קריפטוגרפיים ובמחולל מספרים אקראיים שסופקו על ידי הפלטפורמה. בנוסף, האפליקציה לא מטמיעה אלגוריתמים בהתאמה אישית. |
Google Play
הפעלת האפשרות לפרסם את האפליקציה ב-Google Play.
| מזהה | בדיקות | תיאור | |
|---|---|---|---|
| מדיניות | |||
| Play:Policies | T-Play:Policies | האפליקציה עומדת בדרישות של מדיניות התוכן למפתחים של Google Play, לא מציעה תוכן בלתי הולם ולא משתמשת בקניין רוחני או במותג של אחרים. | |
| Play:Maturity | T-Play:Policies | רמת הבגרות של האפליקציה מוגדרת בצורה מתאימה על סמך ההנחיות לסיווג תוכן. | |
| דף פרטי האפליקציה | |||
| Play:Graphics | T-Play:Graphics, T-Play:Assets |
הגרפיקה של התכונה באפליקציה עומדת בהנחיות שמפורטות במאמר התמיכה הזה. מוודאים שהתנאים הבאים מתקיימים:
|
|
| Play:NonAndroid | T-Play:Assets | צילומי המסך והסרטונים של האפליקציה לא מציגים מכשירים שאין בהם מערכת Android ולא מפנים אליהם. | |
| Play:Misleading | T-Play:Assets | צילומי המסך או הסרטונים של האפליקציה לא מציגים את התוכן ואת חוויית השימוש באפליקציה בצורה מטעה. | |
| תמיכה למשתמשים | |||
| Play:Bugs | T-Play: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-Usability:Core | נוחות שימוש:חוויית משתמש |
עוברים לכל החלקים באפליקציה – כל המסכים, תיבות הדו-שיח, ההגדרות וכל תהליכי המשתמש. מבצעים את הפעולות הבאות:
|
| T-Usability:Switcher | נוחות השימוש:מחליף האפליקציות | מכל מסך של אפליקציה, עוברים לאפליקציה אחרת שפועלת, ואז חוזרים לאפליקציה שנבדקת באמצעות הממשק למעבר בין אפליקציות האחרונות. |
| T-Usability:Sleep | נוחות השימוש:שינה | לוחצים על לחצן ההפעלה כדי להעביר את המכשיר למצב שינה, ואז לוחצים שוב על לחצן ההפעלה כדי להוציא את המסך ממצב שינה. |
| T-Usability:Lock | נוחות שימוש:נעילה | מגדירים נעילת מסך במכשיר. לוחצים על לחצן ההפעלה כדי להעביר את המכשיר למצב שינה (שגורם לנעילת המכשיר). אחר כך לוחצים שוב על לחצן ההפעלה כדי להוציא את המסך ממצב שינה ולבטל את נעילת המכשיר. |
| כרטיס SD | ||
| T-SD-Card | נוחות שימוש:חוויית משתמש |
ביצוע בדיקות של הפונקציונליות העיקרית כשהאפליקציה מותקנת בכרטיס SD של המכשיר (אם האפליקציה תומכת בשיטת ההתקנה הזו). כדי להעביר את האפליקציה לכרטיס SD, צריך לעיין בהגדרות האפליקציה. |
| ממשק משתמש | ||
| T-UI:Transitions | UI:Parity, UI:Fullscreen, UI:Transitions |
בכל מסך של האפליקציה, מסובבים את המכשיר בין מצב אופקי למצב אנכי, ובין מצב מקופל למצב פתוח, לפחות שלוש פעמים. מוודאים שהאפליקציה מבצעת את הפעולות הבאות:
|
| איכות חזותית | ||
| T-Visual:Display | Visual:Display | משתמשים בכל התכונות של האפליקציה. מוודאים שכל הפריטים החזותיים, כולל הגרפיקה, הטקסט, התמונות ורכיבים אחרים בממשק המשתמש, לא מעוותים, לא מטושטשים ולא מפוקסלים. |
| T-Visual:Readability | חזותי:קריאות |
בודקים את כל בלוקי הטקסט באפליקציה. מוודאים שאורך השורה של הטקסט ושל בלוק הטקסט מוגבל ל-45 עד 75 תווים (כולל רווחים) כדי שהטקסט יהיה קריא. מוודאים את הפרטים הבאים:
|
| T-Visual:Themes | חזותי:עיצובים | מוודאים שכל הטקסט קריא בעיצוב בהיר ובעיצוב כהה. מוודאים שכל הרכיבים החזותיים נראים בבירור ונעימים לעין גם במצב בהיר וגם במצב כהה. |
| ניווט | ||
| T-Nav:Back | Nav:BackButton, Nav:BackGesture |
עוברים לכל החלקים באפליקציה – כל המסכים, תיבות הדו-שיח, ההגדרות וכל תהליכי המשתמש. בכל מסך של אפליקציה, לוחצים על הלחצן הקודם או משתמשים בתנועת ההחלקה 'חזרה'. האפליקציה אמורה לנווט למסך הקודם או למסך הבית. |
| T-Nav:State | Nav:State | בכל מסך של אפליקציה, לוחצים על מקש הבית במכשיר או מחליקים למעלה בניווט באמצעות תנועות, ואז מפעילים מחדש את האפליקציה מהמסך כל האפליקציות. |
| התראות | ||
| T-Notify:Info | התראה:מידע, התראה:העברת הודעות |
מפעילים את כל סוגי ההתראות שהאפליקציה יכולה להציג ומסתכלים על מגירת ההתראות. מרחיבים את ההתראות כשזה רלוונטי (Android 4.1 ואילך), ומקישים על כל הפעולות הזמינות. |
| נגישות | ||
| T-Access:Targets | גישה:טירגוטים | מוודאים שיעדי המגע שומרים על גודל ומיקום עקביים ונגישים בכל הגדלים והתצורות של המסך. מידע על נגישות זמין במאמר בנושא Accessibility Scanner. |
| T-Access:Contrast | גישה:ניגודיות | בודקים את הניגודיות של כל האלמנטים החזותיים. |
| T-Access:Description | Access:Description | מוודאים שלכל הרכיבים בממשק המשתמש, מלבד TextView, יש תיאורי תוכן. |
הפונקציונליות
| מזהה | תכונה | תיאור |
|---|---|---|
| אודיו | ||
| T-Audio:Init | Audio:Init | מתחילים את הפעלת האודיו. מוודאים שבתוך שנייה אחת האפליקציה מתחילה להפעיל את האודיו או מספקת אינדיקטור ויזואלי לכך שנתוני האודיו מוכנים להפעלה. |
| T-Audio:Focus | אודיו:מיקוד | מתחילים את הפעלת האודיו. האפליקציה צריכה לבקש הרשאת אודיו. כשמפסיקים את השמעת האודיו, האפליקציה צריכה לוותר על מיקוד האודיו (זה קורה באופן אוטומטי באפליקציות שמטרגטות Android 12 (רמת API 31) ומעלה). |
| T-Audio:Interrupt | אודיו:הפרעה | מתחילים את הפעלת האודיו. מתחילים להפעיל אודיו באפליקציה אחרת. האפליקציה שלכם צריכה להגיב לשינוי במיקוד האודיו ולהפסיק את הפעלת האודיו או להנמיך את עוצמת הקול של האודיו. |
| T-Audio:Background | אודיו:רקע | מתחילים את הפעלת האודיו. מבצעים אינטראקציה עם אפליקציה אחרת שלא קשורה לאודיו כאפליקציה בחזית. האפליקציה אמורה להמשיך להפעיל אודיו ברקע. |
| T-Audio:Notification | אודיו:התראה | מתחילים את הפעלת האודיו. מבצעים אינטראקציה עם אפליקציה אחרת שלא קשורה לאודיו כאפליקציה בחזית. מוודאים שהאפליקציה ממשיכה להפעיל אודיו ברקע ושיצרה התראה עם סגנון MediaStyle. מידע נוסף על שימוש בפקדי מדיה |
| T-Audio:Resume | אודיו:הפעלה מחדש | מתחילים את הפעלת האודיו. ליצור אינטראקציה עם אפליקציה אחרת שאינה אפליקציית אודיו כאפליקציה בחזית. ליצור אינטראקציה עם האפליקציה שלכם כדי להפוך אותה לאפליקציה העליונה. האודיו אמור להמשיך לפעול או שהווליום אמור לחזור לרמה הקודמת. אחרת, האפליקציה צריכה לציין למשתמש שההפעלה מושהית. |
| T-Video:PiP | סרטון:תמונה בתוך תמונה | הפעלת הפעלת סרטונים באפליקציה במצב תמונה בתוך תמונה. |
| T-Video:Encoding | סרטון:קידוד | מוודאים שהאפליקציה מקודדת סרטון באמצעות תקן הדחיסה של סרטוני HEVC. |
| שיתוף | ||
| שיתוף:Sheet | יוצרים כוונה ומתחילים פעילות על ידי קריאה ל-startActivity() עם הכוונה כארגומנט. איך משתמשים בגיליון השיתוף ב-Android האפליקציה צריכה להציג את הקובץ לשיתוף ב-Android. |
|
| שירותים ברקע | ||
| CR-6 | רקע:שירותים | משתמשים בכל התכונות העיקריות של האפליקציה. מוודאים שלא מופעלים שירותים ברקע שפועלים לאורך זמן. עוברים לאפליקציה אחרת כדי להעביר את האפליקציה לרקע. עוברים אל הגדרות ובודקים אם יש באפליקציה שירותים שפועלים ברקע. ב-Android מגרסה 4.0 ואילך, עוברים למסך Apps (אפליקציות) ומחפשים את האפליקציה בכרטיסייה Running (פועלות). |
ביצועים ויציבות
| מזהה | תכונה | תיאור |
|---|---|---|
| ביצועים | ||
| T- Performance:Startup | ביצועים:הפעלה | מפעילים את האפליקציה. מוודאים שהאפליקציה נטענת במהירות או שמסופק בה אינדיקטור התקדמות או רמז דומה אם טעינת האפליקציה נמשכת יותר משתי שניות. |
| T-Performance:FPS | ביצועים:FPS | להשתמש בכל התכונות העיקריות של האפליקציה. לוודא שהאפליקציה מציגה לפחות 60 פריימים לשנייה. אפשר להשתמש באפשרות עיבוד פרופיל ב-HWUI כדי לבדוק את האפליקציה. |
| T-Performance:Strict | ביצועים:מדויקים |
מפעילים את חשוב לשים לב במיוחד לאיסוף האשפה ולהשפעה שלו על חוויית המשתמש. |
| יציבות | ||
| יציבות:ANR | יציבות:ANR | משתמשים בכל התכונות העיקריות של האפליקציה. מוודאים שהאפליקציה לא קורסת או חוסמת את שרשור ה-UI וגורמת לשגיאות ANR (האפליקציה לא מגיבה) ב-Android. כדאי לעיין בדוח טרום-השקה ב-Google Play כדי לזהות בעיות יציבות פוטנציאליות. |
| SDK | ||
| T-SDK:Platform | SDK:Platform | מריצים את האפליקציה בגרסה הציבורית האחרונה של פלטפורמת Android. שימוש בכל התכונות העיקריות. צריך לוודא שהאפליקציה לא קורסת ופועלת בלי לאבד את הפונקציונליות העיקרית שלה. |
| T-SDK:Latest | SDK:Target, SDK:Compile |
בודקים את קובץ המניפסט של Android ואת הגדרות ה-build כדי לוודא שהאפליקציה מבוססת על הגרסה העדכנית ביותר של ה-SDK (targetSdk ו-compileSdk). |
| T-SDK:3P | SDK:3P | בודקים אם יש תלויות לא מעודכנות בקובץ build.gradle של האפליקציה. |
| T-SDK:Non | SDK:Non | כדי לזהות שימוש בממשק שאינו SDK, אפשר להשתמש בכלי ה-lint של Android Studio. במאמר הגבלות על ממשקים שאינם SDK מפורטות שיטות בדיקה חלופיות. |
| T-SDK:Debug | SDK:Debug | בודקים אם קיימות ספריות ניפוי באגים בקובץ build.gradle של האפליקציה. |
| סוללה | ||
| T-Battery:Manage | סוללה:ניהול |
שימוש בכל התכונות העיקריות של האפליקציה במצבי Doze ובהמתנה של האפליקציה. צריך לוודא שהתראות, טיימרים, התראות וסנכרונים פועלים כמו שצריך בחלון התחזוקה של מצב שינה, וכשהאפליקציה יוצאת ממצב המתנה. בודקים את ההתנהגות של Doze ושל מצב המתנה של האפליקציה באמצעות פקודות ADB (במאמר בדיקה באמצעות Doze ומצב המתנה של האפליקציה מפורטות הדרישות וההנחיות). כדי לאבחן התרוקנות סוללה לא צפויה, אפשר להשתמש בכלי Power Profiler של Android Studio או בכלי Battery Historian בשילוב עם עבודה מתוכננת ברקע. |
פרטיות ואבטחה
| מזהה | תכונה | תיאור |
|---|---|---|
| הרשאות | ||
| T-Permissions:Min | הרשאות:מינימום | בודקים את כל ההרשאות שהאפליקציה דורשת, בקובץ המניפסט, בזמן הריצה ובהגדרות האפליקציה במכשיר (הגדרות > פרטי האפליקציה). |
| T-Permissions:Sensitive | הרשאות:רגישות | משתמשים בתכונות של האפליקציה שמבקשות הרשאות. מוודאים שהאפליקציה מבקשת הרשאה לגשת למידע אישי רגיש או לשירותים רק בתרחישי שימוש מרכזיים באפליקציה. מוודאים שההשלכות של מתן הרשאה לנתונים ולשירותים רגישים מוסברות למשתמש בצורה ברורה. |
| T-Permissions:Runtime | הרשאות:זמן ריצה | משתמשים בכל התכונות באפליקציה שדורשות הרשאות. מוודאים שההרשאות מתבקשות בצורה עצלה, כלומר רק כשניגשים לתכונות, ולא במהלך הפעלת האפליקציה. |
| T-Permissions:Explain | הרשאות:הסבר | משתמשים בכל התכונות באפליקציה שדורשות הרשאות. מוודאים שהאפליקציה מסבירה למשתמש למה נדרשות ההרשאות. |
| T-Permissions:Degrade | הרשאות:הורדה | משתמשים בכל התכונות באפליקציה שדורשות הרשאות. דוחים או מבטלים את ההרשאות. מוודאים שהאפליקציה מספקת תרחיש שימוש חלופי וממשיכה לפעול. |
| נתונים וקבצים | ||
| T-Data:Sensitive | Data:Sensitive | בודקים את כל הנתונים שמאוחסנים באחסון הפנימי. מוודאים שהנתונים שמאוחסנים מחוץ לארגון לא מכילים מידע אישי רגיש. |
| T-Data:Handling | Data:Sensitive | בודקים איך המערכת מטפלת בנתונים שנטענים מאחסון חיצוני ומעבדת אותם. |
| T-Data:Log | נתונים:יומן | משתמשים בכל התכונות העיקריות של האפליקציה תוך כדי מעקב אחרי יומן המכשיר. מוודאים שלא מתבצע רישום ביומן של מידע פרטי על המשתמשים. |
| T-Data:IDs | נתונים:מזהים | שימוש בכל התכונות העיקריות של האפליקציה. מוודאים שהאפליקציה לא משתמשת במזהי חומרה כמו IMEI למטרות זיהוי. |
| זהות | ||
| T-Identity:Hints | Identity:Hints | משתמשים בכל התכונות של האפליקציה שדורשות קלט מהמשתמש. מוודאים שהאפליקציה מספקת רמזים למילוי אוטומטי של שדות קלט לנתונים כמו פרטי כניסה לחשבון ומידע רגיש אחר. |
| T-Identity:CredMan | Identity:CredMan | נכנסים לאפליקציה. מוודאים שהאפליקציה משלבת את מנהל אמצעי התשלום ל-Android כדי לספק חוויית כניסה אחידה עם תמיכה במפתחות גישה, בזהויות מאוחדות ובסיסמאות. |
| T-Identity:Bio | זהות:מידע ביוגרפי | להשתמש בכל התכונות של האפליקציה שדורשות אימות. צריך לוודא שהאפליקציה מגנה על טרנזקציות פיננסיות או על מידע רגיש, כמו מסמכים חשובים של משתמשים, באמצעות אימות ביומטרי. |
| רכיבים של אפליקציה | ||
| T-Components:Export | רכיבים:ייצוא | בודקים את כל רכיבי האפליקציה שמוגדרים בקובץ המניפסט של Android כדי לוודא שהם מוגדרים למצב הייצוא המתאים. צריך להגדיר את המאפיין המיוצא באופן מפורש לכל הרכיבים. |
| T-Components:Permissions | רכיבים:הרשאות | צריך לבדוק את כל ההרשאות שהאפליקציה דורשת בקובץ המניפסט, בזמן הריצה ובהגדרות האפליקציה במכשיר (הגדרות > פרטי האפליקציה). |
| רכיבי T:הגנה | רכיבים:הגנה | בודקים את כל ספקי התוכן שמוגדרים בקובץ המניפסט של Android. מוודאים שלכל ספק יש protectionLevel מתאים. |
| רשתות | ||
| T-Network:Traffic | רשת:תנועה | מצהירים על תצורה של אבטחת רשת שמשביתה תנועה שאינה מוצפנת, ואז בודקים את האפליקציה. |
| T-Network:Config | Network:Config | בודקים את הגדרות אבטחת הרשת של האפליקציה. מוודאים שכל בדיקות ה-lint בהגדרה עוברות בהצלחה. |
| T-Network:Play | רשת:Play | מוודאים שספק האבטחה מאותחל בהפעלת האפליקציה בשירותי Google Play. |
| רכיבי WebView | ||
| T-WebViews:Config | WebViews:Config | בודקים את הגדרות אבטחת הרשת של האפליקציה. מוודאים שכל בדיקות ה-lint בהגדרה עוברות בהצלחה. |
| T-WebViews:JavaScript | WebViews:JavaScript | לכל WebView, עוברים לדף שנדרש בו JavaScript. |
| T-WebViews:Nav | WebViews:Config, WebViews:JavaScript |
בכל WebView, מנסים לנווט לאתרים ולתוכן שלא נטענים ישירות על ידי האפליקציה. |
| ביצוע | ||
| T-Execution:Bundles | ביצוע:חבילות | מוודאים שהאפליקציה משתמשת בקובצי Android App Bundle ולא טוענת קוד באופן דינמי מחוץ ל-APK של האפליקציה. |
| קריפטוגרפיה | ||
| T-Crypto:Algorithms | Crypto:Algorithms | מוודאים שהאפליקציה משתמשת באלגוריתמים קריפטוגרפיים חזקים ובמחולל מספרים אקראיים שסופקו על ידי הפלטפורמה. חשוב גם לוודא שהאפליקציה לא מטמיעה אלגוריתמים בהתאמה אישית. |
Google Play
| מזהה | תכונה | תיאור |
|---|---|---|
| מדיניות | ||
| T-Play:Policies | Play:Policies, Play:Maturity, Play:Bugs |
נכנסים אל Google Play Console כדי לבדוק את פרופיל המפתח, תיאור האפליקציה, צילומי המסך, הגרפיקה השיווקית, סיווג התוכן ומשוב המשתמשים. |
| דף פרטי האפליקציה | ||
| T-Play:Graphics | Play:Graphics | מורידים את הגרפיקה של התכונה ואת צילומי המסך, ומקטינים אותם כך שיתאימו לגדלי המסכים במכשירים ובגורמי הצורה שמטרגטים. |
| T-Play:Assets | Play:Graphics, Play:NonAndroid, Play:Misleading |
בודקים את כל הנכסים הגרפיים, המדיה, הטקסט, ספריות הקוד ותוכן אחר שנכללים באפליקציה או בהורדה של קובץ ההרחבה. |
העברה לארכיון
גרסאות קודמות של הנחיות האיכות העיקריות לאפליקציות: