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