CTS 설정

CTS를 실행하려면 먼저 물리적 환경, 데스크톱 컴퓨터, 테스트에 사용 중인 Android 기기를 준비합니다.

물리적 환경

블루투스 LE 비콘

테스트 대상 기기(DUT)에서 블루투스 LE를 지원하는 경우 DUT의 5미터 반경 내에 3개 이상의 블루투스 LE 비콘을 배치하여 블루투스 LE 검사 테스트를 실시합니다. 이러한 비콘은 구성되거나 특정 항목을 내보낼 필요가 없으며, iBeacon, Eddystone 또는 BLE 비콘 시뮬레이션 기기를 비롯하여 종류에 제한이 없습니다.

초광대역

DUT가 초광대역(UWB)을 지원하는 경우 UWB를 지원하는 다른 기기는 안테나 및 무선 사각지대가 없도록 매우 가깝게 배치하고 방향을 지정해야 합니다. 거리 정확도 테스트의 경우 특정 배치 및 방향 요구사항이 있습니다. 설정에 관한 자세한 내용은 UWB 요구사항을 참고하세요. UWB 테스트는 수동으로 실행하여 1미터 떨어져 있는 두 기기를 명령줄에서 지정합니다. 이 테스트에 필요한 샤딩에 관한 자세한 내용은 로컬 샤딩을 참고하세요.

카메라

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

테스트 중인 센서가 CONTROL_AE_TARGET_FPS_RANGE에 지정된 최대 구성 타겟 초당 프레임 수(FPS)에 도달하여 이 상태를 유지하도록 조명이 충분한 장면을 카메라 센서로 가리킵니다. 목록에 있는 모든 기기를 대상으로 테스트가 반복되고 성능이 개별적으로 측정되기 때문에 이는 getCameraIdList에서 보고된 모든 카메라 센서에 적용됩니다.

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

GPS/GNSS

DUT가 위성 위치 확인 시스템/글로벌 항법 위성 시스템(GPS/GNSS) 기능을 지원한다면 수신 및 GPS 위치 계산에 적합한 신호 수준에서 DUT로 GPS/GNSS 신호를 제공합니다. GPS 부분은 ICD-GPS-200C를 준수해야 합니다. 그 밖에도 GPS/GNSS 신호는 위성 시뮬레이터나 실외 신호의 GPS/GNSS 중계기를 비롯하여 어떤 종류든 될 수 있으며, 또는 DUT를 GPS/GNSS 신호를 직접 수신할 수 있을 정도로 창에 가까이 배치할 수 있습니다.

Wi-Fi 및 IPv6

CTS 테스트를 실행하려면 IPv4 및 IPv6를 지원하고, IPv4 및 IPv6용 DNS가 작동하는 인터넷 연결이 가능하며, IP 멀티캐스트를 지원하고, DUT를 격리된 클라이언트로 처리할 수 있는 Wi-Fi 네트워크가 필요합니다. 격리된 클라이언트는 DUT에서 이런 서브네트워크의 브로드캐스트/멀티네트워크 메시지를 볼 수 없는 구성입니다. 이는 Wi-Fi 액세스 포인트(AP) 구성을 사용하거나 다른 기기가 연결되지 않은 채 격리된 서브네트워크에서 DUT를 실행할 때 발생합니다.

네이티브 IPv6 네트워크, IPv6 이동통신사 네트워크 또는 VPN에 대한 액세스 권한이 없어 IPv6에 종속된 일부 테스트를 통과할 수 없는 경우 Wi-Fi 액세스 포인트 및 IPv6 터널을 사용할 수 있습니다.

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

Wi-Fi STA/STA 동시 실행을 지원하는 기기의 경우 여러 개의 Wi-Fi 네트워크(2개 이상)가 필요합니다. CTS를 통과하려면 Wi-Fi 네트워크가 서로 다른 SSID를 갖는 서로 다른 대역에서 또는 서로 다른 BSSID를 갖는 동일한 SSID에서 실행되어야 합니다.

Wi-Fi RTT

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

액세스 포인트는 전원이 켜져 있어야 하지만 네트워크 연결은 필요하지 않습니다. 액세스 포인트가 테스트 기기 옆에 있을 필요는 없지만, DUT에서 12미터 이내에 있는 것이 좋습니다. 일반적으로 1개의 액세스 포인트로 충분합니다.

데스크톱 컴퓨터 설정

주의: CTS는 64비트 Linux 시스템을 지원합니다. Windows OS나 MacOS에서는 CTS가 지원되지 않습니다.

FFMPEG

호스트 머신에 ffmpeg 버전 5.1.3(또는 이상) 패키지를 설치합니다.

호스트 머신 업그레이드

CTS 호스트 머신 RAM을 128GB로, HDD를 256GB로 업그레이드하는 것이 좋습니다. 증가된 CTS 테스트 사례 수와 tradefed의 Java 힙 공간 예약 증가를 수용해야 합니다.

ADB 및 AAPT2

CTS를 실행하기 전에 최신 버전의 Android 디버그 브리지(adb)Android Asset Packaging Tool(AAPT2)을 설치했고 이러한 도구의 위치를 컴퓨터 시스템 경로에 추가했는지 확인합니다.

ADB 및 AAPT2를 설치하려면 Android 스튜디오 SDK Manager 또는 sdkmanager 명령줄 도구에서 최신 버전의 Android SDK 플랫폼 도구Android SDK 빌드 도구를 다운로드하세요.

adbaapt2 코드가 시스템 경로에 있어야 합니다. 다음 명령어는 패키지 보관 파일을 홈 디렉터리의 android-sdk라는 하위 디렉터리에 다운로드했다고 가정합니다.

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

Ubuntu용 Java 개발 키트

적절한 버전의 Java 개발 키트(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 파일

호환성 테스트 모음 다운로드에서 기기의 Android 버전 및 기기에서 지원하는 모든 Application Binary Interface(ABI)에 맞는 CTS 패키지를 다운로드하여 엽니다.

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

기기 감지

단계에 따라 기기를 감지하도록 시스템을 설정합니다.

메모리 한도

cts-tradfed 스크립트에서 테스트를 실행하는 중에 사용할 수 있는 최대 메모리를 늘리는 것이 좋습니다. 자세한 내용은 CL 예를 참고하세요.

Android 기기 설정

사용자 빌드

호환 가능한 기기는 사용자/출시 키 서명 빌드가 포함된 기기로, 코드명, 태그 및 빌드 번호에서 호환 가능한 사용자 빌드(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 속성을 코드명, 태그 및 빌드 번호에서 유효한 값으로 설정합니다.

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

Android 8.x 이하를 사용하여 출시된 기기의 경우 제품 첫 번째 빌드의 ro.product.first_api_level 속성을 설정 해제(삭제)합니다. 모든 후속 빌드의 경우 올바른 API 수준 값으로 ro.product.first_api_level을 설정합니다. 그러면 속성에서 올바르게 새 제품을 식별하고 제품의 첫 번째 API에 관한 정보를 보존할 수 있습니다. 플래그가 설정 해제된 경우 Android에서 ro.product.first_api_levelBuild.VERSION.SDK_INT를 할당합니다.

CTS shim 패키지

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가 지원되는 경우 적절한 버전의 사전 설치가 /system/apex/com.android.apex.cts.shim.apex로 배치되어야 합니다.

사전 빌드된 일반 앱이 사용되는 경우 적절한 버전의 CtsShimCtsShimPriv가 각각 /system/app/CtsShimPrebuilt.apk/system/priv-app/CtsShimPrivPrebuilt.apk로 배치되어야 합니다.

다음 표에는 각 기기 버전과 아키텍처에 사용 가능한 사전 설치 및 미리 로드가 나열되어 있습니다.

기기 버전 사전 설치
(APEX가 지원되는 경우)
미리 로드
ARM x86 ARM x86
Android 14 android14-arm-release android14-x86-release android14-arm-CtsShim.apk

android14-arm-CtsShimPriv.apk

android14-x86-CtsShim.apk

android14-x86-CtsShimPriv.apk

Android 13 android13-arm-release android13-x86-release android13-arm-CtsShim.apk

android13-arm-CtsShimPriv.apk

android13-x86-CtsShim.apk

android13-x86-CtsShimPriv.apk

Android 12 android12-arm-release android12-x86-release android12-arm-CtsShim.apk

android12-arm-CtsShimPriv.apk

android12-x86-CtsShim.apk

android12-x86-CtsShimPriv.apk

Android 11 android11-arm-release android11-x86-release android11-arm-CtsShim.apk

android11-arm-CtsShimPriv.apk

android11-x86-CtsShim.apk

android11-x86-CtsShimPriv.apk

Android 10 android10-release android10-arm-CtsShim.apk

android10-arm-CtsShimPriv.apk

android10-x86-CtsShim.apk

android10-x86-CtsShimPriv.apk

Android 9, O 및 O-MR1 N/A N/A arm-CtsShim.apk

arm-CtsShimPriv.apk

x86-CtsShim.apk

x86-CtsShimPriv.apk

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

샘플 애플릿

Android 9에서는 Open Mobile API가 도입되었습니다. 두 개 이상의 보안 요소를 보고하는 기기의 경우 CTS는 테스트 사례를 추가하여 Open Mobile API의 동작을 검증합니다. 이러한 테스트 사례는 DUT의 내장된 보안 요소(eSE) 또는 DUT에서 사용하는 SIM 카드에 샘플 애플릿을 일회성으로 설치해야 합니다. eSE 샘플 애플릿SIM 샘플 애플릿은 AOSP에서 찾을 수 있습니다.

Open Mobile API 테스트 사례 및 액세스 제어 테스트 사례에 관한 자세한 내용은 보안 요소에 관한 CTS 테스트를 참고하세요.

저장용량 요구사항

CTS 미디어 스트레스 테스트를 실시하려면 동영상 클립이 외부 저장소(/sdcard)에 있어야 합니다. 대부분의 클립은 Big Buck Bunny의 것으로 크리에이티브 커먼즈 저작자 표시 3.0 라이선스에 따라 저작권은 Blender Foundation에 있습니다.

필요한 공간은 기기에서 지원하는 최대 동영상 재생 해상도에 따라 다릅니다. 필수 해상도의 플랫폼 버전은 Android 호환성 정의 문서의 섹션 5를 참고하세요.

최대 동영상 재생 해상도별 저장용량 요구사항은 다음과 같습니다.

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

화면 및 저장용량

  • 내장형 화면이 없는 기기는 화면에 연결해야 합니다.
  • 기기에 메모리 카드 슬롯이 있으면 빈 SD 카드를 연결합니다. SDHC 또는 SDXC 용량의 초고속(UHS) 버스를 지원하는 SD 카드 또는 CTS를 통과할 수 있도록 속도 등급이 10 이상인 SD 카드를 사용하세요.

  • 기기에 SIM 카드 슬롯이 있는 경우 활성화된 SIM 카드를 각 슬롯에 연결합니다. 기기에서 SMS를 지원한다면 각 SIM 카드의 숫자 입력란이 채워져 있어야 합니다. Android 12 이상을 실행하는 기기의 경우 모든 SIM 카드에서 축약된 전화번호(ADN) 저장을 지원해야 합니다. 텔레콤 전용 파일(DFTelecom)이 포함된 GSM 및 USIM 카드는 이 요구사항을 충족합니다.

개발자 UICC

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

Android 기기 설정

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

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

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

  4. 기기에 GPS 또는 Wi-Fi/셀룰러 네트워크 기능이 있는 경우 위치 설정 켜기: 언어 > 위치 > 사용

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

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

  7. 기기에서 USB 디버깅을 사용 설정: 설정 > 개발자 옵션 > USB 디버깅

  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`

      설정 > 보안 > 기기 관리자 선택에서 두 개의 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