מודול עזר לאינטראקציה עם מכשיר CTS

ב-Android 11 ואילך, מודולי העזר לאינטראקציה עם מכשירים ב-Compatibility Test Suite‏ (CTS) מאפשרים להתאים אישית את האינטראקציה של בדיקות CTS מסוימות עם ממשק המשתמש (UI) במכשיר ספציפי. המשמעות היא שאפשר לבצע פעולות כמו החלפת רכיב בממשק המשתמש שלא מופיע במסמך הגדרת התאימות (CDD) של Android או במסמכי ה-API, ועדיין לעבור את בדיקת התאימות (CTS).

יצרני ציוד מקורי (OEM) שרוצים להתאים אישית את ממשק המשתמש של Android במהלך פיתוח המוצר וצריכים לעבור את בדיקת התאימות (CTS) יכולים להטמיע מודולים מסייעים. אם אתם משתמשים בהטמעה של Android שמוגדרת כברירת מחדל, לא צריך לבצע פעולות נוספות.

הטמעה של מודולים לעזרה

הדרישות להתאמה אישית של ממשק המשתמש

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

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

אחרת, אפשר להתאים אישית את ממשק המשתמש.

תהליך העבודה של ההטמעה

  1. מתאימים אישית את ממשק המשתמש לפי הצורך עבור המוצר הספציפי.
  2. הגדרת מודולי העזר הקיימים של AOSP כסוגי משנה של מודולי הבדיקה של CTS שצריכים אינטראקציה עם ממשק המשתמש. מחליפים את האינטראקציות הנדרשות בהתאם לממשק המשתמש המותאם אישית. ההחלפות משתנות בהתאם לסוג השינויים.
    • מחלקות המשנה של ה-OEM נמצאות בחבילת OEM, כמו com.[oem].cts.helpers.
    • לכל מחלקת משנה של OEM יש שם עם קידומת משותפת שמבדילה אותה מההטמעה של AOSP, שכוללת את הקידומת Default.
  3. יוצרים את רכיבי העזרה ב-APK לפי המוסכמות של כלי ההרצה של הבדיקות.
    • Android.bp צריך להצהיר על android_test_helper_app עם אותו שם כמו שם החבילה שהוא מכיל.
    • AndroidManifest.xml של ה-APK צריך להצהיר על מאפיין מטא-נתונים בשם interaction-helpers-prefix עם הערך של קידומת המחלקה שנבחרה בנקודת התבליט הקודמת.
    • האפליקציה צריכה להיות תלויה ב-cts-helpers-core, ב-cts-helpers-interfaces וב-com.android.cts.helpers.aosp. אם כלי העזר של יצרן הציוד המקורי מטמיעים באופן מלא את כל הממשקים הרלוונטיים, השימוש ב-com.android.cts.helpers.aosp הוא אופציונלי.
  4. מגדירים את המאפיין ro.vendor.cts_interaction_helper_packages בתמונת המכשיר כדי לכלול את שם ה-APK. אם אתם צריכים להפריד בין ההטמעות של רכיבי העזרה בכמה קובצי APK, המאפיין הזה יכול להכיל רשימה של חבילות שמופרדות באמצעות נקודתיים.
  5. חשוב לוודא שקובץ ה-APK זמין בספרייה testcases כשמריצים את Tradefed עבור CTS. במקרה הצורך, בודקים את ההודעות ב-logcat כדי לוודא שנבחרה המחלקה הצפויה של הטמעת העזרה.
  6. אופציונלי, אבל מומלץ מאוד: שולחים את ההטמעה של העוזר ל-AOSP או מאפשרים בדיקה של צד שלישי.

דוגמה להטמעה של פונקציית עזר

לדוגמה, CtsPrintTestCases מצפה לעוזר עם הממשק שמוגדר ב-ICtsPrintHelper. ההטמעה ב-AOSP נקראת com.android.cts.helpers.aosp.DefaultCtsPrintHelper.

אם מתאימים אישית את ממשק המשתמש של ההדפסה, אפשר ליצור com.oem.cts.helpers.OemCtsPrintHelper שמהווה מחלקת משנה של DefaultCtsPrintHelper. ‫android_test_helper_app ב-Android.bp נקרא com.oem.cts.helpers, שיוצר com.oem.cts.helpers.apk, ומצהיר על interaction-helpers-prefix כ-Oem ב-AndroidManifest.xml.

מאפיין המכשיר ro.vendor.cts_interaction_helper_packages מוגדר לערך com.oem.cts.helpers.

הטמעות לדוגמה

הטמעות לדוגמה כוללות ממשקים ב-cts/libs/helpers ועוזרים שמוגדרים כברירת מחדל ב-AOSP ב-cts/helpers. הממשק ברמה העליונה מתועד בכתובת cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java.

כדי לחבר את בדיקת ה-CTS לעוזרים שלה, בעלי הבדיקה יכולים להשתמש בהגדרה @Rule שמתועדת ב-cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java.

כל מודול CTS שמשתמש במסגרת ובאופן הפעולה הצפוי של רכיב העזר שלה מתועד בממשק שמוגדר ב-cts/libs/helpers/core/src/com/android/cts/helpers.

הרצת בדיקות CTS

בדיקה ללא עזרה

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

  • מסירים את הנכס ro.vendor.cts_interaction_helper_packages מהמכשיר. כך לא ניתן להשתמש בעוזרים בגרסה הזו בכלל.
  • לפני שמריצים את CTS, צריך להסיר את קובץ ה-APK של כלי העזר מהספרייה testcases. כך לא ניתן להשתמש ב-helpers בכל הפעלות עד לשחזור ה-APK ל-testcases.

אפשר לשנות את הגדרות ברירת המחדל באמצעות ארגומנטים של Tradefed ואמצעי הבקרה של המאפיין ro.vendor.cts_interaction_helper_packages, שממנו נטען קובץ ה-APK של כלי העזר.

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

  • ro.vendor.cts_interaction_helper_packages היא מחרוזת שמופרדת באמצעות נקודתיים ומכילה שמות של חבילות. הערך יכול להיות כל חבילה תקינה לבחירה בהטמעה של כלי העזר של יצרן הציוד המקורי.
  • cts-tradefed מקבל ארגומנט device-interaction-helper:property-name שמשנה באופן זמני את הנכס הצפוי להפעלה אחת של הבדיקה, כמו --module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp'. הערך של שם המאפיין יכול להיות כל מאפיין שהגדרתם במכשיר. הערך של המאפיין כפוף לאותן מגבלות שחלות על המאפיין ro.vendor.cts_interaction_helper_packages שמתואר למעלה.

בדיקות עם התאמות אישיות

כברירת מחדל, יישומי הפניה עוברים את בדיקת CTS ב-Android סטנדרטי. בודקים שההטמעות של השותפים עוברות את בדיקת התאימות (CTS) עם התאמות אישיות בממשק המשתמש. מריצים את מודולי ה-CTS שכוללים את ממשק המשתמש או את התכונות שהתאמתם אישית.

יכול להיות שחלק מהמודולים או מהעזרים של CTS עדיין לא תומכים בהתאמות אישיות מסוימות.

  • יכול להיות שמודול CTS שמתקשר עם ממשק המשתמש שרוצים להתאים אישית לא משתמש ב-helper framework. מודולים של CTS צפויים לעבור למסגרת העזר בהתאם לביקוש ולסדרי העדיפויות של בעלי הבדיקה. כדי לוודא שההמרה תתווסף לתזמון, צריך לשלוח בקשות לקובץ המרה בשלב מוקדם בתהליך, בדומה לבקשות לשינויים ב-CTS כדי לתמוך בתכונות המתוכננות.
  • יכול להיות שהפונקציות שסופקו על ידי כלי עזר קיים לא יתאימו באופן מלא להתאמות האישיות שאתם רוצים לבצע. פונקציות עזר צריכות להסתיר תלויות בממשק המשתמש. אם פונקציית עזר תלויה בממשק משתמש באופן עקיף, אפשר להתייחס לזה באופן דומה לבאגים ב-CTS.