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

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

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

הטמעה של מודולים מסייעים

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

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

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

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

תהליך ההטמעה

  1. אפשר להתאים אישית את ממשק המשתמש לפי הצורך עבור המוצר הספציפי.
  2. מגדירים את מודולי העזר הקיימים של AOSP כסוגי משנה של מודולי בדיקת CTS שצריכים ליצור אינטראקציה עם ממשק המשתמש. מחליפים את האינטראקציות הנדרשות בהתאם לממשק המשתמש המותאם אישית. ההחלפות משתנות בהתאם לסוג השינויים.
    • מחלקות המשנה של ה-OEM נמצאות בחבילת OEM, כמו com.[oem].cts.helpers.
    • לכל מחלקה משנית של יצרן ציוד מקורי יש קידומת משותפת שמבדילה אותה מההטמעה של 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. אם העוזרים של יצרן הציוד המקורי (OEM) מיישמים באופן מלא את כל הממשקים הרלוונטיים, השימוש ב-com.android.cts.helpers.aosp הוא אופציונלי.
  4. מגדירים את המאפיין ro.vendor.cts_interaction_helper_packages בתמונת המכשיר כדי לכלול את שם ה-APK. אם אתם צריכים להפריד בין ההטמעות של ה-helper בכמה קובצי APK, המאפיין הזה יכול להכיל רשימה של חבילות שמופרדות באמצעות נקודתיים.
  5. כשמריצים את Tradefed עבור CTS, צריך לוודא שקובץ ה-APK זמין בספרייה testcases. במקרה הצורך, בודקים את ההודעות ב-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.