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

인스턴트 앱용 CTS

인스턴트 앱은 10의 핵심 기능이므로 제대로 작동하는 것이 중요합니다. 인스턴트 앱은 암시적으로 설치되므로 제한된 기능 세트를 가지며 더 제한적인 보안 샌드박스에서 실행됩니다. 이러한 제한사항의 광범위한 특성으로 인해 시스템의 일부가 인스턴트 앱과 제대로 작동하지 않을 위험이 있습니다. CTS 테스트 하위 세트를 생성하여 인스턴트 앱에서 허용하는 동작이 작동하는지 확인할 수 있습니다. 핵심 아이디어는 최소한의 테스트 세트를 포트로 분리하여 CTS의 크기 증가를 최소화하는 것입니다. 인스턴트 앱 모드에서 CTS 실행은 곧 테스트 APK를 인스턴트 앱으로 설치하여 테스트를 실행한다는 것을 의미합니다.

인스턴트 앱 제한사항

인스턴트 앱은 사용자가 설치하지 않으므로 제한된 샌드박스에서 실행되며 다음 제한사항이 적용됩니다.

  • 특정 권한만 보유할 수 있습니다.
  • 다른 앱이 인스턴트 앱에 공개되는 대상으로 표시되지 않는 한 앱을 볼 수 없습니다.
  • 특정 시스템 설정에만 액세스할 수 있습니다.
  • 특정 시스템 속성에만 액세스할 수 있습니다.
  • 서비스/제공자를 노출할 수 없습니다.
  • 브로드캐스트와 관련된 특별한 규칙으로 수신하고 전송할 수 있습니다.

또한 인스턴트 앱은 새로운 보안 샌드박스에서 더 많은 제한사항을 추가할 수 있도록 선택해야 합니다. 인스턴트 앱과 관련된 광범위하고 특별한 특성은 플랫폼 전체에 적용되므로 인스턴트 앱이 모든 Android 기기에서 예상대로 작동하는지 확인하는 방법이 있어야 합니다.

인스턴트 앱 모드에서 테스트 실행

일부 CTS 모듈에는 인스턴트 앱에 적용되는 테스트가 없습니다. 모듈에서 테스트한 기능이 시스템 서버와 상호작용한다면 이러한 테스트는 인스턴트 앱 모드에서 실행해야 합니다. 예를 들어 OpenGL 테스트는 시스템 서버와 상호작용하지 않으므로 인스턴트 앱 모드에서 이 테스트를 실행할 필요가 없지만, 접근성 테스트는 시스템 서버와 상호작용하므로 인스턴트 앱 모드에서 이 테스트를 실행할 필요가 있습니다.

적용 가능한 모듈을 식별하는 것 외에도 사용자는 이러한 모듈에서 어떤 테스트가 적절한지 결정해야 합니다. 예를 들어 플러그형 아키텍처(예: AccessibilityService)의 서비스별 동작 테스트는 인스턴트 앱 모드에 적용할 수 없습니다. 인스턴트 앱이 플랫폼을 포함한 다른 앱에 서비스를 노출할 수 없기 때문입니다. 하지만 앱 측 동작의 유효성을 검사하는 테스트는 인스턴트 앱 모드에 적용할 수 있습니다. 또 다른 예는 인스턴트 앱이 보유할 수 없는 권한 뒤에 있는 동작의 유효성을 검사하는 테스트지만 인스턴트 앱 모드에서는 적절하지 않습니다. 예를 들어 서비스를 노출하지 않거나 다른 앱을 볼 수 없는 등의 동작 방식과 관련된 규칙을 검증하는 인스턴트 앱에만 적용되는 테스트 세트가 있습니다. 일반적으로 이러한 테스트는 이미 작성되어 있으며 포팅이 필요하지 않습니다.

인스턴트 모드에서 테스트 실패

인스턴트 앱이 액세스할 수 없는 기능의 유효성을 검사하기 때문에 테스트가 실패하면 이 테스트는 인스턴트 앱 모드에 적용할 수 없습니다. 테스트에 @AppModeFull로 주석을 달아 테스트를 전체 앱 모드에서만 실행하도록 표시합니다. 이 주석을 클래스 수준에 적용하여 클래스 수준의 모든 테스트를 제외할 수 있습니다.

인스턴트 앱에서 액세스할 수 있는 일부 기능이 손상되어 테스트가 실패하면 버그를 신고합니다.

문제해결

기기에 MyCtsModule.apk를 설치하지 못함, 이유: '-116'으로 테스트가 실패하면 logcat에서 PackageManager 메시지를 찾습니다. 예를 들어 메시지가 전체 앱을 인스턴트 앱으로 바꿀 수 없음: your_app이라고 표시되면 먼저 앱을 제거(adb uninstall)합니다.