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