ב-Android 11 ואילך, מודולי העזר לאינטראקציה עם מכשירים ב-Compatibility Test Suite (CTS) מאפשרים להתאים אישית את האינטראקציה של בדיקות CTS מסוימות עם ממשק המשתמש (UI) במכשיר ספציפי. המשמעות היא שאפשר לבצע פעולות כמו החלפת רכיב בממשק המשתמש שלא מופיע במסמך הגדרת התאימות (CDD) של Android או במסמכי ה-API, ועדיין לעבור את בדיקת התאימות (CTS).
יצרני ציוד מקורי (OEM) שרוצים להתאים אישית את ממשק המשתמש של Android במהלך פיתוח המוצר וצריכים לעבור את בדיקת התאימות (CTS) יכולים להטמיע מודולים מסייעים. אם אתם משתמשים בהטמעה של Android שמוגדרת כברירת מחדל, לא צריך לבצע פעולות נוספות.
הטמעה של מודולים לעזרה
הדרישות להתאמה אישית של ממשק המשתמש
בודקים את ה-CDD או את מודולי Mainline כדי לראות אם יש דרישות לגבי ממשק המשתמש. אם ממשק המשתמש הרצוי מכוסה על ידי מודולי ה-CDD או Mainline, אי אפשר להתאים אישית את ממשק המשתמש הזה.
אם בדיקות ה-CTS שמתקשרות עם ממשק המשתמש הרצוי לא משתמשות במסגרת העזר, אי אפשר להתאים אישית את ממשק המשתמש הזה. צריך לעבוד עם הבעלים של הבדיקה כדי להמיר את מודול הבדיקה לפני שמשנים את ממשק המשתמש.
אחרת, אפשר להתאים אישית את ממשק המשתמש.
תהליך העבודה של ההטמעה
- מתאימים אישית את ממשק המשתמש לפי הצורך עבור המוצר הספציפי.
- הגדרת מודולי העזר הקיימים של AOSP כסוגי משנה של מודולי הבדיקה של CTS שצריכים אינטראקציה עם ממשק המשתמש. מחליפים את האינטראקציות הנדרשות בהתאם לממשק המשתמש המותאם אישית. ההחלפות משתנות בהתאם לסוג השינויים.
- מחלקות המשנה של ה-OEM נמצאות בחבילת OEM, כמו
com.[oem].cts.helpers. - לכל מחלקת משנה של OEM יש שם עם קידומת משותפת שמבדילה אותה מההטמעה של AOSP, שכוללת את הקידומת
Default.
- מחלקות המשנה של ה-OEM נמצאות בחבילת OEM, כמו
- יוצרים את רכיבי העזרה ב-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הוא אופציונלי.
-
- מגדירים את המאפיין
ro.vendor.cts_interaction_helper_packagesבתמונת המכשיר כדי לכלול את שם ה-APK. אם אתם צריכים להפריד בין ההטמעות של רכיבי העזרה בכמה קובצי APK, המאפיין הזה יכול להכיל רשימה של חבילות שמופרדות באמצעות נקודתיים. - חשוב לוודא שקובץ ה-APK זמין בספרייה
testcasesכשמריצים את Tradefed עבור CTS. במקרה הצורך, בודקים את ההודעות ב-logcat כדי לוודא שנבחרה המחלקה הצפויה של הטמעת העזרה. - אופציונלי, אבל מומלץ מאוד: שולחים את ההטמעה של העוזר ל-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.