지난 12월에 Android Emulator용 Quick Boot가 발표되었습니다. Quick Boot를 사용하면 6초 이내에 Android Emulator를 시작할 수 있습니다. Quick Boot는 에뮬레이터 세션을 스냅샷하는 방식으로 작동하므로 몇 초 만에 다시 시작할 수 있습니다. Quick Boot는 Canary 업데이트 채널에서 Android Studio 3.0을 통해 처음 출시되었으며, 오늘 이 기능을 안정적인 업데이트로 출시하게 되어 기쁩니다.
이 새로운 기능과 더불어 최근 출시에서 일부 주요 기능을 강조하고 싶었습니다.
2년 전 Android Emulator의 완벽한 개편 이래, Google은 지속적으로 속도와 안정성을 개선하고 앱 개발 및 테스트를 가속화하는 다양한 기능을 추가하는 데 중점을 두고 있습니다. 최근의 모든 변경 사항과 함께, 오늘 최신 버전의 Android Emulator로 업데이트하여 사용할 만한 충분한 가치가 있습니다.
다섯 가지 주요 기능
- Quick Boot - 안정적인 기능으로 출시된 Quick Boot를 사용하면 6초 이내에 Android Emulator의 기존 세션으로 복귀할 수 있습니다. Android Emulator로 AVD(Android Virtual Device)를 처음 시작할 때는 콜드 부팅(기기의 전원 켜기)을 수행해야 하지만, 이후로는 빠르게 시작할 수 있고, 가장 마지막으로 에뮬레이터를 닫았던 상태로 복원됩니다(기기 절전 모드 해제와 유사). 이 기능은 기존 에뮬레이터 스냅샷 아키텍처를 가상 센서 및 GPU 가속화를 통해 작동하도록 완전히 재구성하는 방식으로 구현되었습니다. Quick Boot는 Android Emulator v27.0.2부터 기본적으로 지원되기 때문에 별도의 설정이 필요하지 않습니다.
Android Emulator의 Quick Boot
- Android CTS 호환성 - 각 Android SDK 출시를 통해 우리는 Android KitKat 이전 버전과의 호환성 테스트에서 개발자 프리뷰의 최신 API 통합에 이르기까지 Android Emulator가 앱 개발 요구사항에 적합하다는 점을 확인했습니다. 에뮬레이터 시스템 이미지의 제품 품질과 신뢰성을 높이기 위해 Android Nougat(API 24) 이상부터 최종 Android 시스템 이미지 빌드에 대해 공식적인 Android 실제 기기가 통과해야 하는 것과 동일한 Android 호환성 테스트(CTS; Compatibility Test Suite)를 적용합니다.
- Google Play 지원 - 많은 앱 개발자가 Google Play 서비스를 사용하고 있으며 Android Emulator 시스템 이미지에서 서비스를 최신 상태로 유지하기 어려울 수 있음을 알고 있습니다. 이 문제를 해결하기 위해 Play 스토어 앱을 포함한 Android 시스템 이미지 버전을 제공합니다. Google Play 이미지는 Android Nougat(API 24)부터 사용할 수 있습니다. 이 새로운 에뮬레이터 이미지를 사용하면 실제 Android 기기에서와 마찬가지로 에뮬레이터에서 Play 스토어 앱을 통해 Google Play 서비스를 업데이트할 수 있습니다. 또한 Google Play 스토어에서 엔드-투-엔드 설치, 업데이트 및 구매 흐름을 테스트할 수 있습니다.
- 성능 개선 - 우리 팀에서 현재 추구하는 목표는 에뮬레이터를 빠르고 효율적으로 만드는 것입니다. 우리는 개발 시스템에서 에뮬레이터 실행 시 성능에 미치는 영향, 특히 RAM 사용량을 지속적으로 살펴보고 있습니다. 최신 버전의 Android Emulator에서는 AVD에 정의된 최대 RAM 크기로 메모리를 할당하고 고정하는 대신 필요에 따라 RAM을 할당합니다. 이를 위해 Linux(KVM) 및 macOS® (Hypervisor.Framework)의 경우 네이티브 하이퍼바이저, Microsoft® Windows® 의 경우 새로운 주문형 메모리 할당을 사용하도록 향상된 Intel®HAXM(v6.2.1 이상)을 활용합니다.
또한 지난 여러 번의 출시를 통해 OpenGL ES 3.0 지원을 포함하여 GPU 성능이 향상되고 CPU 및 I/O 성능이 개선되었습니다. ADB 푸시와 같은 일반적인 작업을 살펴보면 Android CPU 및 I/O 파이프라인의 개선이 눈에 띕니다.
Android Emulator를 이용한 ADB 푸시 속도 비교
GPU 성능 측면에서 시간 경과에 따른 개선을 측정하기 위해
GPU 에뮬레이션 스트레스 테스트 앱 샘플을 만들었습니다. 우리는 최신 에뮬레이터가 전보다 빠른 프레임 렌더링 속도를 제공할 수 있고, Android 사양에 따라 OpenGL ES 3.0을 정확하게 렌더링할 수 있는 몇 안 되는 에뮬레이터 중 하나라는 사실을 알게 되었습니다.
GPU 에뮬레이션 스트레스 테스트 - Android 앱
Android Emulator를 이용한 GPU 에뮬레이션 스트레스 테스트
추가 기능
이러한 주요 기능 외에도 지난 한 해 동안 Android Emulator에 추가되었지만 여러분이 모를 수도 있는 다음과 같은 기능들이 있습니다.
- Wi-Fi 지원 - API 24 시스템 이미지부터는 가상 셀룰러 네트워크와 가상 Wi-Fi 액세스 포인트에 모두 연결되는 AVD를 만들 수 있습니다.
- Google Cast 지원 - Google Play 시스템 이미지 사용 시 화면과 오디오 콘텐츠를 동일한 Wi-Fi 네트워크의 Chromecast 기기로 전송할 수 있습니다.
- APK 및 파일 드래그 앤 드롭 - APK를 Android Emulator 창으로 드래그하여 간단히 앱 설치를 시작할 수 있습니다. 또한 다른 데이터 파일을 드래그하고 Android Virtual Device의 /Downloads 폴더에서 찾을 수 있습니다.
- 복사 및 붙여넣기 호스팅 - Android Emulator와 개발 시스템 간에 텍스트를 복사하고 붙여넣을 수 있습니다.
- 가상 두 손가락 모으기 및 확대/축소 - Google 지도와 같은 앱과 상호작용할 때 Ctrl 키(Microsoft® Windows® 또는 Linux) 또는 ⌘(macOS® )를 길게 누르면 화면에 손가락 모으기 및 확대/축소 동작을 도와주는 손가락 오버레이가 나타납니다.
- GPS 위치 - Android Emulator의 Location 탭에서 GPS 지점 또는 GPS 지점 세트를 수동으로 선택합니다.
- 가상 센서 - 확장된 제어판에는 가속, 회전, 근접 등을 포함하여 Android Emulator의 센서를 지원하는 전용 페이지가 있습니다.
- 웹캠 지원 - 웹캠 또는 노트북에 내장된 웹캠을 AVD의 가상 카메라로 사용할 수 있습니다. AVD Manager의 Advanced Settings 페이지에서 AVD 카메라 설정을 확인하세요.
- 시스템 키보드 호스팅 - 실제 키보드를 사용하여 Android Virtual Device에 텍스트를 입력할 수 있습니다.
- 가상 SMS 및 전화 통화 - 확장된 제어판에서 가상 SMS 또는 전화 통화를 시작하여 전화 종속성이 있는 앱을 테스트할 수 있습니다.
- 화면 확대/축소 - 기본 툴바에서 돋보기 아이콘을 클릭하여 확대/축소 모드로 전환한 다음 검사할 화면 영역을 선택합니다.
- 창 크기 조정 - Android Emulator 창 모서리를 드래그하는 방식으로 간단히 원하는 크기로 변경할 수 있습니다.
- 네트워크 프록시 지원 - Proxy 탭 아래의 Settings 페이지로 이동하여 Android Emulator 세션에 대한 맞춤 HTTP 프록시를 추가합니다.
- 버그 신고 - 확장된 제어판의 Bug Report 섹션을 사용하여 팀과 공유하거나 Google에 피드백을 보내는 방식으로 앱에 대한 버그 신고를 신속하게 생성할 수 있습니다.
Emulator 문서에서 Android Emulator에 대해 자세히 알아보세요.
시작하기
이러한 모든 기능과 개선 사항은 Android Studio의 SDK Manager를 통해 다운로드할 수 있는 Android Emulator v27.0.2 이상에서 사용할 수 있습니다. 빠른 사용 환경을 위해 최신 Android Emulator, Intel® HAXM(해당되는 경우) 및 그래픽 드라이버가 설치된 x86 버전의 에뮬레이터 시스템 이미지를 만들어 실행하는 것이 좋습니다.
어떤 점이 마음에 드는지, 어떤 문제나 기능에 대해 알고 싶은지 피드백을 보내주시면 감사하겠습니다. 버그나 문제를 발견하거나 기능 요청 사항이 있으시면 언제든지
문제를 제기해 주세요. 아직 끝나지 않았지만 지금까지의 개선 사항에 대해 기대하셔도 좋습니다.