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

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

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

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

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

אפליקציות ל-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 האפליקציה תומכת בניווט באמצעות תנועות כדי לחזור אחורה ולעבור למסך הבית.
T-Nav:State,
T-Nav:Back

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

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

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

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

התראה:העברת הודעות T-Notify:Info

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

נגישות
גישה:נושאים T-Access:Targets גודל משטחי המגע הוא לפחות 48dp. אפשר לעיין בהנחיות של Material Design בנושא פריסה וטיפוגרפיה.
גישה:ניגודיות T-Access:Contrast

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

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

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

גישה:תיאור 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

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

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

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

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

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

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

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

מזהה בדיקות תיאור
ביצועים
ביצועים:הפעלה 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

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

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

רכיבים:הרשאות T-Components:Permissions

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

רכיבים:הגנה T-Components:Protection

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

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

רשתות
רשת:תנועה 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

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

ב-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 נוחות שימוש:חוויית משתמש

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

מבצעים את הפעולות הבאות:
  • אם האפליקציה מאפשרת עריכה או יצירת תוכן, משחק או הפעלת מדיה, חשוב לבדוק את התהליכים האלה.
  • במהלך בדיקת האפליקציה, כדאי ליצור הפרעות מאפליקציות אחרות, כמו קבלת התראה או שיחת טלפון, ולבצע שינויים זמניים במאפייני המכשיר, כמו קישוריות לרשת, פעולת הסוללה, זמינות GPS ועומס המערכת.
  • הזנה ובדיקה של כל תהליכי הרכישה מתוך האפליקציה
T-Usability:Switcher נוחות השימוש:מחליף האפליקציות מכל מסך של אפליקציה, עוברים לאפליקציה אחרת שפועלת, ואז חוזרים לאפליקציה שנבדקת באמצעות הממשק למעבר בין אפליקציות האחרונות.
T-Usability:Sleep נוחות השימוש:שינה לוחצים על לחצן ההפעלה כדי להעביר את המכשיר למצב שינה, ואז לוחצים שוב על לחצן ההפעלה כדי להוציא את המסך ממצב שינה.
T-Usability:Lock נוחות שימוש:נעילה מגדירים נעילת מסך במכשיר. לוחצים על לחצן ההפעלה כדי להעביר את המכשיר למצב שינה (שגורם לנעילת המכשיר). אחר כך לוחצים שוב על לחצן ההפעלה כדי להוציא את המסך ממצב שינה ולבטל את נעילת המכשיר.
כרטיס SD
T-SD-Card נוחות שימוש:חוויית משתמש

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

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

ממשק משתמש
T-UI:Transitions UI:Parity,
UI:Fullscreen,
UI:Transitions

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

מוודאים שהאפליקציה מבצעת את הפעולות הבאות:
  • מספקת פונקציונליות זהה בכל כיווני התצוגה ובכל מצבי הקיפול
  • ממלא את חלון האפליקציה בכל כיווני התצוגה ומצבי הקיפול, ולא מופיע בפורמט letterbox
  • שומר על המצב ואין לו בעיות רינדור במהלך מעברים מהירים בין מצבי אוריינטציה וקיפול ופתיחה של המכשיר
איכות חזותית
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 ביצועים:מדויקים

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

חשוב לשים לב במיוחד לאיסוף האשפה ולהשפעה שלו על חוויית המשתמש.

יציבות
יציבות: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
בודקים את כל הנכסים הגרפיים, המדיה, הטקסט, ספריות הקוד ותוכן אחר שנכללים באפליקציה או בהורדה של קובץ ההרחבה.

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

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