אפליקציות ללא התקנה הן תכונה מרכזית בגרסה 10, ולכן חשוב שהן יפעלו כמו שצריך. אפליקציות מיידיות מותקנות באופן מרומז, ולכן יש להן קבוצה מוגבלת של יכולות והן פועלות בארגז חול (sandbox) אבטחתי מגביל יותר. בגלל האופי הנרחב של ההגבלות האלה, יש סיכון שחלקים במערכת לא יפעלו כמו שצריך עם אפליקציות מיידיות. נוצרת קבוצת משנה של בדיקות CTS כדי לוודא שההתנהגויות שמותרות באפליקציות ללא התקנה פועלות. הרעיון המרכזי הוא לצמצם את הגידול בגודל של CTS על ידי בידוד של קבוצת הבדיקות המינימלית להעברה. הפעלת CTS במצב אפליקציות ללא התקנה פירושה התקנת ה-APK של הבדיקה כאפליקציה ללא התקנה והרצת הבדיקות.
הגבלות על אפליקציות ללא התקנה
המשתמשים לא מתקינים אפליקציות ללא התקנה, ולכן הן פועלות בארגז חול מוגבל עם ההגבלות הבאות:
- יכול להכיל רק הרשאות מסוימות.
- אי אפשר לראות אפליקציות אחרות אלא אם הן מסומנות כגלויות באפליקציות ללא התקנה.
- יכולים לגשת רק להגדרות מערכת מסוימות.
- יכולה לגשת רק למאפייני מערכת מסוימים.
- אי אפשר לחשוף שירותים או ספקים.
- יכולים לקבל ולשלוח הודעות עם כללים מיוחדים לגבי שידורים.
בנוסף, אפליקציות ללא התקנה צריכות להביע הסכמה כדי לאפשר לארגז החול החדש לאבטחה להוסיף עוד הגבלות. ההתנהגויות המיוחדות האלה של אפליקציות ללא התקנה חוצות את כל הפלטפורמה, ולכן צריך לוודא שהאפליקציות ללא התקנה פועלות כמצופה בכל המכשירים במערכת האקולוגית.
בדיקות שמופעלות במצב של אפליקציות ללא התקנה
לא בכל מודולי CTS יש בדיקות שרלוונטיות לאפליקציות ללא התקנה. אם הפונקציונליות שנבדקת על ידי המודול כוללת אינטראקציה עם שרת המערכת, צריך להריץ את הבדיקות האלה במצב של אפליקציות מיידיות. לדוגמה, בדיקות OpenGL לא יוצרות אינטראקציה עם שרת המערכת, ולכן אין צורך להפעיל אותן במצב 'אפליקציות מיידיות'. לעומת זאת, בדיקות הנגישות יוצרות אינטראקציה עם שרת המערכת, ולכן יש צורך להפעיל אותן במצב 'אפליקציות מיידיות'.
בנוסף לזיהוי המודולים הרלוונטיים, המשתמשים צריכים לקבוע אילו בדיקות במודולים האלה רלוונטיות. לדוגמה, בדיקת התנהגויות ספציפיות לשירות עבור ארכיטקטורה שניתנת להרחבה (למשל, AccessibilityService) לא רלוונטית למצב של אפליקציות מיידיות, כי אפליקציות מיידיות לא יכולות לחשוף שירותים לאפליקציות אחרות (כולל הפלטפורמה), אבל בדיקות שמאמתות התנהגויות בצד האפליקציה רלוונטיות למצב של אפליקציות מיידיות. דוגמה נוספת היא בדיקה שמאמתת התנהגויות שמתבססות על הרשאה שאפליקציה ללא התקנה לא יכולה לקבל, ולכן הבדיקה לא רלוונטית במצב של אפליקציה ללא התקנה. יש סדרה של בדיקות שרלוונטיות רק לאפליקציות מיידיות, שמאמתות את הכללים לגבי אופן הפעולה שלהן. לדוגמה, שהן לא חושפות שירותים או לא רואות אפליקציות אחרות. בדרך כלל, הם כבר כתובים ולא צריך להעביר אותם.
כשלים בבדיקות במצב של אפליקציות ללא התקנה
אם הבדיקה נכשלת כי היא מאמתת פונקציונליות שאפליקציות ללא התקנה לא יכולות לגשת אליה, אז הבדיקה לא רלוונטית במצב של אפליקציות ללא התקנה. מסמנים את הבדיקה להפעלה רק במצב 'אפליקציה מלאה' באמצעות ההערה @AppModeFull
. אפשר להחיל את ההערה הזו ברמת הכיתה כדי להחריג את כל הבדיקות שבה.
אם הבדיקה נכשלת כי חלק מהפונקציות שזמינות באפליקציות ללא התקנה לא פועלות, מדווחים על באג.
פתרון בעיות
אם הבדיקה נכשלת עם Failed to install MyCtsModule.apk on DEVICE. הסיבה: '-116', כדאי לחפש הודעות של PackageManager ב-logcat. לדוגמה, אם מוצגת ההודעה לא ניתן להחליף את האפליקציה המלאה באפליקציה ללא התקנה: your_app, צריך להשתמש בפקודה adb uninstall כדי להסיר את האפליקציה.