Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

CTS 설정

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

물리적 환경

블루투스 LE 비콘

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

카메라

카메라 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 테스트에는 IPv6를 지원하고, 인터넷 연결이 가능하며, DUT를 격리된 클라이언트로 처리할 수 있는 Wi-Fi 네트워크가 필요합니다. 격리된 클라이언트는 DUT에서 이런 서브네트워크의 브로드캐스트/멀티네트워크 메시지를 볼 수 없도록 구성된 것을 말합니다. Wi-Fi AP 구성을 사용하거나 다른 기기가 연결되지 않은 채 격리된 서브네트워크에서 DUT를 실행하는 경우가 이에 해당합니다.

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

Wi-Fi RTT

Android에는 Wi-Fi 왕복 시간(RTT) 기능을 위한 Wi-Fi RTT API가 있습니다. 이 API를 통해 기기는 1~2미터의 정확도로 액세스 포인트까지의 거리 측정이 가능해 실내 위치 정확도가 크게 증가합니다.

Wi-Fi RTT를 지원하는 권장 기기 목록은 Wi-Fi RTT(IEEE 802.11mc)Wi-Fi 위치: RTT로 범위 지정을 참고하세요.

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

데스크톱 컴퓨터 설정

ADB 및 AAPT

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

ADB를 설치하려면 운영체제에 맞는 Android SDK 도구 패키지를 다운로드하고 패키지를 연 다음 포함된 README 파일의 안내를 따르세요. 문제 해결 정보는 독립형 SDK 도구 설치를 참고하세요.

adbaapt 코드가 시스템 경로에 있어야 합니다. 다음 명령어는 홈 디렉터리에서 패키지 보관 파일을 열었다고 가정합니다.

export PATH=$PATH:$HOME/android-sdk-linux/build-tools/version

Ubuntu용 자바 개발 키트

적절한 버전의 자바 개발 키트(JDK)를 설치합니다.

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

자세한 내용은 JDK 요구 사항을 참고하세요.

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_PROPERTY_OVERRIDES를 추가하여 이 속성을 설정할 수 있습니다.

#ro.product.first_api_level indicates the first api level that the device has
been commercially launched on.
PRODUCT_PROPERTY_OVERRIDES +=\
ro.product.first_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를 사전 설치할 필요가 없습니다.

CtsShim 사전 설치 및 미리 로드

Android 11부터 CtsShimApex에는 두 개의 사전 빌드된 앱(빌드 소스에서 빌드됨)이 포함됩니다. 이러한 앱은 매니페스트를 제외하고 다른 코드를 포함하지 않습니다. CTS는 이 앱을 사용하여 권한을 테스트합니다.

기기에서 APEX 패키지 관리를 지원하지 않는다면(즉, ro.apex.updatable 속성이 누락되거나 설정되지 않았다면) 또는 기기에서 버전 10 이하를 실행하고 있다면 이 두 개의 사전 빌드 앱은 시스템에 별도로 사전 설치되어야 합니다.

기기 버전 사전 설치 (APEX가 지원되는 경우) 프리로드
ARM x86 ARM x86
Android 11 android11-arm-release
/system/apex/com.android.apex.cts.shim.apex 아래
android11-x86-release
/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 아래

Android 10 android10-release
/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 N/A N/A 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에서는 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를 참고하세요.

DUT의 동영상 재생 기능은 Android 이전 버전의 경우 android.media.CamcorderProfile API를 통해, Android 5.0부터는 android.media.MediaCodecInfo.CodecCapabilities API를 통해 확인됩니다.

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

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

화면 및 저장용량

  • 내장형 화면이 없는 기기는 화면에 연결해야 합니다.
  • 기기에 메모리 카드 슬롯이 있으면 빈 SD 카드를 연결합니다. SDHC 또는 SDXC 용량의 초고속(UHS) 버스를 지원하는 SD 카드 또는 CTS를 통과할 수 있도록 속도 등급이 10 이상인 SD 카드를 사용하세요.
  • 기기에 SIM 카드 슬롯이 있는 경우 활성화된 SIM 카드를 각 슬롯에 연결합니다. 기기에서 SMS를 지원한다면 각 SIM 카드의 숫자 입력란이 채워져 있어야 합니다.

개발자 UICC

CTS 이동통신사 API 테스트를 실행하려면 기기에 이동통신사 권한 규칙이 포함된 SIM 카드가 있어야 합니다. UICC 준비를 참고하세요.

Android 기기 설정

  1. 기기 초기화: 설정 > 백업 및 초기화 > 초기화
  2. 기기의 언어를 영어(미국)로 설정: 설정 > 언어 및 입력 > 언어
  3. 기기에 GPS 또는 Wi-Fi/셀룰러 네트워크 기능이 있는 경우 위치 설정 켜기: 언어 > 위치 > 사용
  4. IPv6를 지원하고, DUT를 격리된 클라이언트로 취급할 수 있으며(위의 물리적 환경 참고), 인터넷 연결이 가능한 Wi-Fi 네트워크에 연결: 설정 > Wi-Fi
  5. 기기에 잠금 패턴이나 비밀번호가 설정되어 있지 않은지 확인: 설정 > 보안 > 화면 잠금 > 없음
  6. 기기에서 USB 디버깅을 사용 설정: 설정 > 개발자 옵션 > USB 디버깅
  7. 12시간 형식으로 시간 설정: 설정 > 날짜 및 시간 > 24시간 형식 사용 > 사용 안함
  8. 기기의 절전모드 해제 설정: 설정 > 개발자 옵션 > 절전모드 해제 > 사용
  9. Android 5.x 및 4.4.x에 한해 기기가 가상 위치를 허용하도록 설정: 설정 > 개발자 옵션 > 가상 위치 허용 > 사용
  10. Android 4.2 이상에서 USB 앱 인증 끄기: 설정 > 개발자 옵션 > USB를 통해 설치된 앱 확인 > 사용 안함
  11. 브라우저를 실행하고 시작/설정 화면을 닫습니다.
  12. 기기 테스트에 사용할 데스크톱 컴퓨터에 USB 케이블을 연결합니다.

파일 설치

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

  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