Cuttlefish는 구성 가능한 가상 Android 기기로, Google Cloud Engine과 같은 서드 파티 클라우드 서비스를 사용하여 원격으로 실행할 수도 있고 Linux x86 머신에서 로컬로 실행할 수도 있습니다.
Cuttlefish 목표
- 플랫폼 및 앱 개발자가 실제 하드웨어에 의존하지 않고 자유롭게 코드 변경사항을 개발하고 검증할 수 있도록 지원합니다.
- 핵심 프레임워크에 맞게 조정하여 고충실도에 중점을 두고 실제 기기의 프레임워크 기반 동작을 복제합니다.
- API 수준 28 이후의 모든 API 수준을 지원합니다.
- 실제 하드웨어의 동작에 따라 전체 API 수준에서 일관된 수준의 기능을 제공합니다.
확장을 지원합니다.
- 여러 기기를 동시에 실행하는 기능을 제공합니다.
- 낮은 진입 비용으로 고충실도의 동시 테스트를 실행할 수 있습니다.
폼 팩터, RAM, CPU 등을 조정할 수 있는 기능이 포함된 구성 가능한 기기를 제공합니다.
Cuttlefish와 다른 기기 비교
Cuttlefish와 Android Emulator
Android Emulator와 많이 유사하지만 Cuttlefish는 순수 AOSP인지 자체 트리의 맞춤 구현인지와 상관없이 Android 프레임워크에서 높은 충실도를 보장합니다. 즉, 실제 애플리케이션의 경우 동일하게 맞춤설정된 Android OS 소스 또는 순수 Android OS 소스로 빌드된 실제 휴대전화 타겟과 같이 OS 수준에서 Cuttlefish가 상호작용에 응답합니다.
Android Emulator는 애플리케이션 개발을 간소화해주는 사용 사례를 기반으로 제작되었으며 Android 앱 개발자의 사용 사례에 관심을 유도하는 많은 기능적 유인 요소를 포함합니다. 맞춤형 Android 프레임워크를 사용하여 에뮬레이터를 빌드하려는 경우에 이러한 기능적 유인 요소는 문제가 될 수 있습니다. 맞춤 플랫폼/프레임워크 코드 또는 기타 Android를 대표할 가상 기기가 필요하다면 Cuttlefish가 이상적인 가상 옵션이며 AOSP 개발의 현재 상태를 나타내는 표준 기기입니다.
Cuttlefish 및 실제 기기
Cuttlefish 가상 기기와 실제 기기의 주요 차이점은 하드웨어 추상화 레이어(HAL) 수준 및 맞춤 하드웨어와 상호작용하는 소프트웨어에 있습니다. 하드웨어별 구현을 제외하고 Cuttlefish와 실제 기기는 기능적으로 동일하게 작동해야 합니다.
Cuttlefish는 어떻게 활용하나요?
디버깅에 사용하는 다른 Android 기기와 동일한 방식으로 Cuttlefish와 상호작용할 수 있습니다. Cuttlefish는 adb를 통해 일반 기기로 직접 등록하므로 개발자가 원격 데스크톱을 통해 실제 기기처럼 상호작용할 수 있습니다. 애플리케이션 테스트, 맞춤 시스템 빌드 테스트 등 광범위한 사용 사례를 포괄합니다.
Cuttlefish는 전체 프레임워크 충실도에 중점을 두기 때문에 에뮬레이션할 수 없는 물리적 하드웨어에 의존하지 않으면서 프레임워크 및/또는 애플리케이션의 기능을 테스트하는 데 사용할 수 있습니다.
Cuttlefish는 테스트에 일반적으로 어떻게 사용되나요?
Cuttlefish는 테스트에서 일반적으로 다음과 같은 분야에 적용됩니다.
- CTS
- 프레임워크 규정 준수
- 지속적 통합 테스트
- 맞춤 테스트 제품군
클라우드에서 Cuttlefish를 호스팅할 수 있나요?
예, Cuttlefish는 기본적으로 Google Cloud를 지원하며 다른 클라우드 플랫폼도 지원할 계획입니다.
시작하기
AOSP를 기반으로 Cuttlefish 인스턴스를 만드는 방법은 Cuttlefish 사용을 참고하세요.