CTS 설정

CTS를 실행하려면 먼저 실제 환경, 데스크톱 컴퓨터, 테스트에 사용할 Android 기기를 준비하세요.

물리적 환경

블루투스 LE 비콘

테스트 대상 장치(DUT)가 Bluetooth LE를 지원하는 경우 Bluetooth LE 스캔 테스트를 위해 DUT에서 5미터 이내에 최소 3개의 Bluetooth LE 비콘을 배치하십시오. 이러한 비콘은 구성하거나 특정 항목을 내보낼 필요가 없으며 iBeacon, Eddystone 또는 BLE 비콘을 시뮬레이트하는 장치를 포함하여 모든 종류가 될 수 있습니다.

카메라

카메라 CTS를 실행할 때 테스트 패턴 차트(예: 체커보드 패턴)와 함께 일반 조명 조건을 사용합니다. 렌즈에 너무 가깝지 않도록 DUT의 최소 초점 거리에 따라 테스트 패턴 차트를 배치합니다.

CONTROL_AE_TARGET_FPS_RANGE 에 지정된 대로 테스트 중인 센서가 최대 구성된 초당 목표 프레임 수(FPS)에 도달하고 유지하도록 충분한 조명이 있는 장면을 카메라 센서로 향하게 합니다. 이는 테스트가 나열된 장치를 반복하고 성능을 개별적으로 측정할 때 getCameraIdList 에서 보고하는 모든 카메라 센서에 적용됩니다.

DUT가 USB 웹캠과 같은 외부 카메라를 지원하는 경우 CTS를 실행할 때 외부 카메라를 연결합니다. 그렇지 않으면 CTS 테스트가 실패합니다.

GPS/GNSS

DUT가 GPS/GNSS(Global Positioning System/Global Navigation Satellite System) 기능을 지원하는 경우 수신 및 GPS 위치 계산에 적합한 신호 수준에서 DUT에 GPS/GNSS 신호를 제공합니다. GPS 부분은 ICD-GPS-200C를 준수해야 합니다. 그렇지 않으면 GPS/GNSS 신호는 위성 시뮬레이터 또는 실외 신호의 GPS/GNSS 중계기를 포함하여 모든 종류가 될 수 있습니다. 또는 충분한 GPS/GNSS 신호를 직접 수신할 수 있도록 DUT를 창에 충분히 가깝게 배치할 수 있습니다.

Wi-Fi 및 IPv6

CTS 테스트에는 IPv4 및 IPv6를 지원하는 Wi-Fi 네트워크가 필요하고 IPv4 및 IPv6용 작동 DNS와 인터넷 연결이 있으며 IP 멀티캐스트를 지원하고 DUT를 격리된 클라이언트로 처리할 수 있습니다. 격리된 클라이언트는 DUT가 해당 서브네트워크의 브로드캐스트/다중 네트워크 메시지를 볼 수 없는 구성입니다. 이는 Wi-Fi 액세스 포인트(AP) 구성에서 또는 다른 장치가 연결되지 않은 격리된 하위 네트워크에서 DUT를 실행하여 발생합니다.

기본 IPv6 네트워크, IPv6 이동통신사 네트워크 또는 IPv6에 따라 일부 테스트를 통과하기 위한 VPN에 액세스할 수 없는 경우 Wi-Fi 액세스 포인트와 IPv6 터널을 사용할 수 있습니다.

CTS를 통과하려면 DUT에 Wi-Fi 인터페이스에 설정된 UP , BROADCASTMULTICAST 플래그가 필요합니다. Wi-Fi 인터페이스에는 할당된 IPv4 및 IPv6 주소가 필요합니다. adb shell ifconfig 로 Wi-Fi 인터페이스 속성을 확인합니다.

와이파이 RTT

Android 에는 Wi-Fi 왕복 시간(RTT) 기능을 위한 Wi-Fi RTT API가 포함되어 있습니다. 이를 통해 장치는 1~2미터의 정확도로 액세스 포인트까지의 거리를 측정할 수 있어 실내 위치 정확도가 크게 향상됩니다. Wi-Fi RTT를 지원하는 두 가지 권장 장치는 Google WifiCompulab의 fitlet2 액세스 포인트 (5GHz에서 40MHz 대역폭으로 설정됨)입니다.

액세스 포인트는 전원이 켜져 있어야 하지만 네트워크 연결이 필요하지 않습니다. 액세스 포인트는 테스트 장치 옆에 있을 필요는 없지만 DUT에서 40피트 이내에 있는 것이 좋습니다. 일반적으로 하나의 액세스 포인트로 충분합니다.

데스크탑 머신 설정

ADB 및 AAPT

CTS를 실행하기 전에 Android Debug Bridge(adb)Android Asset Packaging Tool(AAPT) 의 최신 버전을 모두 설치하고 해당 도구의 위치를 ​​머신의 시스템 경로에 추가했는지 확인하세요.

ADB 및 AAPT를 설치하려면 Android Studio의 SDK Manager 또는 sdkmanager 명령줄 도구에서 최신 Android SDK 플랫폼 도구Android SDK 빌드 도구를 다운로드하세요.

adbaapt 시스템 경로에 있는지 확인하십시오. 다음 명령은 패키지 아카이브를 홈 디렉터리의 android-sdk 라는 하위 디렉터리에 다운로드했다고 가정합니다.

export PATH=$PATH:$HOME/android-sdk/platform-tools:$HOME/android-sdk/build-tools/<tools version number>

Ubuntu용 Java 개발 키트

적절한 버전의 JDK(Java Development Kit)를 설치합니다.

  • Android 11의 경우 OpenJDK11을 설치합니다.
  • Android 9 및 Android 10의 경우 OpenJDK9를 설치합니다.
  • Android 7.0, 7.1, 8.0 및 8.1의 경우 OpenJDK8을 설치합니다.

자세한 내용은 JDK 요구 사항을 참조하십시오.

Python 지원 설정

설치 지침에 따라 플랫폼에 대한 virtualenv 설치합니다.

virtualenv -h 호출하여 설치가 성공했는지 확인할 수 있습니다.

CTS 파일

기기의 Android 버전 및 기기에서 지원하는 모든 애플리케이션 바이너리 인터페이스(ABI)와 일치하는 호환성 테스트 도구 모음 다운로드에서 CTS 패키지를 다운로드하고 엽니다.

최신 버전의 CTS 미디어 파일을 다운로드하고 엽니다.

장치 감지

장치를 감지하도록 시스템을 설정하는 단계를 따르십시오.

메모리 제한

cts-tradfed 스크립트에서 테스트 실행 중에 사용 가능한 최대 메모리를 늘릴 수 있습니다. 자세한 내용은 예제 CL을 참조하십시오.

안드로이드 기기 설정

사용자 빌드

호환 장치는 사용자/릴리스 키 서명 빌드가 있는 장치로 정의됩니다. 장치는 코드 이름, 태그 및 빌드 번호 에서 호환되는 것으로 알려진 사용자 빌드(Android 4.0 이상)를 기반으로 시스템 이미지를 실행해야 합니다.

첫 번째 API 수준 빌드 속성

특정 CTS 요구사항은 기기가 원래 배송된 빌드에 따라 다릅니다. 예를 들어 원래 이전 빌드와 함께 배송되는 기기는 이후 빌드와 함께 배송되는 기기에 적용되는 시스템 요구 사항에서 제외될 수 있습니다.

CTS에서 이 정보를 사용할 수 있도록 기기 제조업체는 빌드 시간 속성 ro.product.first_api_level 정의했을 수 있습니다. 이 속성의 값은 장치가 상업적으로 출시된 첫 번째 API 수준입니다.

장치 제조업체는 공통 기본 구현을 재사용하여 동일한 장치 그룹에 있는 기존 제품의 업그레이드로 새 제품을 출시할 수 있습니다. 장치 제조업체는 선택적으로 기존 제품의 API 수준을 ro.product.first_api_level 로 설정할 수 있으므로 업그레이드 요구 사항이 CTS 및 Treble/VTS에 적용됩니다.

장치 제조업체는 device.mk 파일에서 PRODUCT_SHIPPING_API_LEVEL 정의하여 다음 예와 같이 이 속성을 설정할 수 있습니다.

# 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

Android 9 이상의 첫 번째 API 수준

Android 9 이상으로 출시된 기기의 경우 ro.product.first_api_level 속성을 Codenames, Tags 및 Build Numbers 의 유효한 값으로 설정합니다.

Android 8.x 이하용 첫 번째 API 수준

Android 8.x 이하에서 실행되는 기기의 경우 제품의 첫 번째 빌드에 대한 ro.product.first_api_level 속성을 설정 해제(제거)합니다. 모든 후속 빌드의 경우 ro.product.first_api_level 올바른 API 수준 값으로 설정합니다. 이렇게 하면 속성이 새 제품을 올바르게 식별하고 제품의 첫 번째 API 수준에 대한 정보를 보존할 수 있습니다. 플래그가 설정되지 않은 경우 Android는 Build.VERSION.SDK_INT ro.product.first_api_level 에 할당합니다.

CTS 심 패키지

Android 10 이상에는 APEX 라는 패키지 형식이 포함되어 있습니다. APEX 관리 API에 대한 CTS 테스트를 실행하려면(예: 새 버전으로 업데이트 또는 활성 APEX 보고) /system 파티션에 CtsShimApex 패키지를 사전 설치해야 합니다.

APEX shim 유효성 검사 테스트는 CtsShimApex 구현을 확인합니다.

ro.apex.updatable 요구 사항

  • ro.apex.updatable 속성이 true 로 설정된 경우 APEX 패키지 관리를 지원하는 모든 기기에 CtsShimApex 가 필요합니다.

  • ro.apex.updatable 속성이 없거나 설정되지 않은 경우 CtsShimApex 기기에 사전 설치할 필요가 없습니다.

APEX shim 유효성 검사 테스트는 CtsShimApex 구현을 확인합니다.

CtsShim 사전 설치 및 사전 로드

Android 11부터 CtsShimApex 두 개의 미리 빌드된 앱( 빌드 소스 에서 빌드됨)이 포함되어 있으며 여기에는 매니페스트를 제외한 어떤 코드도 포함되지 않습니다. CTS는 이러한 앱을 사용하여 권한과 권한을 테스트합니다.

장치가 APEX 패키지 관리를 지원하지 않는 경우(즉, ro.apex.updatable 속성이 없거나 설정되지 않은 경우) 또는 장치가 버전 10 이하를 실행 중인 경우 두 개의 사전 빌드된 앱이 별도로 시스템.

장치 버전 사전 설치
(APEX가 지원되는 경우)
예압
x86 x86
안드로이드 12 android12-arm-릴리스
/system/apex/com.android.apex.cts.shim.apex 아래
android12-x86-릴리스
/system/apex/com.android.apex.cts.shim.apex 아래
android12-arm-CtsShim.apk
/system/app/CtsShimPrebuilt.apk 아래

android12-arm-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apk 아래

android12-x86-CtsShim.apk
/system/app/CtsShimPrebuilt.apk 아래

android12-x86-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apk 아래

안드로이드 11 android11-arm-릴리스
/system/apex/com.android.apex.cts.shim.apex 아래
android11-x86-릴리스
/system/apex/com.android.apex.cts.shim.apex 아래
android11-arm-CtsShim.apk
/system/app/CtsShimPrebuilt.apk 아래

android11-arm-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apk 아래

android11-x86-CtsShim.apk
/system/app/CtsShimPrebuilt.apk 아래

android11-x86-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apk 아래

안드로이드 10 android10 릴리스
/system/apex/com.android.apex.cts.shim.apex 아래
android10-arm-CtsShim.apk
/system/app/CtsShimPrebuilt.apk 아래

android10-arm-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apk 아래

android10-x86-CtsShim.apk
/system/app/CtsShimPrebuilt.apk 아래

android10-x86-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apk 아래

Android 9, O 및 O-MR1 해당 없음 해당 없음 arm-CtsShim.apk
/system/app/CtsShimPrebuilt.apk 아래

arm-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apk 아래

x86-CtsShim.apk
/system/app/CtsShimPrebuilt.apk 아래

x86-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apk 아래

테스트를 통과하려면 앱을 다시 서명하지 않고 시스템 이미지의 적절한 디렉터리에 앱을 미리 로드합니다.

샘플 애플릿

Android 9에는 개방형 모바일 API가 도입되었습니다. 둘 이상의 보안 요소를 보고하는 장치의 경우 CTS는 테스트 사례를 추가하여 Open Mobile API의 동작을 검증합니다. 이러한 테스트 사례에서는 샘플 애플릿을 DUT의 eSE(embedded Secure Element) 또는 DUT에서 사용하는 SIM 카드에 한 번만 설치해야 합니다. eSE 샘플 애플릿SIM 샘플 애플릿은 AOSP에서 찾을 수 있습니다.

개방형 모바일 API 테스트 사례 및 액세스 제어 테스트 사례에 대한 자세한 내용은 보안 요소에 대한 CTS 테스트를 참조하세요.

스토리지 요구 사항

CTS 미디어 스트레스 테스트를 위해서는 동영상 클립이 외부 저장소( /sdcard )에 있어야 합니다. 대부분의 클립은 Creative Commons Attribution 3.0 라이선스 에 따라 Blender Foundation이 저작권을 보유한 Big Buck Bunny 에서 가져온 것입니다.

필요한 공간은 장치에서 지원하는 최대 비디오 재생 해상도에 따라 다릅니다. 필요한 해상도의 플랫폼 버전은 Android 호환성 정의 문서 의 섹션 5를 참조하세요.

다음은 최대 비디오 재생 해상도별 스토리지 요구 사항입니다.

  • 480x360: 98MB
  • 720x480: 193MB
  • 1280x720: 606MB
  • 1920x1080: 1863MB

화면 및 스토리지

  • 화면이 내장되어 있지 않은 모든 장치는 화면에 연결해야 합니다.
  • 장치에 메모리 카드 슬롯이 있는 경우 빈 SD 카드를 연결합니다. SDHC 또는 SDXC 용량의 초고속(UHS) 버스를 지원하는 SD 카드 또는 최소 속도 클래스 10 이상의 SD 카드를 사용하여 CTS를 통과할 수 있도록 하십시오.

  • 장치에 SIM 카드 슬롯이 있는 경우 활성화된 SIM 카드를 각 슬롯에 연결합니다. 장치가 SMS를 지원하는 경우 각 SIM 카드에는 자체 번호 필드가 채워져 있어야 합니다. Android 12 이상을 실행하는 기기의 경우 모든 SIM 카드가 단축 다이얼링 번호(ADN) 저장을 지원해야 합니다. 통신 전용 파일(DF Telecom )이 있는 GSM 및 USIM 카드는 이 요구 사항을 충족합니다.

개발자 UICC

CTS 이동통신사 API 테스트를 실행하려면 기기에서 UICC 준비 에 지정된 요구사항을 충족하는 CTS 이동통신사 권한이 있는 SIM을 사용해야 합니다.

Android 기기 구성

  1. 기기 초기화: 설정 > 백업 및 초기화 > 초기화

  2. 기기의 언어를 영어( 미국 )로 설정: 설정 > 언어 및 입력 > 언어 .

  3. 기기에서 기본 글꼴 맞춤설정을 지원하는 경우 기본 sans-serif 글꼴 모음을 Roboto (AOSP 빌드에서 사용되는 기본 sans-serif 글꼴 모음)로 설정합니다.

  4. 기기에 GPS 또는 Wi-Fi/셀룰러 네트워크 기능이 있는 경우 위치 설정을 켭니다. 설정 > 위치 > 켜기 .

  5. IPv6를 지원하는 Wi-Fi 네트워크에 연결하고, DUT를 격리된 클라이언트 로 취급할 수 있으며(위의 물리적 환경 참조) 인터넷 연결이 있습니다( Settings > Wi-Fi ) .

  6. 기기에 잠금 패턴이나 비밀번호가 설정되어 있지 않은지 확인하세요. 설정 > 보안 > 화면 잠금 > 없음 .

  7. 장치에서 USB 디버깅 활성화: Settings > Developer options > USB debugging .

  8. 시간을 12시간 형식으로 설정: 설정 > 날짜 및 시간 > 24시간 형식 사용 > 끄기 .

  9. 장치가 깨어 있도록 설정: 설정 > 개발자 옵션 > 깨어 있음 > 켜기 .

  10. Android 5.x 및 4.4.x 에서만 모의 위치를 ​​허용하도록 기기를 설정합니다( 설정 > 개발자 옵션 > 모의 위치 허용 > 켜기) .

  11. Android 4.2 이상 에서 설정 > 개발자 옵션 > USB를 통한 앱 확인 > 끄기에서 USB 앱 확인을 끕니다.

  12. Android 13 이상 에서는 설정 > 개발자 옵션 > 모의 모뎀 허용 > 켜기로 기기를 모의 모뎀을 허용하도록 설정합니다.

  13. 브라우저를 실행하고 시작/설정 화면을 닫습니다.

  14. USB 케이블로 장치를 테스트하는 데 사용할 데스크톱 컴퓨터를 연결합니다.

  15. CTS를 실행하기 전에 사용자 액세스 어포던스(숨김 아님) 설정을 사용하여 Roboto2를 sans-serif 글꼴로 설정합니다.

파일 설치

장치에 도우미 앱을 설치하고 구성합니다.

  1. 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` 사용하여 기기 관리 테스트를 실행하도록 기기를 설정합니다.

      Settings > Security > Select device administrators 에서 두 개의 android.deviceadmin.cts.CtsDeviceAdminReceiver* 장치 관리자를 활성화합니다. android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver 및 기타 사전 로드된 기기 관리자가 비활성화된 상태로 유지되는지 확인합니다.

  2. 다음과 같이 CTS 미디어 파일을 기기에 복사합니다.

    1. 미디어 파일을 다운로드하고 압축을 푼 경로로 이동( cd )합니다.
    2. 파일 권한 변경: chmod u+x copy_media.sh

    3. 필요한 파일을 복사합니다.

      • 최대 720x480 해상도까지 클립을 복사하려면 다음을 실행하십시오.

        ./copy_media.sh 720x480
        
      • 최대 해상도가 확실하지 않은 경우 모든 파일을 복사합니다.

        ./copy_media.sh all
        
      • adb 아래에 여러 장치가 있는 경우 끝에 특정 장치의 직렬 옵션( -s )을 추가합니다. 예를 들어 직렬 1234567을 사용하여 최대 720x480을 장치에 복사하려면 다음을 실행합니다.

        ./copy_media.sh 720x480 -s 1234567