כדי להריץ CTS, תחילה עליכם להכין את הסביבה הפיזית, את המחשב השולחני ואת מכשיר ה-Android שבו אתם משתמשים לבדיקה.
סביבה פיזית
איתותי Bluetooth LE
אם המכשיר בבדיקה (DUT) תומך ב-Bluetooth LE, צריך להציב לפחות שלושה איתותי Bluetooth LE בטווח של 5 מטרים מה-DUT כדי לבצע בדיקה של סריקת Bluetooth LE. אין צורך להגדיר את האותות האלו או לשדר בהם שום דבר, והם יכולים להיות מכל סוג, כולל iBeacon, Eddystone או אפילו מכשירים שמדמים איתותי BLE.
Ultra Wideband (UWB)
אם ה-DUT תומך ב-Ultra Wideband (UWB), צריך למקם מכשיר נוסף שתומך ב-UWB קרוב מספיק, כך שלא יהיו אנטנות ואזורים מתים ברדיו. לבדיקות של דיוק המרחק יש דרישות ספציפיות לגבי מיקום וכיוון. פרטי ההגדרה מפורטים במאמר דרישות UWB. צריך להריץ את בדיקת ה-UWB באופן ידני, ולציין בשורת הפקודה אילו שני מכשירים נמצאים במרחק של מטר אחד זה מזה. לפרטים על החלוקה הנדרשת לבדיקה הזו, ראו חלוקה מקומית.
מצלמות
כשמריצים את CTS של המצלמה, צריך להשתמש בתנאים רגילים של תאורה עם תרשים של דפוס בדיקה (כמו דפוס של משבצות). מניחים את התרשים של דפוס הבדיקה בהתאם למרחק המיקוד המינימלי של ה-DUT, כדי לוודא שהוא לא קרוב מדי לעדשה.
מכוונים את חיישני המצלמה לזירת צילום עם תאורה מספקת כדי לאפשר לחיישנים שנבדקים להגיע למספר היעד המקסימלי של פריימים לשנייה (FPS) שהוגדרו, ולשמור עליו, כפי שצוין ב-CONTROL_AE_TARGET_FPS_RANGE
.
הבדיקה הזו חלה על כל חיישני המצלמה שמדווחים על ידי getCameraIdList
, כי הבדיקה חוזרת על עצמה במכשירים המפורטים ומדידה את הביצועים בנפרד.
אם ה-DUT תומך במצלמות חיצוניות, כמו מצלמות רשת USB, צריך לחבר מצלמה חיצונית כשמריצים את CTS. אחרת, בדיקות CTS נכשלות.
GPS/GNSS
אם ה-DUT תומך בתכונה של מערכת מיקום גלובלית/מערכת לוויינים גלובלית למטרות ניווט (GPS/GNSS), צריך לספק ל-DUT אות GPS/GNSS ברמת אות מתאימה לצורך קליטה וחישוב מיקום GPS. החלק של ה-GPS חייב לעמוד בדרישות של ICD-GPS-200C. אחרת, האות של ה-GPS/GNSS יכול להיות מכל סוג שהוא, כולל סימולטור לוויין או מחזיר אותות GPS/GNSS של אותות חוץ. לחלופין, אפשר למקם את ה-DUT קרוב מספיק לחלון כדי שהוא יוכל לקלוט ישירות מספיק אות GPS/GNSS.
Wi-Fi ו-IPv6
כדי לבצע בדיקות CTS נדרשת רשת Wi-Fi שתומכת ב-IPv4 וב-IPv6, עם חיבור לאינטרנט ו-DNS פעיל ל-IPv4 ול-IPv6, שתומכת ב-IP multicast ויכולה להתייחס ל-DUT כאל לקוח מבודד. לקוח מבודד הוא הגדרה שבה ל-DUT אין הרשאות גישה להודעות שמשודרות או לרשת מרובת רשתות באותה רשת משנה. המצב הזה מתרחש עם הגדרה של נקודת גישה (AP) ל-Wi-Fi או על ידי הפעלת ה-DUT ברשת משנה מבודדת ללא חיבור של מכשירים אחרים.
אם אין לכם גישה לרשת IPv6 מקורית, לרשת של ספק IPv6 או ל-VPN כדי לעבור חלק מהבדיקות, בהתאם ל-IPv6, תוכלו להשתמש בנקודת גישה ל-Wi-Fi ובמנהרת IPv6.
כדי לעבור את הבדיקה CTS, הדגימה לבדיקה (DUT) צריכה להגדיר את הדגלים UP
, BROADCAST
ו-MULTICAST
בממשק ה-Wi-Fi. צריך להקצות כתובות IPv4 ו-IPv6 לממשק ה-Wi-Fi.
יש לבדוק את המאפיינים של ממשק ה-Wi-Fi באמצעות adb shell ifconfig
.
למכשירים שתומכים ב-Wi-Fi STA/STA בו-זמני, צריך להשתמש בכמה רשתות Wi-Fi (לפחות 2). כדי לעבור את הבדיקה, רשתות ה-Wi-Fi צריכות לפעול בתדרים שונים עם מזהי SSID שונים, או באותו מזהה SSID עם מזהי BSSID שונים.
זמן נסיעות משוער (RTT) ב-Wi-Fi
מערכת Android כוללת את Wi-Fi RTT API כדי לאפשר מדידת זמן הנסיעה הלוך ושוב (RTT) ב-Wi-Fi. כך המכשירים יכולים למדוד את המרחק שלהם מנקודות גישה בדיוק של 1 עד 2 מטרים, וכך לשפר באופן משמעותי את הדיוק של המיקום בתוך מבנים. שני מכשירים מומלצים שתומכים ב-Wi-Fi RTT הם Google Wifi ונקודת הגישה fitlet2 של Compulab (מוגדרת לרוחב פס של 40MHz ב-5GHz).
נקודות הגישה צריכות להיות מופעלות, אבל הן לא דורשות חיבור לרשת. נקודות הגישה לא צריכות להיות ליד מכשיר הבדיקה, אבל מומלץ למקם אותן במרחק של עד 12 מטרים מה-DUT. בדרך כלל נקודת גישה אחת מספיקה.
הגדרת מחשב
זהירות: CTS תומך במכונות Linux של 64 ביט. אין תמיכה ב-CTS ב-Windows OS או ב-MacOS.
FFMPEG
מתקינים את חבילת ffmpeg בגרסה 5.1.3 (או גרסה מתקדמת יותר) במכונה המארחת.
דרישות למחשב המארח
הדרישות המינימליות למכונה המארחת של CTS הן 32GB של זיכרון RAM ו-256GB של קיבולת דיסק. הצורך הזה נובע מהעלייה במספר תרחישים הבדיקה של CTS ומהעלייה בהזמנת שטח ב-heap של Java ב-Tradefed.
ADB ו-AAPT2
לפני שמפעילים את ה-CTS, צריך לוודא שמותקנות הגרסאות העדכניות של Android Debug Bridge (adb) ושל Android Asset Packaging Tool (AAPT2), ולהוסיף את המיקום של הכלים האלה לנתיב המערכת של המחשב.
כדי להתקין את ADB ואת AAPT2, מורידים את Android SDK Platform Tools ואת Android SDK Build Tools מהגרסה האחרונה של SDK Manager ב-Android Studio, או באמצעות הכלי sdkmanager בשורת הפקודה.
צריך לוודא שהערכים adb
ו-aapt2
נמצאים בנתיב המערכת. הפקודה הבאה מבוססת על ההנחה שהורדתם את הארכיונים של החבילות לתיקיית משנה בשם android-sdk
בספריית הבית:
export PATH=$PATH:$HOME/android-sdk/platform-tools:$HOME/android-sdk/build-tools/<tools version number>
Java Development Kit ל-Ubuntu
מתקינים את הגרסה המתאימה של Java Development Kit (JDK).
- ב-Android 11, מתקינים את OpenJDK11.
- ב-Android 9 וב-Android 10, מתקינים את OpenJDK9.
- ב-Android מגרסה 7.0, 7.1, 8.0 ו-8.1, מתקינים את OpenJDK8.
פרטים נוספים זמינים בדרישות ל-JDK.
הגדרה לתמיכה ב-Python
מתקינים את virtualenv
לפלטפורמה שלכם לפי הוראות ההתקנה.
כדי לוודא שההתקנה בוצעה בהצלחה, אפשר להפעיל את הפקודה virtualenv -h
.
קובצי CTS
מורידים ופותחים את חבילות ה-CTS מההורדות של חבילת בדיקת התאימות (בהתאמה לגרסת Android במכשיר שלכם) ולכל הממשקים הבינאריים של האפליקציות (ABI) שנתמכים במכשירים שלכם.
מורידים ופותחים את הגרסה האחרונה של קובצי המדיה של CTS.
הורדת קובצי CTS הקשורים לחלק הראשי (אופציונלי)
כשמריצים גרסה של CTS בפעם הראשונה, המערכת מורידת באופן דינמי כמה קובצי CTS שקשורים ל-Mainline, וכתוצאה מכך משך זמן הריצה ארוך ב-10 דקות לפחות, בהתאם למהירות הרשת.
כדי לחסוך את זמן הריצה הנוסף של CTS, אפשר להוריד את קובצי ה-CTS שקשורים ל-Mainline לפני שמריצים את גרסת CTS, לפי ההוראות הבאות:
כדי לקבל את רמת Android API במכשיר, מריצים את הפקודה:
adb shell getprop ro.build.version.sdk
פועלים לפי ההוראות בסקריפט
download_mcts.sh
כדי להוריד את קובצי ה-CTS של Mainline.ההורדה נמשכת לפחות 10 דקות, בהתאם למהירות הרשת.
זיהוי מכשירים
פועלים לפי השלבים כדי להגדיר את המערכת לזיהוי המכשיר.
מגבלת זיכרון
כדאי להגדיל את הזיכרון המקסימלי שזמין במהלך הרצת הבדיקה בסקריפט cts-tradefed. מידע נוסף זמין בCL לדוגמה.
הגדרת מכשיר Android
גרסאות build של משתמשים
מכשיר תואם מוגדר כמכשיר עם גרסה שהוחתמה על ידי מפתח משתמש או מפתח גרסה. במכשיר צריכה לפעול קובץ אימג' של מערכת שמבוסס על גרסה תואמת של build למשתמש (Android 4.0 ואילך) משמות קוד, תגים ומספרי build.
נכס build ראשון ברמת ה-API
דרישות מסוימות של CTS תלויות ב-build שאיתו המכשיר נשלח במקור. לדוגמה, יכול להיות שמכשירים שסופקו במקור עם גרסאות build מוקדמות יותר לא ייכללו בדרישות המערכת שחלות על מכשירים שסופקו עם גרסאות build מאוחרות יותר.
כדי שהמידע הזה יהיה זמין ל-CTS, יצרני המכשירים יכולים להגדיר את המאפיין ro.product.first_api_level
בזמן ה-build. הערך של המאפיין הזה הוא רמת ה-API הראשונה שבה המכשיר הושק באופן מסחרי.
יצרני המכשירים יכולים לעשות שימוש חוזר בהטמעה הבסיסית המשותפת כדי להשיק מוצר חדש בתור שדרוג של מוצר קיים באותה קבוצת מכשירים. יצרני המכשירים יכולים להגדיר את רמת ה-API של המוצר הקיים ל-ro.product.first_api_level
, כדי שדרישות השדרוג יחולו על CTS ועל Treble/VTS.
יצרני המכשירים יכולים להגדיר את PRODUCT_SHIPPING_API_LEVEL
בקובץ device.mk
כדי להגדיר את המאפיין הזה, כפי שמוצג בדוגמה הבאה:
# PRODUCT_SHIPPING_API_LEVEL sets ro.product.first_api_level to indicate
# the first api level that the device has been commercially launched on.
PRODUCT_SHIPPING_API_LEVEL := 21
רמת ה-API הראשונה ל-Android מגרסה 9 ואילך
במכשירים עם Android מגרסה 9 ואילך, צריך להגדיר את המאפיין ro.product.first_api_level
לערך תקין מ-Codenames, Tags, and Build Numbers.
רמת API ראשונה ל-Android מגרסה 8.x ומטה
במכשירים שהושקו עם Android 8.x ואילך, צריך לבטל את ההגדרה (להסיר) של המאפיין ro.product.first_api_level
בגרסה הראשונה של המוצר. בכל גרסאות ה-build הבאות, צריך להגדיר את ro.product.first_api_level
לערך הנכון ברמת ה-API. כך המערכת תזהה בצורה נכונה מוצר חדש, ותישמר מידע על רמת ה-API הראשונה של המוצר. אם הדגל לא מוגדר, Android מקצה את Build.VERSION.SDK_INT
ל-ro.product.first_api_level
.
חבילות CTS shim
Android בגרסה 10 ואילך כולל פורמט חבילה שנקרא APEX. כדי להריץ בדיקות CTS לממשקי API לניהול של APEX (כמו עדכון לגרסה חדשה או דיווח על APEXes פעילים), צריך להתקין מראש את החבילה CtsShimApex
במחיצה /system
.
בדיקת האימות של שכבת הביניים של APEX מאמתת את ההטמעה של CtsShimApex
.
הדרישות של ro.apex.updatable
אם המאפיין
ro.apex.updatable
מוגדר לערךtrue
, חובה לצייןCtsShimApex
בכל המכשירים שתומכים בניהול חבילות APEX.אם המאפיין
ro.apex.updatable
חסר או לא מוגדר, לא חובה להתקין מראש אתCtsShimApex
במכשיר.
בדיקת האימות של שכבת הביניים של APEX מאמתת את ההטמעה של CtsShimApex
.
התקנות מראש וטעינות מראש של CtsShim
החל מ-Android 11, CtsShimApex
מכיל שתי אפליקציות מוכנות מראש (שנבנו ממקור build), שלא מכילות קוד מלבד המניפסט. מערכת CTS משתמשת באפליקציות האלה כדי לבדוק את ההרשאות וההיתרים.
אם המכשיר לא תומך בניהול חבילות APEX (כלומר, המאפיין ro.apex.updatable
חסר או לא מוגדר), או אם המכשיר פועל בגרסה 10 ואילך, צריך להתקין מראש את שתי האפליקציות המובנות בנפרד במערכת.
אם יש תמיכה ב-APEX, צריך להציב את ההתקנות מראש של הגרסה המתאימה בתור /system/apex/com.android.apex.cts.shim.apex
.
אם משתמשים באפליקציות מוכנות מראש רגילות, CtsShim
ו-CtsShimPriv
לגרסה המתאימה צריכים להיות ממוקמים בתור /system/app/CtsShimPrebuilt.apk
ו-/system/priv-app/CtsShimPrivPrebuilt.apk
בהתאמה.
בטבלה הבאה מפורטות ההתקנות מראש והטעינות מראש שזמינות לכל גרסה וארכיטקטורה של המכשיר.
גרסת המכשיר | התקנה מראש של (אם יש תמיכה ב-APEX) |
טעינה מראש | ||
---|---|---|---|---|
דריכה | x86 | דריכה | x86 | |
Android 15 | android15-arm-release | android15-x86-publish | android15-arm-CtsShim.APK | android15-x86-CtsShim.APK |
Android 14 | android14-arm-release | android14-x86-release | android14-arm-CtsShim.apk | android14-x86-CtsShim.APK |
Android 13 | android13-arm-release | android13-x86-release | android13-arm-CtsShim.apk | android13-x86-CtsShim.apk |
12 Android | android12-arm-release | android12-x86-release | android12-arm-CtsShim.APK | android12-x86-CtsShim.apk |
Android 11 | android11-arm-release | android11-x86-release | android11-arm-CtsShim.APK | android11-x86-CtsShim.apk |
Android 10 | android10-release | android10-arm-CtsShim.apk | android10-x86-CtsShim.apk | |
Android 9, O ו-O-MR1 | לא רלוונטי | לא רלוונטי | arm-CtsShim.apk | x86-CtsShim.apk |
כדי לעבור את הבדיקות, צריך לטעון מראש את האפליקציות לספריות המתאימות בתמונת המערכת בלי לחתום מחדש על האפליקציות.
יישומון לדוגמה
ב-Android 9 הושק Open Mobile APIs. במכשירים שמדווחים על יותר מרכיב מאובטח אחד, מערכת CTS מוסיפה תרחישי בדיקה כדי לאמת את ההתנהגות של ממשקי ה-Open Mobile API. תרחישי הבדיקה האלה דורשים התקנה חד-פעמית של אפליקציה לדוגמה ברכיב האבטחה המוטמע (eSE) של ה-DUT או בכרטיס ה-SIM שבו ה-DUT משתמש. אפשר למצוא את אפליקציית ה-eSE לדוגמה ואת אפליקציית ה-SIM לדוגמה ב-AOSP.
למידע מפורט יותר על תרחישי בדיקה של Open Mobile API ותרחישי בדיקה של בקרת גישה, אפשר לעיין במאמר בדיקת CTS לרכיב מאובטח.
דרישות אחסון
בדיקות העומס על המדיה של CTS מחייבות לשמור את הקליפים באחסון חיצוני (/sdcard
). רוב הקליפים הם מ-Big Buck Bunny, שמוגן בזכויות יוצרים על ידי Blender Foundation במסגרת רישיון Creative Commons Attribution 3.0.
השטח הנדרש תלוי ברזולוציה המקסימלית של הפעלת הסרטון שנתמכת במכשיר. בקטע 5 במסמך ההגדרה של תאימות ל-Android מפורטת גרסת הפלטפורמה של רזולוציות המסך הנדרשות.
אלה דרישות האחסון לפי רזולוציה מקסימלית של הפעלת וידאו:
- 480x360: 98MB
- 720x480: 193MB
- 1280x720: 606MB
- 1920x1080: 1,863MB
מסך ואחסון
- כל מכשיר שאין לו מסך מובנה צריך להיות מחובר למסך.
אם במכשיר יש חריץ לכרטיס זיכרון, מחברים כרטיס SD ריק. משתמשים בכרטיס SD שתומך באוטובוס במהירות גבוהה במיוחד (UHS) עם קיבולת SDHC או SDXC, או כרטיס עם סיווג מהירות 10 ומעלה לפחות כדי לוודא שהוא יכול לעבור את ה-CTS.
אם במכשיר יש חריצים לכרטיסי SIM, צריך להכניס כרטיס SIM מופעל לכל חריץ. אם המכשיר תומך ב-SMS, צריך לאכלס את שדה המספר של כל כרטיס SIM. במכשירים עם Android מגרסה 12 ואילך, כל כרטיסי ה-SIM חייבים לתמוך באחסון של מספרי חיוג מקוצרים (ADN). כרטיסי GSM ו-USIM עם הקובץ הייעודי לטלקום (DFTelecom) עומדים בדרישות האלה.
UICC למפתחים
כדי להריץ בדיקות API של ספק CTS, המכשיר צריך להשתמש בכרטיס SIM עם הרשאות ספק CTS שעומד בדרישות שמפורטות בהכנת ה-UICC.
הגדרת מכשיר Android
איפוס המכשיר לנתוני היצרן: הגדרות > גיבוי ואיפוס > איפוס לנתוני היצרן.
מגדירים את השפה במכשיר לאנגלית (ארצות הברית): הגדרות > שפות וקלט > שפה.
אם המכשיר תומך בהתאמה אישית של גופנים שמוגדרים כברירת מחדל, מגדירים את משפחת הגופנים
sans-serif
שמוגדרת כברירת מחדל כ-Roboto
(משפחת הגופניםsans-serif
שמוגדרת כברירת מחדל ב-AOSP build).מפעילים את הגדרת המיקום אם יש במכשיר תכונת GPS או Wi-Fi/רשת סלולרית: הגדרות > מיקום > מופעל.
מתחברים לרשת Wi-Fi שתומכת ב-IPv6, שיכולה להתייחס ל-DUT כלקוח מבודד (ראו סביבה פיזית למעלה) ושיש לה חיבור לאינטרנט: הגדרות > Wi-Fi.
מוודאים שלא הוגדרו סיסמה או קו ביטול נעילה במכשיר: 'הגדרות' > 'אבטחה' > 'נעילת מסך' > 'ללא'.
מפעילים את ניפוי הבאגים ב-USB במכשיר: הגדרות > אפשרויות למפתחים > ניפוי באגים ב-USB.
מגדירים את השעה בפורמט של 12 שעות: הגדרות > תאריך ושעה > שימוש בפורמט של 24 שעות > מושבת.
מגדירים את המכשיר למצב 'ער': הגדרות > אפשרויות למפתחים > 'ער' > מופעל.
ב-Android 5.x ו-4.4.x בלבד, מגדירים את המכשיר כך שיאפשר מיקומים מדומים: הגדרות > אפשרויות למפתחים > מתן הרשאה למיקומים מדומים > מופעל.
ב-Android מגרסה 4.2 ואילך, משביתים את אימות האפליקציות באמצעות USB: הגדרות > אפשרויות למפתחים > אימות אפליקציות באמצעות USB > מושבת.
ב-Android מגרסה 13 ואילך, מגדירים את המכשיר כך שיאפשר שימוש במכשיר מדומה להדמיה של מודם: הגדרות > אפשרויות למפתחים > מתן הרשאה לשימוש במכשיר מדומה להדמיה של מודם > מופעל.
מפעילים את הדפדפן וסוגרים את מסך ההפעלה/ההגדרה.
מחברים את המחשב שישמש לבדיקת המכשיר באמצעות כבל USB.
לפני שמפעילים את CTS, מגדירים את Roboto2 כגופן ללא Serif באמצעות הגדרה שזמינה למשתמשים (לא מוסתרת).
התקנת קבצים
התקנה והגדרה של אפליקציות עזר במכשיר.
מגדירים את המכשיר בהתאם לגרסה של CTS:
בגרסאות CTS גרסאות 2.1 R2 עד 4.2 R4: מגדירים את המכשיר (או האמולטור) כך שיריץ את בדיקות הנגישות עם:
adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk
במכשיר, מפעילים את הענקת הגישה: הגדרות > נגישות > נגישות > הענקת גישה לשירות נגישות.
גרסאות CTS 6.x ואילך: במכשירים שמצהירים על
android.software.device_admin
, מגדירים את המכשיר להרצת הבדיקה של ניהול המכשיר באמצעות:adb install -r android-cts/repository/testcases/CtsDeviceAdmin.apk`
בדף הגדרות > אבטחה > בחירת אדמינים של מכשירים, מפעילים את שני אדמיני המכשירים
android.deviceadmin.cts.CtsDeviceAdminReceiver*
. מוודאים ש-android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver
ואדמינים אחרים שמוגדרים מראש במכשיר נותרים מושבתים.
מעתיקים את קובצי המדיה של CTS למכשיר באופן הבא:
- עוברים (
cd
) לנתיב שבו קובצי המדיה מורידים ומבטלים את האריזה שלהם. שינוי ההרשאות לקובץ:
chmod u+x copy_media.sh
מעתיקים את הקבצים הנדרשים:
כדי להעתיק קליפים ברזולוציה של עד 720x480, מריצים את הפקודה:
./copy_media.sh 720x480
אם אתם לא בטוחים מה הרזולוציה המקסימלית, כדאי להעתיק את כל הקבצים:
./copy_media.sh all
אם יש כמה מכשירים ב-adb, מוסיפים בסוף את האפשרות הסידרונית (
-s
) של מכשיר ספציפי. לדוגמה, כדי להעתיק עד 720x480 למכשיר עם המספר הסידורי 1234567, מריצים את הפקודה:./copy_media.sh 720x480 -s 1234567
- עוברים (