CTS לאפליקציות ללא התקנה

אפליקציות ללא התקנה הן תכונה מרכזית ב-Android 10, ולכן חשוב שהן יפעלו בצורה תקינה. אפליקציות מיידיות מותקנות באופן מרומז, ולכן יש להן קבוצה מוגבלת של יכולות והן פועלות בארגז חול מאובטח ומגביל יותר. בגלל האופי הנרחב של ההגבלות האלה, כל חלק במערכת עלול לא לפעול כמו שצריך עם אפליקציות מיידיות. נוצרת קבוצת משנה של בדיקות CTS כדי לוודא שההתנהגויות שמותרות באפליקציות ללא התקנה פועלות. הרעיון המרכזי הוא למזער את הגידול בגודל של CTS על ידי בידוד של קבוצת הבדיקות המינימלית להעברה. הפעלת CTS במצב אפליקציות ללא התקנה פירושה התקנת ה-APK של הבדיקה כאפליקציה ללא התקנה והרצת הבדיקות.

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

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

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

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

בדיקות שמופעלות במצב אפליקציות ללא התקנה

לא בכל מודולי ה-CTS יש בדיקות שרלוונטיות לאפליקציות ללא התקנה. אם הפונקציונליות שנבדקת על ידי המודול כוללת אינטראקציה עם שרת המערכת, צריך להריץ את הבדיקות האלה במצב של אפליקציות מיידיות. לדוגמה, בדיקות OpenGL לא יוצרות אינטראקציה עם שרת המערכת, ולכן אין צורך להריץ אותן במצב 'אפליקציות מיידיות'. לעומת זאת, בדיקות הנגישות יוצרות אינטראקציה עם שרת המערכת, ולכן יש צורך להריץ אותן במצב 'אפליקציות מיידיות'.

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

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

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

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

פתרון בעיות

אם הבדיקה נכשלת עם Failed to install MyCtsModule.apk on DEVICE. הסיבה: '-116', כדאי לחפש הודעות של PackageManager ב-logcat. לדוגמה, אם מוצגת ההודעה Can't replace Full App with Instant App: your_app, צריך להשתמש בפקודה adb uninstall כדי להסיר את האפליקציה.