Android Emulator는 Android 스튜디오에 포함되어 있습니다.
버전 25.3.0 이전의 에뮬레이터는 Android SDK 도구의 일부로 배포되었습니다.
최신 버전을 사용 중인지 확인하려면 SDK Manager에서 업데이트를 확인하세요.
이전 버전의 Android Emulator를 다운로드하려면 에뮬레이터 다운로드 자료실을 참고하세요.
버전 25.3.0 이전의 에뮬레이터 출시 노트는 Android SDK 도구 출시 노트를 참고하세요.
알려진 문제와 문제 해결 방법은 에뮬레이터 문제 해결을 참고하세요.
34.2.16 (2024년 7월 9일)
- [버그 수정] Pixel Fold를 접거나 펼칠 때 UI가 정지됨
- [버그 수정] Android 버전이 Android Vanilla Ice Cream으로 잘못 표시됨 Mac M1에서 API 35 대신 미리보기
- [버그 수정] 문제 #296162661: Pixel C 태블릿 에뮬레이터에서 HasSystemFeature FEATURE_SENSOR_HINGE_ANGLE이 true를 반환함
34.2.15 (2024년 5월 31일)
- 스윙 모드 및 광고주 정리와 관련된 다양한 비정상 종료 수정
34.2.14 (2024년 5월 20일)
Android 스튜디오 Jellyfish 안정화 패치 1로 테스트되었습니다.
- [버그 수정] 삽입된 에뮬레이터에서 스냅샷이 가끔 중단됨
- [버그 수정] '아니요' '취소'를 클릭합니다. 스냅샷에서 버튼이 제대로 작동하지 않음
- [버그 수정] 방향 패드 버튼이 작동하지 않음
- [버그 수정] Windows에서 ANGLE과 함께 GPU 모드를 사용할 때 에뮬레이터가 일부 조건에서 시작되지 않고 로그에 'Failed to GL 에뮬레이션을 초기화하지 못했습니다'라는 오류 메시지가 반환되는 문제를 수정했습니다.
-gpu swangle_indirect
옵션을 사용하여 명령줄로 에뮬레이터를 시작하면 이 버전에서도 이 오류가 발생할 수 있습니다. 이 버전의 소프트웨어 그래픽 렌더링이 있는 Windows에서 명령줄을 사용하여 에뮬레이터를 시작하려면-gpu swiftshader_indirect
를 사용하세요. - [버그 수정] 키보드의 위치 단축키가 사용할 수 없는 지도를 로드함
- [버그 수정] 위치를 설정하는 동안 '경로 저장'이 표시됨 대화상자가 없음
34.2.13 (2024년 4월 30일)
Android 스튜디오 Jellyfish 안정화 버전으로 테스트되었습니다.
- Qt 6.5.3으로 업데이트
- 5월 말에 출시될 예정입니다
- 중요한 비정상 종료 수정
- Pixel AVD의 다양한 수정사항
- 소프트웨어 렌더링에 사용되는 그래픽 라이브러리 업데이트
- [버그 수정]문제 225541819 Chrome을 시작하면 x86_64에서 에뮬레이터가 비정상 종료됨
- [버그 수정]문제 314614435
-http-proxy
스위치가 잘못 파싱됩니다.
34.1.20 (2024년 4월 1일)
Android 스튜디오 Iguana 안정화 버전으로 테스트했습니다.
- [버그 수정] 문제 #314614435:
-http-proxy
스위치가 잘못 파싱되는 문제 수정
34.1.19 (2024년 3월 7일)
Android 스튜디오 Iguana 안정화 버전으로 테스트했습니다.
- [버그 수정] 문제 #312677259: 창 크기를 조절한 후 삽입된 에뮬레이터에서 화면이 정지되는 문제가 해결되었습니다.
34.1.18 (2024년 2월 29일)
Android 스튜디오 Iguana 안정화 버전으로 테스트했습니다.
- 에뮬레이터에 다음과 같은 기기가 추가되었습니다.
<ph type="x-smartling-placeholder">
- </ph>
- Pixel Fold
- Pixel Tablet
- Pixel 8
- Pixel 8 Pro
- Pixel 7a
- gRPC 통합 테스트: 이제 실제 시나리오를 테스트할 수 있도록 에뮬레이터 내에서 실행되는 계측 테스트에 gRPC 엔드포인트를 사용할 수 있습니다. 이 기능을 사용하면 개발자가 Android 계측 테스트 내에서 Android Emulator가 호스팅하는 gRPC 엔드포인트와 안전하게 상호작용할 수 있습니다.
- 다양한 버그 수정 <ph type="x-smartling-placeholder">
33.1.24(2023년 12월 28일)
Android 스튜디오 Hedgehog 안정화 버전 및 Iguana 베타 1로 테스트했습니다.
- mp4 형식으로 화면 녹화를 할 수 없는 에뮬레이터 웹캠 문제를 수정했습니다.
- 화면 녹화 중에 Pixel Fold AVD를 펼치면 에뮬레이터가 비정상 종료되는 문제를 수정했습니다.
- Pixel Fold에 분리된 키보드와 함께 다른 휴대전화 스킨이 표시되고 사용할 수 없는 문제를 해결했습니다(Windows, Mac Intel, Linux에서 수정됨).
- 독립형 모드에서 가상 센서로 표시되는 결함을 수정했습니다(Windows, Mac Intel, Linux에서 수정됨).
- 일부 비정상 종료 문제, 특히 에뮬레이터를 닫을 때 발생하는 문제를 수정했습니다.
33.1.23(2023년 11월 30일)
Android 스튜디오 Giraffe 패치 4 및 Hedgehog Stable을 사용하여 테스트했습니다.
- Pixel Fold 기기를 더 효과적으로 에뮬레이션하는 새로운 폴더블 구현(최신 API 34와 호환됨)
- 그래픽 백엔드 업그레이드: 그래픽 백엔드에 대해 gfxstream 프로토콜을 구현했습니다. 이 개선사항을 통해 전반적인 그래픽 성능과 시스템의 안정성이 향상됩니다. API 34의 시스템 이미지부터 Vulkan 1.3 지원 도입
- 기능 요청: 손가락을 모으거나 펼쳐 확대/축소하는 동작을 사용 중지하거나 핫키를 재할당하는 옵션
- [버그 수정] 문제 #302562962 MacOS sonoma를 사용할 때 에뮬레이터 웹캠이 비정상 종료되는 문제 수정
- [버그 수정] 문제 #293503871 에뮬레이터를 다시 시작할 때 '마이크' 설정이 저장되지 않는 문제 수정
- [버그 수정] 문제 #270386314 AVD 화면을 최소화하면 사이드바가 열린 상태로 유지되는 애니메이션 오류 수정
- [버그 수정] 문제 #154896775 버그 제출 도구 수정
32.1.15(2023년 8월 29일)
Android 스튜디오 Giraffe 패치 1 및 Hedgehog Canary 16을 사용하여 테스트했습니다.
- AAE 에뮬레이터 센서의 GAS HW 요구사항 준수
- [버그 수정] 문제 #266201208 API 33에서 히브리어 SMS가 전송되지 않음
- [버그 수정] 문제 #257097404 API 29 및 30에서 호스트의 절전 모드가 해제된 후 에뮬레이터에 올바른 시간이 표시되지 않음
- [버그 수정] 문제 #228201899 Android Emulator Extended Controls 내에서 Google 지도를 볼 수 없음
32.1.14(2023년 6월 27일)
Android 스튜디오 Hedgehog Canary 8, Giraffe 베타 5, Flamingo Stable로 테스트되었습니다.
- 에뮬레이터 카메라 방향 및 왜곡을 수정했습니다.
- [버그 수정] 문제 #257097404 "호스트의 절전 모드가 해제된 후 에뮬레이터에 올바른 시간이 표시되지 않음" 이 버그는 API 29 및 API 30에서 계속 재현됩니다.
- [버그 수정] 문제 #243456582 "API 30 이후의 Android 버전이 Mac M1 머신에 설치된 에뮬레이터에서 제대로 시작되지 않을 수 있음"
32.1.13(2023년 5월 22일)
Android 스튜디오 Hedgehog Canary 2, Giraffe 베타 1, Flamingo Stable로 테스트되었습니다.
- Pixel Fold 및 Pixel Tablet AVD 지원을 추가했습니다.
- gLinux 비정상 종료 문제를 개선했습니다.
- [버그 수정] 문제 #215231636 "API 30 이상의 API가 설치된 에뮬레이터가 Intel 12세대 프로세서에서 작동하지 않음"
- [버그 수정] 문제 #275397905 커서 포커스를 에뮬레이터 안팎으로 반복적으로 이동할 때 Android Emulator M1에서 상위 수준의 비정상 종료가 발생함
- AVD 실행의 알려진 문제 문제 #281725854. 자세한 내용은 에뮬레이터 문제 해결을 참고하세요.
32.1.12(2023년 3월 21일)
Android 스튜디오 Giraffe Canary 10, Flamingo RC, Electric Eel Patch 2로 테스트되었습니다.
- [버그 수정] 문제 #267647323 Android 스튜디오에서 시작한 에뮬레이터에서 네트워크가 작동하지 않음
- [버그 수정] 문제 #268498686 에뮬레이터 화면이 깜박임
- [버그 수정] 문제 #270034824 버전 33.1.1로 업데이트한 후 에뮬레이터 성능이 저하됨
- [버그 수정] 문제 #225541819 x86_64에서 Chrome을 시작하면 에뮬레이터가 비정상 종료됨
- [버그 수정] 문제 #257097404 호스트의 절전 모드가 해제된 후 에뮬레이터에 올바른 시간이 표시되지 않음
- Apple M1 기기에 비정상 종료 보고 추가
32.1.11(2023년 2월 8일)
Android 스튜디오 Giraffe Canary 2, Flamingo 베타 1, Electric Eel 패치 1을 사용하여 테스트했습니다.
- 네트워크 속도 최적화
- 삽입된 에뮬레이터에서의 마우스 지원
- Virtio-snd 개선
- 설치 중에 Android Emulator의 압축을 해제하는 동안 심볼릭 링크를 사용 중지합니다.
- 에뮬레이터 검사에서 발생하는 비정상 종료 문제 해결
31.3.14(2022년 12월 13일)
Android 스튜디오 Dolphin, Electric Eel RC1, Flamingo Canary 9에서 테스트했습니다.
- [버그 수정] Play 스토어에 로그인할 때 발생하는 AVD 비정상 종료 문제를 해결했습니다.
31.3.13(2022년 10월 27일)
Android 스튜디오 Dolphin, Electric Eel 베타 2 및 Flamingo Canary 5로 테스트되었습니다.
- [버그 수정] 문제 #249948338: 시간대 매개변수가 작동하지 않습니다.
- [버그 수정] 문제 #249366543: API 31 이후 에뮬레이터 -dns-server 옵션이 작동하지 않습니다.
31.3.12(2022년 10월 10일)
Android 스튜디오 Dolphin 및 Electric Eel 베타 1로 테스트되었습니다.
이 업데이트에는 다음과 같은 개선사항 및 수정사항이 포함되어 있습니다.
- [버그 수정] 문제 #247843000: AVD 상대 경로 처리 오류
- API 24 이상에서 디스크 크기를 늘립니다.
31.3.11(2022년 9월 23일)
Android 스튜디오 Dolphin 및 Electric Eel Canary 10으로 테스트되었습니다.
이 업데이트에는 다음과 같은 개선사항 및 수정사항이 포함되어 있습니다.
- [버그 수정] Extended Controls 창에서 Embedded Emulator AVD가 비정상 종료됩니다.
- [버그 수정] 문제 #183139207: 마이크를 활성화하는 에뮬레이터와 관련된 오디오 문제입니다.
- [버그 수정] 문제 #229764024: UI 동작 문제를 야기하는 AVD 고정 터치 버그입니다.
- [버그 수정] Mac M1에서 API 33 AVD를 실행할 때 발생하는 오류
- [버그 수정] 문제 #243053479: 에뮬레이터를 업데이트한 후 네트워크 속도가 느려집니다.
- [버그 수정] 문제 #244617627: Windows 및 Linux에서 지도 위치가 작동하지 않습니다.
- [버그 수정] 문제 #232971796: Extended Controls > Phone 페이지에서 '기기 전화 걸기' 버튼이 작동하지 않습니다.
- Android Emulator를 minigbm으로 업데이트했습니다.
- 빌드 스크립트를 Python3으로 이전했습니다.
31.3.10(2022년 8월 18일)
Android 스튜디오 Dolphin 베타 5 및 Electric Eel Canary 9로 테스트되었습니다.
이제 에뮬레이터를 단독으로 다운로드할 수 있습니다. 이 최신 안정화 버전에서 문제 또는 비정상 종료가 발생하는 경우 버그를 신고하고 에뮬레이터 다운로드 자료실에서 이전에 작동한 버전을 다운로드하는 것이 좋습니다.
이 업데이트에는 다음과 같은 개선사항 및 수정사항이 포함되어 있습니다.
- Windows에서 유니코드 경로 지원 개선
- 동일한 AVD를 새로 실행할 수 있도록 에뮬레이터 종료 처리 개선
- 폴더블 AVD 디자인 및 기본 설정 업데이트
- Wear 에뮬레이터 버튼 업데이트
- gRPC 오디오 스트리밍 개선
- 크기 조절 가능한 에뮬레이터 콘솔 명령어 추가
- API 31용 Chrome 수정
- [버그 수정] GmsCore v21.42.18에서 Google 계정 인증에 실패
31.2.10(2022년 4월 20일)
Android 스튜디오 Dolphin Canary 8 및 Chipmunk RC 1로 테스트되었습니다.
이 업데이트에는 다음과 같은 개선사항 및 수정사항이 포함되어 있습니다.
- 대체 기능을 사용하여 Vulkan 함수를 로드하는 유틸리티를 추가했습니다.
- [버그 수정] gcc8 빌드 오류를 수정했습니다.
31.2.9(2022년 3월 23일)
Android 스튜디오 Dolphin Canary 7로 테스트되었습니다.
이 업데이트에는 다음과 같은 수정사항이 포함되어 있습니다.
- [버그 수정] M1에서 스냅샷을 저장할 때 발생하는 메모리 압력을 무시합니다.
31.2.8(2022년 2월 7일)
Android 스튜디오 Bumblebee 패치 1 및 Chipmunk Canary 6으로 테스트했습니다.
이 업데이트에는 다음과 같은 개선사항 및 수정사항이 포함되어 있습니다.
- [버그 수정] 앱에 로그인할 수 없습니다.
- [버그 수정] 문제 #215368358: Intel 플랫폼의 'adb 재부팅'이 'vcpu 종료 요청'과 함께 avd에서 비정상 종료됩니다.
31.2.7(2022년 2월 1일)
Android 스튜디오 Bumblebee 패치 1 및 Chipmunk Canary 6으로 테스트했습니다.
이 업데이트에는 다음과 같은 수정사항이 포함되어 있습니다.
- [버그 수정] M1 머신에서 에뮬레이터 중단 오류가 발생합니다.
31.2.6(2022년 1월 20일)
Android 스튜디오 Arctic Fox, Bumblebee 베타 4, Chipmunk Canary 6으로 테스트되었습니다.
이 업데이트에는 다음과 같은 개선사항 및 수정사항이 포함되어 있습니다.
- Wear OS 에뮬레이터에 Wear 버튼이 추가되었습니다.
- VHAL 탭에서 모든 차량 속성을 수정할 수 있게 했습니다.
- [버그 수정] GmsCore v21.42.18에서 Google 계정 인증에 실패했습니다.
- [버그 수정] Netshaper가 VirtioWifi에서 제대로 작동하지 않았습니다.
- [버그 수정] 이벤트 마우스 콘솔 명령어가 작동하지 않았습니다.
- 로컬 AVD 생성을 위한 KVM 검사가 추가되었습니다.
31.1.3(2022년 1월 18일)
이 업데이트에는 다음과 같은 개선사항 및 수정사항이 포함되어 있습니다.
- Fuchsia용 콘솔 포트를 사용 설정했습니다.
- 다중 디스플레이 창의 크기를 조절할 때 방향이 무시됩니다.
- Wi-Fi: MAT MAC 주소에 기반한 유니캐스트 패킷 필터링 지원이 추가되었습니다.
- Wi-Fi: vmnet 사용 시 비정상 종료되는 문제를 수정했습니다.
30.9.5(2021년 12월 15일)
이 업데이트에는 다음과 같은 개선사항 및 수정사항이 포함되어 있습니다.
- 데스크톱이나 태블릿 크기의 창으로 크기를 쉽게 조절할 수 있는 기능을 추가했습니다.
- 호환되는 호스트 기기의 멀티터치 입력 지원을 추가했습니다.
- VirtioWifi: 탭 네트워크 지원을 추가했습니다.
- Wear 시스템 이미지의 로터리 입력을 사용 설정했습니다.
- gRPC 오디오 구성 문제를 수정했습니다.
- 표준 Android 센서를 지원하도록 SensorReplay 에뮬레이터 재생을 업데이트했습니다.
- USB 패스 스루를 통해 주변기기 및 USB를 사용하는 기기에 에뮬레이터를 연결했습니다.
30.4.5(2021년 2월 23일)
이 업데이트에는 다음과 같은 개선사항 및 수정사항이 포함되어 있습니다.
- macOS: 오디오 입력 왜곡 문제를 해결했습니다.
- 사용자 공간에 virtio-vsock 지원을 추가했습니다.
- 향후 시스템 이미지는 logcat 및 커널 메시지에 virtio-console을 사용합니다.
- Vulkan 렌더링의 속도를 높입니다.
- 테스트 실패 시 스냅샷 디버깅 지원을 추가했습니다.
- virtio-gpu: 최신 blob 리소스 enum을 지원하도록 정의를 업데이트했습니다.
- 'asg' 유형 그래픽 전송을 위한 스냅샷 지원을 추가했습니다.
- macOS: macOS SDK 11.1 이상을 대상으로 한 빌드 지원을 추가했습니다.
- KVMclock이 최신 시스템 이미지에서 기본적으로 사용 설정됩니다.
- Wear 에뮬레이터에 심박수 센서 지원을 추가했습니다.
- libportability Vulkan 백엔드를 삭제했습니다.
- 모뎀 시뮬레이터의 더 많은 기능을 지원합니다.
30.0.26(2020년 8월 16일)
이 업데이트에는 몇 가지 새로운 기능, 기존 기능의 개선사항 및 버그 수정이 포함되어 있습니다.
가상 힌지 센서 및 3D 뷰가 있는 폴더블 지원
폴더블 기기에 대한 힌지 센서 지원이 추가되었습니다. 이를 위해 향후 Android 11 시스템 이미지와 AVD 구성이 필요합니다. 이제 3D 폴더블 뷰 및 힌지 매개변수가 기존의 폴더블 프리셋과 통합되었습니다. 예를 들어, 다음 설정은 7.3 폴더블 AVD의
config.ini
파일과 함께 사용할 수 있습니다.hw.sensor.hinge = yes hw.sensor.hinge.count = 1 hw.sensor.hinge.type = 1 hw.sensor.hinge.ranges = 180-360 hw.sensor.hinge.defaults = 180 hw.sensor.hinge.areas = 54.7-0 hw.sensor.posture_list=4, 3 hw.sensor.hinge_angles_posture_definitions=210-360, 180-210 hw.sensor.hinge.fold_to_displayRegion.0.1_at_posture=4
이제 폴더블 기기는 하위 유형의 매개변수도 전달합니다. 이제
config.ini
속성hw.sensor.hinge.sub_type = hinge/fold
를 사용할 수 있습니다. 자세한 내용은 Android Emulator로 Android 11 개발 블로그 게시물을 참고하세요.이제 힌지 센서가 기본으로 사용 설정됩니다.
폴더블 기기가 구성된 경우 이제 에뮬레이터가 힌지 각도 센서 업데이트 및 상태 변경사항을 게스트에게 보냅니다. 이제 툴바의 접힘 또는 펼침 버튼이 눌리면 기존 폴더블 기기에서 힌지 센서 각도와 상태를 업데이트합니다.
ARM64 호스트용 에뮬레이터
이제 Linux 에뮬레이터 소스 코드는 x86_64에서 arm64 호스트로의 크로스 컴파일을 지원하므로 KVM 가상화로 arm64 시스템 이미지를 실행할 수 있습니다. 현재
-gpu swiftshader_indirect
(Swiftshader arm64 호스트 렌더링)만 지원되지만, 호환되는 호스트 GPU libEGL/libGLESv2 라이브러리의 집합으로 lib64/gles_swiftshader를 대체하고-gpu swiftshader_indirect
로 다시 실행함으로써 이 호환되는 집합도 사용할 수 있습니다. 스냅샷도 작동하지 않도록 할 수 있습니다(명령줄에-no-snapshot
추가). 방법은 다음과 같습니다.mkdir emu cd emu repo init -u https://android.googlesource.com/platform/manifest -b emu-master-dev --depth=1 repo sync -qcj 12 cd external/qemu pip install absl-py pip install urlfetch sudo apt-get install crossbuild-essential-arm64 python android/build/python/cmake.py --noqtwebengine --noshowprefixforinfo --target linux_aarch64
Apple Silicon에 대한 지원이 진행 중입니다.
virtio-gpu 지원
- 향후 virtio-gpu 호스트의 일관된 blob 리소스에 대한 호스트 측 지원이 추가되었습니다.
- 이제 에뮬레이터 렌더링의 작동 방식으로 인해 렌더링이 다른 스레드에 오프로드되므로 vcpu 스레드에서 virtio-gpu virtqueue를 처리합니다. virtio-gpu 렌더링은 향후 시스템 이미지와 에뮬레이터 버전에서 사용 설정됩니다.
- 향후 시스템 이미지에서 에뮬레이터는 virtio-gpu 기반 스택을 사용하여 모든 그래픽을 실행할 수 있습니다.
기타 새로운 기능 및 개선사항
- 이제
-qemu -usb -device usb-host,vendorid=<usb-vendor-id>,productid=<usb-product-id>
를 통해 Windows에서 USB 패스 스루를 사용할 수 있습니다. (Linux 및 macOS에서도 이미 작동하고 있습니다.) - WebRTC 라이브러리가 M83으로 업데이트되었습니다.
- 이제 에뮬레이터에서 WebRTC를 통해 컨테이너의 오디오 스트리밍을 지원합니다.
- darwinn pipe 엔드포인트가 삭제되었습니다.
- CUDA VPx 디코딩이 하드웨어에서 가능하다면 이제 환경 변수
ANDROID_EMU_MEDIA_DECODER_CUDA_VPX=1
을 통해 동영상의 CUDA VPx 디코딩을 할 수 있습니다. - 이제 macOS의 경우 Android 게스트 내에서 SSE 4.1 및 4.2를 사용할 수 있습니다.
- macOS에서는 이제 INVTSC가 기본으로 사용 설정됩니다. 이렇게 하면 게스트에서 시간 측정 정확도가 향상됩니다.
- 이제 측정항목에서 사용자가 어떤 확장 컨트롤 창을 선택했는지 추적합니다.
- 이제 게스트 커널 버전이 5.4 이상(R 시스템 이미지 이상)이면 Linux 에뮬레이터에서 KVM의 반가상화된 시계를 사용합니다.
- 이제 에뮬레이터에서 LZ4를 사용하여 게스트 커널의 압축을 풀고 최신 커널 파이프라인과 호환되도록 합니다.
에뮬레이터 AVD 디렉터리, 스튜디오에 삽입된 사용 사례의 검색 파일 경로 및 스냅샷 경로를 가져오는 콘솔 명령어를 추가했습니다.
adb emu avd path # Obtains path to AVD directory adb emu avd discoverypath # Obtains path to discovery file adb emu avd snapshotspath # Obtains path to snapshots folder adb emu avd snapshotpath <snapshotName> # Obtains path to the folder that stores the snapshot for the snapshot with name <snapshotName>
세로 화면 공간을 더 쉽게 저장할 수 있도록 현재 AVD의 기기 프레임을 숨기는 옵션이 Extended Controls > Settings에 추가되었습니다. 모든 AVD의 기기 프레임을 전역적으로 숨길 수 있도록
NoDeviceFrame
기능 플래그를 사용할 수 있게 했습니다. 이 플래그는 명령줄에서-feature NoDevice
프레임으로 에뮬레이터를 실행하여 활성화하거나~/.android/advancedFeatures.ini
에NoDeviceFrame = on
을 추가하여 고정할 수 있습니다(이 파일이 없다면 만들어야 함).계량 지원을 사용 설정하거나 중지할 수 있도록 모바일 페이지에 드롭다운 항목을 추가했습니다. 이는 5G 계량 토글을 지원하지 않는 기존 시스템 이미지의 노옵스(no-ops)입니다.
- 또한, 동일한 용도로
gsm meter on|off
콘솔 명령어도 추가했습니다.
- 또한, 동일한 용도로
도구 모음과 빌드를 C++17로 업그레이드했습니다.
수정사항: 내장 에뮬레이터
- 이제 클립보드가 작동합니다.
- 에뮬레이터에서 대문자가 소문자로 표시되는 문제가 수정되었습니다.
- Windows의 유니코드 경로에서 콘솔 토큰 로드 문제를 수정했습니다.
- Linux의
SO_REUSEPORT
오류 메시지가 수정되었습니다. - gRPC를 통해 스냅샷 명령어를 전송할 때와 Android 스튜디오에 삽입된 에뮬레이터에서 스냅샷 저장 버튼을 누를 때 스냅샷이 손상되던 문제가 수정되었습니다.
스튜디오에 삽입된 Linux 에뮬레이터를 사용할 때 Chrome 원격 데스크톱을 통해 사용하면
XDG_RUNTIME_DIR
에 있는 에뮬레이터 검색 파일로 인해XDG_RUNTIME_DIR
이 설정되지 않고 삽입된 에뮬레이터가 표시되지 않을 수 있는 버그를 발견했습니다. Chrome Issue Tracker에서 이 문제의 상태를 확인할 수 있습니다.이 문제의 해결 방법으로 이제 에뮬레이터가 사용자 UID에 기반한 다른 디렉터리(
/run/user/<uid>
)의 검색 파일을 사용하는 방식으로 대체됩니다.삽입된 에뮬레이터: 둥근 모서리/노치가 있는 기기는 이제 모서리/노치 공간을 확보하기 위해 레이아웃을 적절하게 변경합니다. 이를 위해 에뮬레이터의 콜드 부팅이 필요합니다.
이제 gRPC 엔드포인트는 기기로 SMS를 전송하도록 지원합니다.
일반 수정사항
- Riot Vanguard가 활성화된 상태에서 Windows 에뮬레이터를 실행할 때 호환성 문제가 있는 것을 발견했습니다. 이제 Vanguard가 감지되면 Windows 에뮬레이터에서 Vanguard Anti-Cheat를 감지하고 경고 메시지를 표시합니다.
- Windows에서
FD_SETSIZE
오류가 수정되었습니다. 이제 루프백 서버에 비차단 연결을 설정하기 위해select()
대신WSAEventSelect()
를 사용합니다. - NDK 변환을 통해 일부 ARM64 애플리케이션을 실행하는 데 문제가 있는 Linux 에뮬레이터에 F16C CPUID 기능 지원을 추가했습니다. macOS/Windows는 진행 중입니다.
- 타임스탬프를 따르도록 gpx/kml 경로 재생을 수정했습니다.
- MacOS에서 시작 시 아이콘이 이탈하는 문제를 수정했습니다.
config.ini
에서hw.audioInput=no
이고hw.audioOutput=no
라면 이제 에뮬레이터 오디오가 제대로 사용 중지된 것입니다.- 확장 컨트롤 창이 열려 있지만 활성화되지 않은 상태에서 에뮬레이터 창이 최소화되면 에뮬레이터 창의 크기를 조절할 때 확장 컨트롤 창이 계속 표시되는 문제를 수정했습니다. 향후 업데이트에서는 이 동작이 완전히 제거됩니다(활성화된 확장 컨트롤 창의 경우).
- 에뮬레이터를 시작할 때 Wi-Fi가 연결되지 않는 비정상적인 버그를 수정했습니다.
- 에뮬레이터에서 오래 걸리거나 무기한 시간 초과하는 셸 명령어를 실행할 때 발생하던 hang-on-exit 문제를 수정했습니다.
-initrd
에 전달되는 큰 이미지를 더 효과적으로 지원할 수 있도록 pc-bios를 업데이트했습니다. 기존 BIOS에서는 매우 비효율적인 방법을 사용했습니다.-wifi-server-port
옵션을 사용하면 종료 중에 비정상 종료되는 문제를 수정했습니다.- 이제
-prop
에 지원되지 않는 옵션이 전달되면 에뮬레이터에서 경고를 표시합니다(qemu.* 속성만 지원됨). - Windows에서 에뮬레이터를 빌드할 때 파일에 쓰는 작업이 비정상으로 실패할 가능성이 줄어듭니다. 자세한 내용은 Windows 빌드 안내를 참고하세요.
- 문제를 일으키던 폴더블 AVD의 확대/축소 버튼이 사용 중지되었습니다.
- 이제 에뮬레이터에서 기기 재부팅 시 발생한 부팅 시간을 제대로 보고합니다.
- Linux: KVM 권한이 충분하지 않은 경우 이제 에뮬레이터에서 더 빠르게 디버깅 안내를 출력합니다.
- 에뮬레이터에서 가속 없이 최근 시스템 이미지를 부팅할 수 없던 문제를 수정했습니다.
- 부팅 완료 감지기에서 시작 시 메모리 손상 또는 비정상 종료되던 문제가 수정되었습니다.
- 긴 화면 녹화 세션 중 발생하던 메모리 누수를 수정했습니다.
- 스튜디오 4.1 브랜딩을 반영하도록 에뮬레이터 아이콘을 업데이트했습니다.
- Windows에서 원격 세션을 감지하기 위한 지원이 개선되었습니다.
수정사항: 그래픽 및 동영상 디코딩
- 최근 아스팔트 9 게임이 검은색 화면으로 렌더링되던 문제가 수정되었습니다.
NULL
로 매핑된 버퍼를 플러시하는 것과 관련된 스팸을 삭제했습니다.- 게스트 Vulkan 앱을 종료할 때 Vulkan 상태가 손상되면 경합 상태가 발생하는 문제를 수정했습니다.
- 이제 Vulkan ASTC/ETC2 에뮬레이션 셰이더가 libOpenglRender 라이브러리에 통합됩니다. 이는 파일 시스템에서 읽는 것보다 더 안정적입니다.
- 호스트에서 Vulkan 1.0 인스턴스를 사용하여 실행하면
vkGetImageMemoryRequirements2KHR
이 반환된VkMemoryRequirements2
구조체의pNext
필드를 잘못 삭제하는 Vulkan의 문제를 수정했습니다. - Vulkan 렌더러의 메모리 누수가 수정되었습니다.
isampler2D
와 같은 변수 이름을 가진 GLSL ES 1.00 셰이더에서 컴파일에 실패하는 최근 회귀 문제가 수정되었습니다.- Linux에서 셰이더 컴파일이 실패하던 문제를 해결한 여러 수정사항이 포함된 ANGLE 셰이더 변환기가 업데이트되었습니다.
- 이러한 현상을 계속 추적하기 위해, 기본 프레임버퍼 블릿 셰이더가 컴파일에 실패하면 에뮬레이터가 다운됩니다.
- 업스트림 ANGLE을 계속 확인하도록 ANGLE 셰이더 변환기를 업데이트했습니다. 이는 정사각형이 아닌 행렬을 사용한 OpenGL ES 셰이더를 변환하고 일정하게 폴딩할 때 발생하던 메모리 손상 문제를 수정했습니다. 이제 셰이더 변환기는 별도의 공유 라이브러리인
libshadertranslator.dll
입니다. - 특정 1.1 기기 함수를 찾을 수 없는 일부 GPU 드라이버의 Vulkan 초기화 문제가 수정되었습니다.
- 일부 설정에서 문제가 발생하던 사전 빌드된 로더를 선호하는 시스템 Vulkan 로더로 사용하도록 다시 되돌렸습니다. 더 나은 방법을 찾고 있습니다.
- Vulkan 외부 메모리를 사용할 때 호스트에서 일치하지 않는 메모리 유형 색인을 가져올 수 있는 문제를 수정했습니다.
- 호스트에서 enum이 지원되지 않는
GL_ALIASED_POINT_SIZE_RANGE
에뮬레이션의 문제가 수정되었습니다. - 일부 호스트 GPU에서 Skia 셰이더가
GL_EXT_shader_framebuffer_fetch
와 관련된 오류로 인해 컴파일할 수 없던 문제를 수정했습니다. - D3D9 ANGLE 렌더러의 사본이 몇 개 버전 전에 삭제되었기 때문에 이제 UI 환경설정에서 d3d11 ANGLE을 선택했다면 해당 렌더러에 있는 사용자도 d3d11 ANGLE로 자동 전환합니다.
- 실패를 추적하기 위해 Windows의 WGL 초기화에 더 많은 디버그 정보를 추가했습니다.
hw.gltransport=virtio-gpu-pipe
인 경우, 호스트에서 게스트로 보내는 전송 작업을 하지 않아 성능이 향상됩니다.- OpenGLES 에뮬레이션이 초기화에 실패하는 경우를 위해 더 많은 디버그 로깅이 추가되었습니다.
- 스냅샷 로드 시 YouTube 동영상이 깜박거리거나 표시되지 않는 문제가 수정되었습니다.
- lipvpx의 CUDA 하드웨어 디코딩 문제를 확인했으므로 lipvpx용 소프트웨어 디코딩으로 다시 전환했습니다. 호스트 측에 지원되는 CUDA 하드웨어 디코딩 구현이 있다면 환경 변수
ANDROID_EMU_MEDIA_DECODER_CUDA_VPX=1
을 통해 libvpx의 하드웨어 디코딩을 다시 사용 설정할 수 있습니다.
30.0.10(2020년 4월 30일)
이 업데이트에서는 기본으로 활성화되는 자유 형식 창 모드로 Android 스튜디오와 가상 기기에서 에뮬레이터를 직접 실행하는 기능을 지원합니다.
Android 스튜디오에서 에뮬레이터 실행
이제 Android Emulator를 Android 스튜디오에서 직접 실행할 수 있습니다. 이 기능을 통해 화면 공간을 절약하고 핫키를 사용하여 에뮬레이터와 편집기 창 간에 빠르게 이동하며 단일 애플리케이션 창에서 IDE 및 에뮬레이터 워크플로를 구성합니다.
자유 형식 창 모드
이제 Android 스튜디오에서 가상 기기를 만들 때 13.5인치 자유 형식 태블릿 하드웨어 프로필을 선택하여 자유 형식 창 모드가 사용 설정된 AVD를 만들 수 있습니다. 이 하드웨어 프로필에는 Android 11 개발자 프리뷰 3 이상이 설치된 시스템 이미지가 필요합니다.
알려진 문제
현재 자유 형식 창 크기를 조절하는 기능이 창 관리자에 포커스를 전송하는 문제로 인해 손상되었습니다. 이 문제는 향후 Android 11 시스템 이미지 출시에서 해결될 예정입니다.
30.0.0(2020년 2월 19일)
이 업데이트에는 Android 11(API 수준 30) 시스템 이미지가 포함되며 ARM 바이너리의 실행 성능이 개선되었습니다.
Android 11 시스템 이미지
이제 사용 가능한 API 수준 30 시스템 이미지 중 하나를 선택하여 Android 11을 실행하는 AVD를 만들 수 있습니다.
- x86: x86 및 ARMv7 ABI를 모두 포함합니다.
- x86_64: x86, x86_64, ARMv7 및 ARM64 ABI를 포함합니다.
Android 9 및 11 시스템 이미지에서 ARM 바이너리 지원
이전에는 앱이 ARM 바이너리에 종속되어 있어 Android Emulator를 사용할 수 없었다면 이제 Android 9 x86 시스템 이미지 또는 모든 Android 11 시스템 이미지를 사용하여 앱을 실행할 수 있습니다. 더 이상 ARM 바이너리를 실행하기 위해 특정 시스템 이미지를 다운로드할 필요가 없습니다. 이러한 Android 9 및 Android 11 시스템 이미지는 기본적으로 ARM을 지원하며 전체 ARM 에뮬레이션에 포함된 이미지와 비교하여 성능이 크게 향상되었습니다.
알려진 문제
- 일부 ARMv7 바이너리가 Android 11 x86 및 x86_64 시스템 이미지에서 실행되지 않습니다. Android 11을 타겟팅하는 경우 ARM64용으로 빌드하는 것이 좋습니다.
29.0.11(2019년 5월 29일)
이 업데이트에는 다음과 같은 개선사항 및 수정사항이 포함되어 있습니다.
- Windows: 에뮬레이터는 이제
libgcc
로 정적 컴파일되는 대신 제공된libgcc
DLL을 사용합니다. - Linux: gRPC API에 logcat 지원을 추가했습니다. gRPC에 관한 자세한 내용은 gRPC 스트리밍 에뮬레이터(Linux)를 참고하세요.
- 에뮬레이터는 이제 32비트 x86 게스트용 헤드리스 빌드(
qemu-system-i386
)를 포함합니다. 이 기능을 사용하면 API 수준 26 이하의 x86 32비트 이미지를 헤드리스 빌드를 사용하여 실행할 수 있습니다. 이러한 시스템 이미지에서는 사용자 공간이 32비트이지만 커널은 64비트이므로 API 27 이상이 설치된 32비트 x86 게스트의 경우 에뮬레이터는 64비트 엔진(qemu-system-x86_64
)을 사용합니다. Android 스튜디오는 커널을 사용하여 에뮬레이션 엔진을 선택합니다. - 이제
ANDROID_QT_LIB_PATH
환경 변수를 사용하여 맞춤 Qt 라이브러리 경로를 지정할 수 있습니다. - 이제 QEMU1 실행 파일(
emulator[64]-[x86|arm|etc]
)을 에뮬레이터 디렉터리에 배치하면 QEMU1을 사용하는 이전 바이너리로 에뮬레이터를 실행할 수 있습니다. - Windows: 때에 따라 'vCPU 종료 요청' 메시지와 함께 에뮬레이터가 시작되지 않던 문제가 수정되었습니다.
- Vulkan에서 에뮬레이션된 압축 텍스처의 불필요한 파이프라인 장벽 문제가 수정되었습니다.
- 청크 단위의 전송 인코딩을 사용할 때 HTTP 프록시 요청에서 발생하던 오류가 수정되었습니다. 자세한 내용은 커밋 세부정보를 참고하세요.
29.0.9(2019년 5월 7일)
이 업데이트에는 다음과 같은 수정사항이 포함되어 있습니다.
- Windows: 가상 장면 카메라 및 웹캠이 에뮬레이터에서 작동하지 않는 문제가 수정되었습니다.
29.0.8(2019년 5월 6일)
이 업데이트에는 다음과 같은 개선사항 및 수정사항이 포함되어 있습니다.
- 각 디스플레이를 열거하고 설정하는 게스트 서비스가 있을 때 활용할 수 있는 다중 가상 하드웨어 디스플레이 지원이 추가되었습니다. 다중 가상 하드웨어 디스플레이는 향후 에뮬레이터 시스템 이미지 업데이트에 포함됩니다.
- 명령줄 옵션
-delay-adb
가 새로 추가되었습니다. 이 옵션은 게스트가 부팅(콜드 부팅이 아닌)을 완료할 때까지 ADB 패킷 처리를 중단합니다. 이 옵션은 에뮬레이터를 재부팅하는 동시에 DDMS를 사용하는 CI 환경에서 에뮬레이터를 사용할 때 발생할 수 있는 문제를 해결하는 데 도움이 됩니다. glIsRenderbuffer
가 잘못된 값을 반환하는 스냅샷이 로드될 때 발생하는 오류가 수정되었습니다.- Android 게스트가 재부팅될 때의 비활성 상태와 관련된 일부 문제가 수정되었습니다.
- Windows: Windows 사용자 이름에 ASCII 문자가 아닌 문자 또는 공백이 있을 때 에뮬레이터가 시작되지 않는 문제가 수정되었습니다.
알려진 문제
- 스냅샷 UI가 Automotive 시스템 이미지에서 사용 중지됩니다. 스냅샷이 현재 이러한 시스템 이미지에서 지원되지 않기 때문입니다.
29.0.6(2019년 5월 1일)
이 업데이트에는 몇 가지 새로운 기능, 기존 기능의 개선사항 및 버그 수정이 포함되어 있습니다.
QEMU1 및 32비트 Windows 지원 중단
더욱 효과적으로 에뮬레이터를 유지보수하기 위해 더 이상 QEMU1 및 32비트 Windows 바이너리를 제공하지 않습니다. Windows 32비트를 사용 중인 경우에는 버전 29.0.6으로 업그레이드할 수 없습니다.
Android Q 시스템 이미지를 위한 요구사항
Android Q 시스템 이미지를 사용하는 AVD를 실행하려면 이제 버전 29.0.6(현재 출시 버전) 이상을 사용해야 합니다.
Project Marble 개선사항
이 업데이트는 2018년 11월에 Android Developer Summit에서 발표된 Project Marble 이니셔티브 작업의 일환으로 출시되었습니다. 이전 버전의 다른 Project Marble 개선사항에 관한 자세한 내용은 Android Emulator: Project Marble 개선사항을 참고하세요.
이 업데이트에서는 Project Marble과 관련하여 유휴 상태 시 에뮬레이터의 CPU 사용량을 줄이는 것과 같이 에뮬레이터 리소스 사용량을 줄이는 데 중점을 뒀습니다. 또한, 더 광범위한 환경에서 더 쉽게 에뮬레이터로 작업할 수 있게 하는 변경사항을 포함하며 일반적인 품질 문제를 해결했습니다.
다음 섹션에서는 이 업데이트에 포함된 Project Marble 개선사항을 설명합니다.
호스트 오디오 동작 개선사항
버전 28.0.3부터 에뮬레이터에서 기본적으로 호스트의 오디오 입력을 차단합니다.
호스트 오디오 데이터를 사용하려면 Extended Controls > Microphone으로 이동하고 Virtual microphone uses host audio input을 사용 설정하여 해당 옵션을 사용하면 됩니다. 이 옵션은 에뮬레이터를 다시 시작할 때마다 자동으로 사용 중지됩니다.
또한 명령줄을 사용한다면 -allow-host-audio
옵션을 사용하여 호스트 오디오를 사용 설정할 수도 있으며 다음 ADB 명령어를 사용하여 각각 호스트 오디오 데이터를 사용 설정하거나 중지할 수 있습니다.
adb emu avd hostmicon
adb emu avd hostmicoff
헤드리스 에뮬레이터 빌드 개선사항
버전 28.0.25부터 UI 없이 실행할 수 있는 헤드리스 빌드 옵션이 에뮬레이터에 포함됩니다. 헤드리스 빌드를 사용하면 Docker 및 CI(지속적 통합) 워크플로용 에뮬레이터를 설정하는 데 도움이 됩니다.
이 업데이트에서는 에뮬레이터가 최소한의 종속 항목으로 실행될 수 있도록 한층 더 개선되었습니다. Linux에서는 pulseaudio
또는 libX11
라이브러리가 헤드리스 빌드에 더 이상 포함되지 않습니다. 에뮬레이터와 함께 패키징되지 않은 시스템 종속 공유 라이브러리가 다음 목록으로 축소되었습니다.
Linux-vdso.so.1
Libutil.so.1
Libm.so.6
Libdl.so.2
Librt.so.1
Libpthread.so.0
Libgcc_s.so.1
Libc.so.6
ld-linux-x86-64.so.2
5.12 LTS로 업그레이드된 Qt UI 라이브러리
이 업데이트에는 다음과 같은 Qt 5.12 LTS 출시 버전의 개선사항이 포함되어 있습니다.
- 특정 시스템 이미지를 시작할 때 Qt의
libpng
디코딩에서 비정상 종료가 발생하지 않도록 이제 에뮬레이터에서libpng
의 고유한 사본을 사용하여 PNG 이미지를 디코딩합니다. - 호환되지 않는 버전의 일부 Qt 종속 라이브러리가 포함된 일부 Linux 설치와 관련한 문제를 해결하기 위해 이제
libfreetype
,libsoftokn
,libsqlite3
및libxkbcommon
을 에뮬레이터와 함께 패키징합니다. - 에뮬레이터는 이제 신뢰할 수 없는 결과를 반환한 Qt 라이브러리를 사용하는 대신 플랫폼의 네이티브 창 라이브러리를 사용하여 모니터 크기를 가져옵니다.
콜드 부팅 후 자동 CPU 최적화
CPU 사용량 문제를 해결하기 위해 이제 에뮬레이터가 boot complete
신호를 받은 후 콜드 부팅 시 다음의 ADB 명령어를 실행합니다.
adb shell settings put screen_off_timeout 214783647
- 이 명령어는 화면 꺼짐 제한 시간을 늘리기 때문에 에뮬레이터를 충전하지 않고 배터리 모드에서 사용할 수 있습니다. 배터리 모드에서는 백그라운드 CPU 사용량이 크게 줄어듭니다.
- AC 충전 모드에서는 앱 업데이트와 같은 GMSCore 백그라운드 작업이 경고 없이 기기의 모든 CPU 코어(그리고 더 나아가 사용자의 컴퓨터)를 인계받을 수 있습니다.
adb shell pm revoke com.google.android.googlequicksearchbox android.permission.RECORD_AUDIO
- 이 명령어는 Google 검색 앱에 관한 마이크 권한을 취소하여 Google 검색 앱이 활성화되었을 때 홈 화면 및 런처에서 백그라운드 CPU 사용량을 크게 줄입니다.
- 이 명령어는 호스트의 호스트 오디오를 사용 중지하는 에뮬레이터의 기본 동작에 더하여 실행됩니다. 또한 28.0.23 출시 버전에서 핫워드 감지에 관해 설명된 CPU 사용량 완화 기능을 자동으로 제공합니다.
성능 모니터링을 위한 새로운 환경 변수
이제 두 개의 새로운 환경 변수를 사용하여 에뮬레이터의 성능 및 리소스 사용량을 자세히 모니터링할 수 있습니다.
SHOW_PERF_STATS=1
- 이 환경 변수를 사용하면 CPU 및 RAM 사용량을 모두 추적할 수 있습니다. RAM 사용량 추적 시 그래픽 사용량과 총 상주 메모리가 구분됩니다.
ANDROID_EMU_TRACING=1
- 이 환경 변수를 사용하면 입력 또는 그래픽 작업에 오랜 시간(1ms 초과)이 소요될 때마다 인쇄할 수 있습니다.
- 또한 이 환경 변수를 사용하면 Windows 사용자가 macOS 또는 Linux 사용자 환경보다 더 많은 버벅거림 현상(프레임 드롭)을 경험하는 문제를 진단하는 데 도움이 됩니다.
일반 Project Marble 개선사항
이 업데이트에는 Project Marble 이니셔티브의 일부인 다음과 같은 일반 개선사항도 포함되어 있습니다.
- 이제 다음 콘솔 명령어를 통해 에뮬레이터의 모든 vCPU를 즉시 일시중지할 수 있습니다.
adb emu avd pause
adb emu avd resume
- OpenGL 그림의 오버헤드가 크게 감소되었습니다. 이 개선사항을 통해 에뮬레이터가 애니메이션을 재생하는 동안 CPU 사용량이 줄어듭니다.
- 메인 라인 QEMU의 e1000 가상 네트워크 기기 지원이 복원되었습니다. 이 기기를 사용하여 브리지된 네트워크 환경에서 에뮬레이터를 설정할 수 있습니다. 브리지된 네트워크 환경에서는 에뮬레이터가 호스트 네트워크에 표시되고 호스트 네트워크가 에뮬레이터에 표시됩니다.
- 이제 QEMU 2.12에 적합한 BIOS 바이너리를 사용하여 에뮬레이터를 시작합니다.
- 동영상 인코딩 및 디코딩을 위해
ffmpeg
버전이 3.4.5로 업그레이드되었습니다. select()
에 기반한 기본 루프를kqueue
에 기반한 기본 루프로 대체하여 macOS의 QEMU 기본 루프 I/O 오버헤드가 크게 감소하였습니다.- 에뮬레이터와 함께 logcat을 실행할 때 발생하는 예상치 못한 비정상적 EOF 문제를 해결하기 위해 logcat 버퍼 크기를 2MB로 늘렸습니다.
- 이제 에뮬레이터가 기본적으로
LC_ALL=C
환경 변수를 내보냅니다. 이 변경사항은 서로 다른 언어로 에뮬레이터를 실행하는 것과 관련된 비정상 종료 및 비호환성 문제를 해결합니다. - 이제 Extended Controls > Settings > Advanced > Performance Stats에서 액세스할 수 있는 성능 통계를 사용하여 에뮬레이터의 CPU 및 RAM 사용량을 추적할 수 있습니다. 에뮬레이터에서 CPU 또는 RAM을 너무 많이 사용하는 것으로 보인다면 이러한 통계를 사용하여 문제를 신속하게 진단하세요.
- 이제
glReadPixels GL_IMPLEMENTATION_COLOR_READ_TYPE
에서 에뮬레이션된 결과 대신 호스트 GPU의 결과를 사용합니다. 이 변경사항은 부적절한 다시 읽기 형식으로 인해 이미지와 애셋이 표시되지 않는 문제를 해결하는 데 도움이 됩니다. - OpenGL ES 확장 프로그램
GL_EXT_texture_format_BGRA8888
및GL_APPLE_texture_format_BGRA8888
지원을 추가했습니다(이러한 확장 프로그램이 호스트에서 지원되는 경우) - 버그 신고 UI에 더 많은 진단 정보가 추가되었습니다. 또한, 다음 명령어를 사용하여 콘솔에서 버그 신고에 액세스할 수 있습니다.
telnet localhost 5554
avd bugreport
- Android Q 시스템 이미지에서 에뮬레이터의 최소 RAM 크기를 2GB로 늘렸습니다.
- OpenGL 또는 하이퍼바이저의 초기화에 실패할 때마다 더 많은 로깅 및 인쇄가 추가됩니다.
- 에뮬레이터가 AVD의 동시
-read-only
인스턴스를 시작할 수 없다면 이제 3초 동안-read-only
AVD를 3회 더 다시 실행하려고 시도합니다. 이 변경사항으로 인해 AVD의 다른 쓰기 가능 인스턴스가 오래된 파일을 정리하지 않을 때 에뮬레이터가 이 AVD의 동시-read-only
인스턴스를 시작할 수 있는 가능성이 커집니다. - 향후 시스템 이미지에서 에뮬레이터가 Hardware Composer 2.0을 지원합니다. 이 변경사항은 대부분의 애니메이션을 실행할 때 드라이버 오버헤드를 줄입니다.
- 이제 에뮬레이터 빌드가 CMake/Ninja를 기반으로 합니다.
- 에뮬레이터 확장 컨트롤 UI에서 단축키 테이블의 구분선이 복원되었습니다.
- 이제 사용자가 10초 간격으로 Google 담당팀에 CPU 및 RAM 사용량 측정항목을 제공하도록 선택할 수 있습니다. 이러한 측정항목을 사용하여 사용자의 다양한 사용 사례로 에뮬레이터 리소스 사용량에 관한 데이터를 강화하여 에뮬레이터를 보다 효율적인 반응형으로 만들 수 있습니다.
일반 Project Marble 수정사항
이 업데이트에는 Project Marble 이니셔티브의 일부인 다음과 같은 일반 수정사항도 포함되어 있습니다.
- Android Q 시스템 이미지를 사용할 때 Intel GPU가 있는 시스템에 표시되는 잘못된 프레임 및 떨림 현상 문제가 수정되었습니다.
- Pixel 2 XL 스킨(또는 노치나 둥근 모서리가 있는 스킨)에서 Android Q 시스템 이미지를 사용할 때 검은색 화면이 표시되는 문제가 수정되었습니다.
-partition-size
명령줄 옵션이 데이터 파티션 크기를 설정하지 않는 문제가 수정되었습니다.- Linux 에뮬레이터의 펄스 오디오가 회전하여 일부 상황에서 CPU 코어 전체를 차지하는 문제가 수정되었습니다.
- 압축된 텍스처를 처리하는 동안 범위를 벗어난 메모리 액세스 문제가 해결되었습니다.
- 특정 gralloc 버퍼(RGB 565, RGB10A2, RGB(A)16F 형식 사용)를 업데이트할 때
glTexSubImage2D
의 호스트에서 발생하는 GL 오류가 수정되었습니다. - 디스플레이 문제 해결 스냅샷이 있는 Android Q 시스템 이미지 도형이 부적절한 인스턴스 제수 설정으로 렌더링되었습니다.
- Qt가 신호를 손실했거나 시작할 때 상태가 비정상적이고 일관되지 않아서 시작 시 발생한 몇 가지 재현하기 어려운 비정상 종료 및 정지 문제가 수정되었습니다.
- 여러 가지 동시 실행 문제가 수정되었습니다. 이제 재현하기 어려운 버그를 쉽게 발견할 수 있는 TSAN(ThreadSanitizer)을 사용하여 Linux 에뮬레이터를 빌드할 수 있습니다.
- Linux 사용자: 특정 호스트 커널에서 게스트 Android 커널이 일반 하드웨어 오류로 KVM에서 오류를 표시하고 종료될 수 있는 것으로 확인했습니다. 이제 디버그 가능성을 높이기 위해 이 문제가 발생할 때 에뮬레이터에서
abort()
가 호출됩니다(이전에는 에뮬레이터가 정지되기만 했음). - Linux 사용자: CI 설정의 편의를 위해 새로운
-stdouterr-file <file-name>
명령줄 옵션을 사용하여stdout
및stderr
을 모두 파일로 리디렉션할 수 있습니다. SO_REUSEADDR
이 잘못 사용된 문제가 수정되었습니다. 자세한 내용은 커밋 세부정보를 참고하세요.- 사용자 이름에 공백이 있으면 ADB 명령어와 같은 하위 프로세스가 시작되지 못하는 Windows 에뮬레이터의 오래된 문제가 수정되었습니다.
- HAXM vCPU 스레드에서 RCU의 초기화 누락 문제가 수정되었습니다. 이 수정사항은 일부 비정상 종료 및 경합 상태를 해결할 수도 있습니다.
- 최신 Android Q 시스템 이미지를 사용하여 스냅샷 UI에서 스냅샷을 저장하고 로드하는 특정 패턴에서 발생하던 비정상 종료가 수정되었습니다.
- 스냅샷 저장 시 AR 매크로가 재생 중일 때 스냅샷에서 에뮬레이터가 초기화되면 가상 장면 카메라가 빈 화면으로 표시되는 문제가 수정되었습니다.
- 원격 데스크톱이 설정된 일부 사용자가 Linux에서 에뮬레이터를 시작할 때 검은색 화면이 나타나는 문제가 수정되었습니다. 이 문제가 발생하지 않도록 이제 에뮬레이터에서 명시적으로
MESA_RGB_VISUAL
을 구성합니다. 자세한 내용은 커밋 세부정보를 참고하세요. - 회전 버튼이 TV AVD에 표시되는 문제가 수정되었습니다.
- 에뮬레이터가 항상 맨 위에 설정되면 에뮬레이터가 회전될 때마다 확장 컨트롤 창이 나타나는 문제가 수정되었습니다.
폴더블 기기의 하드웨어 프로필
이제 폴더블 기기의 하드웨어 프로필이 에뮬레이터에 포함됩니다. 이러한 새 하드웨어 프로필을 사용하려면 Android 스튜디오 3.5 Canary 10 이상을 사용 중이어야 합니다.
AVD를 만드는 데 사용할 수 있는 두 개의 폴더블 하드웨어 프로필이 있습니다.
- 7.3" 폴더블: 1536x2152(펼치는 경우), 4.6" 840x1960(접는 경우)
- 8" 폴더블: 2200x2480(펼치는 경우), 6.6" 1480x2480(접는 경우)
이러한 하드웨어 프로필 중 하나를 사용하여 에뮬레이터를 실행할 때 에뮬레이터 툴바의 접기 및 펼치기 작업, 콘솔 명령어 또는 다음 단축키를 사용하여 기기를 접고 펼칠 수 있습니다.
- 접기:
Ctrl + F
(macOS에서는Command + F
) - 펼치기:
Ctrl + U
(macOS에서는Command + U
)
AR 매크로
이제 에뮬레이터에 일반 AR 작업을 테스트하는 데 도움이 될 수 있는 AR 매크로가 포함되어 있습니다. 예를 들어, 매크로를 사용하여 모든 기기의 센서를 기본 상태로 재설정할 수 있습니다.
자세한 내용은 매크로를 사용하여 일반 AR 작업 테스트를 참조하세요.
Vulkan 지원(Windows, Linux)
이제 Windows 및 Linux 사용자는 호환 가능한 시스템 이미지(Vulkan 1.1에서 Android Q 베타 3 이상, Vulkan 1.0에서 Android Q 베타 2) 및 호환 가능한 호스트 GPU(여기에는 2014년 이후의 Intel, NVIDIA 및 AMD GPU 대부분이 포함됨)를 사용할 때 Vulkan 1.1까지 Android Emulator를 사용하여 Vulkan 앱을 테스트할 수 있습니다.
Vulkan 지원을 사용 설정하려면 ~/.android/advancedFeatures.ini
파일(파일이 없다면 만들어야 함)에 다음과 같은 기능 플래그를 추가해야 합니다.
Vulkan = on
GLDirectMem = on
ROM 개발자를 위한 초기 지원
AOSP master
브랜치에서 sdk_phone_x86
또는 sdk_phone_x86_64
(userdebug
, eng
변형) 타겟을 빌드 중인 ROM 개발자는 이제 Vulkan 지원 에뮬레이터를 실행할 수 있습니다.
이 지원은 아직 실험 단계에 있으며 주로 시스템 이미지, 드라이버, 게임 엔진 관련 작업을 하는 개발자를 위한 것입니다. 여전히 많은 확장 프로그램이 누락되어 있습니다.
그러나 HOST_COHERENT
메모리가 지원되므로 이제 Vulkan API 튜토리얼 샘플을 실행할 수 있습니다.
Linux를 사용 중이라면 다음 명령어를 사용하여 시도해 볼 수 있습니다.
mkdir aosp-master
cd aosp-master
repo init -u https://android.googlesource.com/platform/manifest -b master --depth=1
repo sync -c -j12
. build/envsetup.sh
lunch sdk_phone_x86_64-userdebug
make -j12
emulator -no-snapshot -feature Vulkan,GLDirectMem
Vulkan으로 Skia 렌더링
Vulkan을 지원하는 NVIDIA 및 AMD GPU는 GL_EXT_memory_objects
확장 프로그램을 통해 OpenGL과의 제로 카피 상호 운용도 지원합니다. 에뮬레이터는 이 기능을 활용하여 Skia Vulkan API를 통해 Android UI를 완전하게 렌더링할 수 있습니다.
Vulkan을 지원하는 NVIDIA 또는 AMD GPU가 있는 경우 다음 명령어를 사용하여 호환 가능한 시스템 이미지(Android Q 베타 3 이상)로 Skia 렌더링을 테스트하세요.
adb shell
su
setprop debug.hwui.renderer skiavk
stop
start
Vulkan의 macOS 지원
macOS 지원은 아직 실험 단계에 있지만, 에뮬레이터에 이미 Swiftshader, MoltenVK, libportability(gfx-rs) API가 포함되어 있습니다. 다음 환경 변수를 설정하여 이러한 API를 실험할 수 있습니다.
- Swiftshader:
ANDROID_EMU_VK_ICD=swiftshader
- MoltenVK:
ANDROID_EMU_VK_ICD=moltenvk
- libportability:
ANDROID_EMU_VK_ICD=portability
알려진 문제
HAXM이 경우에 따라 Vulkan의 일관성 있는 메모리를 게스트에 매핑하지 못하고 에뮬레이터를 종료할 수 있습니다. 이 문제는 예정된 HAXM 업데이트에서 해결됩니다.
gRPC 스트리밍 에뮬레이터(Linux)
광범위한 실행 컨텍스트에서 호스트 GPU 렌더링 및 상호작용을 허용하여 에뮬레이터를 가능한 한 다목적으로 만들기 위해 항상 노력하고 있습니다. CI 및 원격 데스크톱 사용자에게는 다음과 같은 오래된 문제가 있습니다.
- 프로그래매틱 방식으로 입력 명령어를 에뮬레이터에 보내는 작업에는 높은 오버헤드를 발생시킬 수 있는 adb 셸 명령 실행 또는 더 빠르지만 특정 네트워크 구성에서는 작동하지 않을 수 있는 telnet 콘솔 사용이 포함됩니다.
- CI 사용자는 헤드리스 에뮬레이터를 실행하는 경우가 많으므로 화면이 표시되거나 대화형인 경우에 확인 가능한 문제를 발견하기 어려울 수 있습니다.
- GPU 렌더링은 흔히 호스트의 비 가상 디스플레이와 연결되므로 원격 데스크톱 사용자가 호스트 GPU 렌더링을 사용할 때 에뮬레이터와 상호작용할 수 없는 상황이 많습니다.
이 문제를 해결하기 위해 Linux 시스템에서 실행할 때 에뮬레이터는 이제 gRPC 서비스를 제공합니다. gRPC는 HTTP를 통해 작동하는 RPC용 일반 프레임워크입니다.
기본적으로 에뮬레이터 gRPC 서비스는 사용 중지되어 있지만, 다음 명령줄 옵션을 사용하여 이 서비스를 활성화할 수 있습니다. 여기서 <port>
는 에뮬레이터가 gRPC 요청을 처리해야 하는 포트(일반적으로 5556
)입니다.
-grpc <port>
서비스가 시작된 후에는 클라이언트에서 gRPC 명령어를 실행할 수 있습니다. 현재 명령어 집합은 입력 이벤트 전송과 스크린샷 수신을 모두 허용합니다. 이러한 명령어는 다음 문제를 해결하는 데 도움이 됩니다.
- HTTP를 통해 낮은 오버헤드로 입력 명령어를 에뮬레이터에 전송할 수 있습니다. HTTP를 사용하여 추가 네트워크 구성으로 명령어를 전송할 수도 있습니다.
- 에뮬레이터가 헤드리스로 실행 중이더라도 스크린샷 명령어를 전송하여 현재 화면을 쿼리할 수 있습니다. 상호작용을 위해 입력 이벤트를 에뮬레이터로 다시 보낼 수도 있습니다.
- 원격 데스크톱 사용자가 에뮬레이터와 상호작용하기 위해 gRPC를 사용하여 스크린샷을 받고 입력 이벤트를 보내는 동안 GPU 가속 렌더링으로 메인 디스플레이에서 에뮬레이터를 헤드리스로 실행할 수 있습니다.
사용 가능한 명령어의 전체 목록은 이 protobuf를 참고하세요.
gRPC를 시작하는 데 도움을 주기 위해 사용자가 참고할 수 있는 몇 가지 샘플 클라이언트를 제공하고 있습니다.
현재 여기에는 다음과 같은 샘플이 포함됩니다.
- 에뮬레이터 상태를 쿼리하는 데 사용할 수 있는 Go 기반 서비스
- 스크린샷 및 입력 RPC를 통한 원격 상호작용을 보여주는 React 앱. 이 샘플에는 protobuf 버전 3.7.0 이상이 필요합니다.
- 에뮬레이터의 VM 구성을 쿼리한 후 일련의 명령어를 전송하는 Python 샘플
28.0.25(2019년 3월 29일)
이 업데이트에는 다음과 같은 개선사항 및 수정사항이 포함되어 있습니다.
헤드리스 에뮬레이터 빌드
여러 문제 중에서도 시스템이 공유 라이브러리 종속 항목과 함께 Qt를 지원할 수 있다는 암묵적인 기대로 인해 에뮬레이터를 Docker 및 기타 지속적 통합(CI) 워크플로로 설정하기가 어려웠습니다.
이 문제를 해결하기 위한 첫 번째 단계로 Qt에 종속되지 않은 QEMU 실행 파일이 포함된 에뮬레이터 런처의 변형을 도입했습니다. Linux에는 여전히 libX11
링크가 있지만, 이 링크가 곧 삭제되기를 기대합니다.
헤드리스 에뮬레이터를 사용하려면 평소와 같이 명령줄에서 에뮬레이터를 실행하되 에뮬레이터 바이너리 호출을 emulator-headless
로 바꿉니다. 자세한 내용은 28.1.8 Canary 업데이트 출시를 참고하세요.
- Android Q 시스템 이미지를 실행할 때 Intel GPU의 떨림 현상 및 잘못된 프레임 표시가 수정되었습니다.
- Android Q 시스템 이미지를 Pixel 2 XL 스킨과 함께 사용하는 경우 검은색 화면이 표시되는 문제가 수정되었습니다.
- 이제 최신 BIOS 바이너리가 에뮬레이터를 시작하는 데 사용됩니다. 이 변경사항은 Windows에서 에뮬레이터를 시작할 때 상황에 따라 발생하는 'vCPU 종료 요청' 오류를 줄이는 데 도움이 될 수 있습니다.
- '스냅샷에서 Android Q 시스템 이미지를 재개할 때 잘못된 표시' 문제의 수정사항이 백포트되었습니다.
- 사용자에게 '승인되지 않음' 오류가 발생했습니다. 에뮬레이터 문제
플랫폼 도구 28.0.2에서 ADB의 호환되지 않는 변경사항 때문입니다. 이제 플랫폼 도구 28.0.2의 ADB를 에뮬레이터와 함께 안전하게 사용할 수 있습니다. '승인되지 않은' 에뮬레이터 문제가 발생하면 다음 문제 해결 단계를 따르세요.
- 모든 에뮬레이터를 종료합니다.
~/.android/adbkey
및~/.android/adbkey.pub
파일을 모두 삭제합니다.adb kill-server
명령어를 실행합니다.adb devices
명령어를 실행합니다.- AVD 데이터를 삭제합니다.
- 에뮬레이터를 다시 시작합니다.
28.0.23(2019년 1월 29일)
이 업데이트에는 다음과 같은 개선사항 및 수정사항이 포함되어 있습니다.
호스트 오디오 입력이 기본적으로 사용 중지됨
Reddit의 최근 게시물 게스트 Android OS가 항상 호스트 마이크의 'Ok Google' 예기치 않게 작동합니다. 불편을 끼쳐 죄송합니다. Android팀과 협력하여 시스템 이미지에서도 핫워드 감지를 사용 중지하겠습니다.
이 문제를 해결하기 위해 다음과 같이 변경되었습니다.
- 이제 실제 호스트 오디오 데이터가 기본적으로 억제됩니다. 게스트가 마이크를 사용할 때 호스트 오디오 대신 무음이 전달됩니다.
- 호스트 오디오 데이터를 사용하려면 이제 Extended Controls > Microphone으로 이동하고 Virtual microphone uses host audio input을 사용 설정하여 해당하는 옵션을 사용하면 됩니다. 이 옵션은 에뮬레이터를 다시 시작할 때마다 자동으로 사용 중지됩니다.
CPU 사용량 조사에 관한 업데이트
Project Marble 조사 중에 에뮬레이터의 높은 CPU 사용량은 일반적으로 다음 세 가지 카테고리로 분류됩니다.
유휴 상태 시: Play 스토어 이미지의 자동 앱 업데이트
사용자가 로그인하지 않은 경우에도 설치된 모든 앱이 임의의 간격으로 업데이트되는 것을 확인했습니다. 이 과정에서 CPU 사용량은 GMSCore 및 dex2oat의 코어 수 x 100%(일반적으로 약 400%)가 됩니다. Play 스토어 앱에서 자동 앱 업데이트를 사용 중지하여 이 문제를 완화할 수 있습니다.
유휴 상태 시: 핫워드 감지
홈 화면에 있고 포그라운드로 실행되는 앱이 없을 때 CPU 사용량이 상당히 많을 수 있습니다(약 25%, 50%까지 급증함). 이 문제는 지속적으로 호스트를 핑하는 핫워드 감지로 인해 발생합니다. CPU 비용은 주로 호스트에서 게스트로 이동하는 데 소요되는 시간으로 인해 발생하므로 호스트 오디오 입력을 사용 중지하는 것으로는 이 문제를 완화할 수 없습니다. 그러나 Google 앱에서 마이크 권한을 취소하여 이 문제를 완화할 수 있습니다.
활성화 상태 중, 경우에 따라 유휴 상태 시: 애니메이션
CPU 사용량이 많은 세 번째 소스는 애니메이션입니다. 에뮬레이터가 유휴 상태가 아닌 경우에도 그래픽 드라이버 스택을 최적화하여 CPU 사용량을 줄일 수 있는 것으로 확인했습니다. Project Marble의 일부로 그래픽 드라이버 최적화를 점진적으로 출시할 예정입니다.
28.0.22(2018년 12월 21일)
이 업데이트에는 다음과 같은 개선사항 및 수정사항이 포함되어 있습니다.
- 일부 설정에서 Mac 에뮬레이터가 재부팅되거나 Quickboot 저장 시 커널 패닉 상태가 되는 오래된 문제가 수정되었습니다. (문제 120951634)
- 매핑된 파일을 RAM 스냅샷으로 사용하는 경우 이제 에뮬레이터가 종료 시 파일 매핑을 명시적으로 해제합니다.
28.0.20(2018년 12월 11일)
이 업데이트에는 다음과 같은 개선사항 및 수정사항이 포함되어 있습니다.
- 특정 Intel GPU 모델에서 스냅샷 로드 시 에뮬레이터가 정지되는 Windows의 문제가 수정되었습니다.
- 비표준
ANDROID_SDK_HOME
위치를 사용할 때unauthorized
ADB 기기 상태를 유발하는 문제가 수정되었습니다. - Windows에서 CPU 가속이 사용 중지된 상태로 시스템 이미지를 부팅할 때 에뮬레이터가 비정상 종료되는 문제가 수정되었습니다.
- 모자이크 처리된 에뮬레이터 디스플레이 문제가 수정되었습니다. 이제 다운샘플링이 작동합니다.
- macOS 10.14+에서 새로운 접근성 보안 설정과의 상호작용으로 인해 가상 장면 카메라의 마우스 보기 컨트롤이 지나치게 민감해질 수 있는 문제가 수정되었습니다.
- 시간대 계산에서 에뮬레이터 시계가 산발적으로 변경될 수 있는 오류가 수정되었습니다.
- 다양한 cocos2d 및 Unreal 엔진 앱의 렌더링 오류가 수정되었습니다.
- 에뮬레이터에 Wi-Fi P2P 지원이 추가되었습니다.
이제 최신 Pie Play 스토어 이미지를 사용하면 두 개의 에뮬레이터가 Wi-Fi를 통해 서로 직접 통신할 수 있습니다. Wi-Fi P2P를 사용하려면 다음과 같이 동일한
-wifi-server-port
및-wifi-client-port
인수로 두 개의 AVD를 시작하세요.emulator @<server-avd-name> -wifi-server-port 9999
emulator @<client-avd-name>-wifi-client-port 9999
- 호환되지 않는 프레임 크기를 가져와서 Android 게스트의 카메라 설정에 맞게 동적으로 크기를 조절하여 Windows에서 더 많은 웹캠을 추가로 지원합니다.
28.0.16(2018년 11월)
이 업데이트에는 몇 가지 새로운 기능, 기존 기능의 개선사항 및 버그 수정이 포함되어 있습니다.
리소스 사용량
특히 API 수준 28 이상의 시스템 이미지를 사용하는 경우에 에뮬레이터가 전반적으로 RAM을 덜 사용합니다. 이러한 시스템 이미지에는 게스트측 그래픽 드라이버의 개선된 메모리 사용이 포함됩니다.
또한 다음 영역에서 리소스 사용이 개선되었습니다.
- 장기 실행 테스트 중 에뮬레이터 메모리 사용량이 감소되었습니다. 장기 실행 테스트 중에 메모리 사용량 문제가 계속 발생하는 경우 Issue Tracker에서 사용 사례를 설명하는 문제를 만드세요.
- 애니메이션이 있는 앱을 실행하는 경우 CPU 사용량이 감소되었습니다.
- Windows에서 QEMU AIO 컨텍스트가 누출될 수 있는 문제가 해결되었습니다.
단일 AVD의 여러 인스턴스를 동시에 실행
이제 동일한 AVD의 여러 인스턴스를 시작하고 동시에 실행할 수 있습니다. 첫 번째 인스턴스 이후에 시작하는 인스턴스는 읽기 전용이며 종료 시 게스트 가상 디스크 변경사항은 삭제됩니다.
동일한 AVD의 여러 인스턴스를 동시에 실행하려면 명령줄에서 -read-only
플래그를 사용하여 첫 번째 인스턴스 이후의 모든 인스턴스를 시작하세요.
이 기능은 Android 이미지의 쓰기 가능한 부분과 관련된 QCOW2 파일을 복사하여 실현됩니다. 디스크 공간 관리를 지원하기 위해 여러 인스턴스를 시작하기 전에 QCOW2 파일을 사전 커밋할 수 있도록 qemu-img
명령줄 도구도 번들로 제공되었습니다.
또한 파일 지원 게스트 RAM 스냅샷 기능과 함께 사용될 때 여러 AVD 인스턴스는 기본 AVD Quickboot 스냅샷을 COW(기록 중 복사) 게스트 RAM의 공통 소스로 공유합니다. 이 속성은 인스턴스가 많은 RAM을 함께 공유한다는 것을 의미합니다. 여러 기기를 동시에 실행해야 하는 테스트를 실행하려면 이 기능을 사용하세요.
일반 상호작용 또는 CI 워크플로에 속하는 가능한 사용 사례에 관한 의견을 보내주시기 바랍니다. Issue Tracker에서 문제를 만들거나 찬성 투표하세요.
파일 지원 게스트 RAM 스냅샷
이제 게스트 RAM을 사전 할당하고 파일로 매핑하여 에뮬레이터가 종료 시 모든 작업을 수행하는 대신 런타임 중에 Quickboot 스냅샷을 저장할 수 있습니다. 현재 에뮬레이터를 닫을 때 저장 시간이 오래 걸리는 경우 이 기능을 사용하여 Quickboot 성능을 향상시키세요. 기본적으로 Quickboot 스냅샷은 종료 시 저장되고 실제 기기 정지 및 절전 모드 해제와 같은 상황에서 매번 다시 로드됩니다.
이제 Android 게스트 RAM이 기본적으로 자동 저장되므로 기기 상태를 정의하고 이 상태에서 반복적으로 로드하려면 각 세션 후에 변경사항을 삭제하도록 에뮬레이터에 지시해야 합니다. 다음과 같은 방법으로 이와 같이 지시할 수 있습니다.
- 명령줄에서 에뮬레이터를 시작할 때
-no-snapshot-save
또는-read-only
플래그를 사용합니다. - Extended Controls > Snapshots > Settings로 이동하여 Auto-save current state to Quickboot?를 No로 전환합니다.
- 이 옵션을 선택한 후 에뮬레이터를 다시 시작해야 합니다. 에뮬레이터가 자동 저장하도록 설정된 경우 다음 명령어를 실행하여 체크포인트를 설정할 수 있습니다.
드림 이 명령어를 실행하면 에뮬레이터 Quickboot 스냅샷이 그대로 유지됩니다. 체크포인트를 제공합니다 체크포인트에서 에뮬레이터를 로드하려면 동일한 명령어를 다시 실행하세요.adb emu avd snapshot remap 0
스냅샷 UI를 통해 만들고 로드한 스냅샷은 파일 매핑 없이 이전과 동일하게 작동합니다.
이 기능은 Quickboot 작동 방식을 크게 변화시키기 때문에 이 기능이 Quickboot 성능을 향상하는지와 사용 시 발생하는 문제의 유형에 관한 의견을 보내주시면 대단히 감사하겠습니다. 문제가 발생한다면 ~/.android/advancedFeatures.ini
파일에 다음 행을 추가하여 이 기능을 사용 중지할 수 있습니다.
QuickbootFileBacked = off
스냅샷에서 에뮬레이터를 시작하면(-snapshot
명령줄 옵션을 사용하거나 AVD Manager에서 스냅샷으로부터 시작) 에뮬레이터가 Quickboot 스냅샷 자동 저장 및 종료 시 Quickboot 스냅샷 저장 기능을 모두 사용 중지합니다. 이렇게 하면 의도치 않게 Quickboot 스냅샷을 덮어쓸 가능성이 줄어들고 파일 지원 Quickboot 스냅샷을 사용하지 않는 느린 대체 경로를 피할 수 있습니다.
QEMU 2.12
QEMU 변형의 기준을 QEMU 2.9에서 QEMU 2.12로 다시 지정했습니다. 이 업데이트에는 다음과 같은 QEMU 변경사항이 포함되어 있습니다.
- https://wiki.qemu.org/ChangeLog/2.10
- https://wiki.qemu.org/ChangeLog/2.11
- https://wiki.qemu.org/ChangeLog/2.12
다음은 Android Emulator에 영향을 주는 몇 가지 중요한 변경사항입니다.
- x86:
gdbstub
가 이제 SSE 레지스터에 액세스할 수 있는 권한을 제공합니다. - 디스크 이미지: 이미지 잠금이 추가되고 기본적으로 사용 설정됩니다. 별도로 옵션이 지정되지 않는 한, 호스트가 OFD 또는 posix 잠금을 지원하면 여러 QEMU 프로세스가 동일한 이미지에 쓸 수 없습니다.
qemu-img: qemu-img resize
에서 새로운 이미지 부분의 사전 할당을 지원합니다.- 이제
qemu
및qemu-img
에서 QCOW2 축소가 지원됩니다.
접근성
- 스크린 리더 문제가 수정되고 화면 녹화 및 스냅샷 UI에서 이러한 도구와 관련된 지원이 강화되었습니다.
- 색맹인 사용자의 Quick Boot 알림 아이콘 접근성이 향상되었습니다.
그래픽
- OpenGL ES 정점 배열 포인터에 발생할 수 있는 범위를 벗어난 메모리 액세스 문제가 수정되었습니다.
- 일부 오래된 GPU에서는 OpenGL 2.1 이상(필수)을 지원하지 않거나 다른 안정성 문제가 있었습니다. 이러한 문제로 인해 에뮬레이터가 시작 시 비정상 종료되거나 정지되거나 또는 기본 GPU 설정에서 사용할 수 없게 될 수 있습니다. 이제 에뮬레이터는 이러한 GPU가 사용 중인 것으로 감지되면 Swiftshader 렌더러로 자동 전환합니다.
FBO != 0
이eglSwapBuffers
시점에 바인딩되면 에뮬레이터에서 올바른 프레임 버퍼를 게시하지 못하는 문제가 수정되었습니다.- 가상 Android 디스플레이가 왼쪽 상단에만 표시되는 문제가 수정되었습니다. 이 문제는 잘못 구성된 Qt 환경 변수 때문이라고 생각합니다. 이제 에뮬레이터가 Qt 크기 조정과 관련된 모든 환경 변수를 재정의합니다.
- 스냅샷에서 GLES1 앱을 로드할 때 일부 상황에서 에뮬레이터가 비정상 종료되는 문제가 수정되었습니다.
- 더블 프리 또는 손상된 데이터를 초래할 수 있는 OpenGL과 시작 중인 렌더링 스레드의 동시성 문제가 수정되었습니다.
- Android Emulator가 이제 API 수준 28 이상을 사용하는 시스템 이미지에서 ASTC LDR 압축 텍스처(
GL_KHR_texture_compression_astc_ldr
)를 지원합니다. - 이제 대부분의 최신 GPU가
GLESDynamicVersion
기능 플래그를 사용하지 않고 기본적으로 OpenGL ES 3.x가 사용 설정된 상태로 에뮬레이터를 시작할 수 있습니다. -gpu guest
(게스트의 소프트웨어 렌더링)가 지원 중단되었습니다. 이제 API 수준 28 이상의 시스템 이미지가 대신 Swiftshader를 사용하도록 자동 전환됩니다(-gpu swiftshader_indirect
).- 명령줄에서
-no-window
플래그를 사용하여 에뮬레이터를 시작한다면 이제 기본 렌더러는 Swiftshader입니다.
위치
- 이제 에뮬레이터가 위도 및 경도 위치와 함께 베어링을 업데이트할 수 있습니다. 자기계 가상 센서가 GPX 또는 KML 파일을 재생할 때 모션을 유추하여 동적으로 자북에 맞게 자체 조정됩니다.
- 이제 위치 페이지에서 기기 속도를 설정할 수 있습니다.
- GPX 또는 KML 파일을 재생할 때 속도가 자동으로 설정되고 재생이 종료되면 0으로 설정됩니다.
- 고도가 더 이상 -1,000~+10,000미터 범위로 제한되지 않습니다.
- 확장 컨트롤 창을 한 번 이상 열지 않으면 가상 GPS 위치가 주기적으로 업데이트되지 않는 문제가 수정되었습니다.
카메라
Windows에서 에뮬레이터가 웹캠에서 전달되는 카메라 프레임의 크기를 동적으로 조절하므로 이제 더 많은 웹캠이 지원됩니다. 또한, 이 기능은 프레임 전달 오류로 인해 에뮬레이터가 중단되는 것을 방지합니다.
Play 스토어
Play 스토어 이미지의 디스크 공간 부족 문제를 해결하기 위해 최신 Play 스토어 AVD로 실행하는 경우 에뮬레이터가 자동으로 사용자 데이터 파티션 크기를 6GB로 조정합니다.
일반 품질 개선사항 및 수정
- 일부 사용자로부터 에뮬레이터 실행이 느리다는 문제를 신고받았습니다. 한 가지 가능한 원인으로 에뮬레이터의 임시 디렉토리 내부에 오래된 파일이 너무 많아진다는 것을 확인했습니다. 해결 방법으로, 에뮬레이터가 더 이상 이 디렉토리에 ADB 동적 이미지 확인 파일을 저장하지 않습니다. 그러나 이 폴더의 콘텐츠를 삭제하는 것도 도움이 될 수 있습니다. 이 폴더는 운영체제에 따라 다음 위치 중 하나에 있습니다.
- Windows:
C:\Users\<username>\AppData\Local\Temp\AndroidEmulator\*
- macOS 또는 Linux:
/tmp/android-<username>/*
- Windows:
- 여유 RAM이 충분하지 않아서 에뮬레이터를 시작할 수 없다면 이제 오류 메시지가 표시됩니다. Windows를 사용 중이고 여유 RAM이 있는 것을 알고 있지만 여전히 에뮬레이터를 시작할 수 없는 경우 할당된 메모리가 초과되었을 수 있습니다. 이 문제와 관련하여 도움이 필요하면 에뮬레이터 문제 해결 페이지를 참고하세요.
- 이제
-sysdir
명령줄 옵션이 추론된 시스템 이미지 디렉터리를 적절하게 재정의합니다. - 이제 가상 모뎀이 모델 활동 정보
+MAI
쿼리를 지원합니다. - 메모리 누수, 메모리 손상 및 CPU 사용량과 관련된 다양한 문제가 수정되었습니다. 비정상 종료, 메모리 누수 또는 기타 과도한 리소스 사용량 문제가 발생하면 Issue Tracker에서 문제를 생성하세요.
- 블루투스 헤드셋을 에뮬레이터와 함께 사용하면 오디오 성능이 전체적으로 저하되는 문제가 macOS 10.14에서 다시 나타났는데 이 문제가 수정되었습니다. 이 문제를 방지하기 위해 이제 에뮬레이터가 macOS에서 실행되면 블루투스 오디오를 사용하지 않습니다. (문제 37070892)
- Windows에서 에뮬레이터 시계의 시간대가 올바르지 않은 문제가 수정되었습니다.
- 스피닝 하드디스크 드라이브(HDD)가 있는 Linux 시스템에서 에뮬레이터 속도 저하 및 정지 문제가 수정되었습니다.
- macOS에서 스택 손상을 초래할 수 있는 일부 컴파일 경고가 수정되었습니다.
- 작동 중지가 잘못 보고될 수 있는 문제가 수정되었습니다.
- 스레드 중 하나가 성공적으로 생성되지 않을 때 비정상 종료를 초래할 수 있는 스레드 풀 제거 문제가 수정되었습니다.
- macOS에서 타이머가 불안정하여 중단 및 기타 이상한 동작이 발생하는 문제가 수정되었습니다. macOS에서 에뮬레이터 중단이 발생하는 경우 Issue Tracker에서 문제를 만드세요.
- 에뮬레이터를 닫을 때 UI가 사용 중지되지만 실제로 에뮬레이터는 닫히지 않는 문제가 수정되었습니다.
/dev/urandom
인스턴스를 너무 많이 열어서 발생한 중단을 포함하여 산발적인 비정상 종료와 관련된 문제가 수정되었습니다.- ADB가 강제로 종료될 때 첫 번째 이후로 에뮬레이터가 시작되지 않는 문제가 수정되었습니다.
- MIPS 빌드가 삭제되었습니다. 여전히 MIPS가 필요한 경우 Issue Tracker에서 문제를 만드세요.
- 스냅샷 로드 시 ADB 연결이 손상될 수 있는 문제가 수정되었습니다.
- 기기 방향이 AVD의 기본 방향과 다른 스냅샷을 재개할 때 에뮬레이터 창에 잔상이 남거나 화면 밖으로 순간이동하는 문제가 수정되었습니다.
- 스냅샷 저장 시 비정상 종료와 관련된 문제가 수정되었습니다.
- Linux에서 btrfs 파일 시스템으로 인해 속도가 매우 느려질 수 있습니다. 에뮬레이터가 자동으로 스냅샷을 저장하고 가상 디스크 기기에 COW(기록 중 복사) 기능을 사용하기 때문입니다.
~/.android/avd
디렉터리를 정리하고 비어 있는~/.android/avd
디렉터리에서 다음 명령어를 실행하는 것이 좋습니다. 드림 이 명령어를 실행하면 COW(기록 중 복사) 기능이 사용 중지된 폴더에 새 스냅샷이 생성됩니다.chattr +C
HAXM 7.3.2
최신 시스템 이미지가 에뮬레이터에서 제대로 실행되려면 HAXM 7.3.2를 설치해야 하므로 HAXM 7.3.2를 다시 언급하겠습니다. HAXM 7.3.2가 공개 버전 채널에서 이미 사용 가능해야 하며 https://github.com/intel/haxm/releases에서 수동으로 HAXM 7.3.2를 설치할 수도 있습니다.
이 버전의 HAXM에서 해결된 몇 가지 문제는 다음과 같습니다.
- 최신 Linux 커널(4.6 이상)을 사용하는 게스트 OS의 임의 비정상 종료가 해결되었습니다. 예를 들어 Ubuntu 18.04입니다(#39, #74).
- 호스트 비정상 종료를 초래할 수 있는 x86 명령 에뮬레이터 버그가 수정되었습니다(#93).
32비트 Windows 지원 중단
많이 사용하지 않고 유지보수 비용이 높기 때문에 Windows에서 실행되는 32비트 버전의 Android Emulator 지원을 중단할 계획입니다. 32비트 버전의 Android Emulator를 삭제하고 지원을 종료하기 전에 전환 계획을 배포하겠습니다. 그러나, 이 향후 변경과 관련된 의견이나 문의사항은 적극적으로 받고 있습니다.
현재 Windows에서 실행되는 32비트 버전의 Android Emulator를 사용하고 있다면 Issue Tracker를 통해 알려주시고 향후 지원 방법에 관한 의견을 보내주세요.
27.3.10(2018년 8월)
이 업데이트에는 다음과 같은 버그 수정이 포함되어 있습니다.
RAM 크기 구성 수정
일부 사용자로부터 에뮬레이터 실행이 느리다는 문제를 신고받았습니다. 한 가지 가능한 원인으로 AVD config.ini
파일의 AVD RAM 크기가 잘못 설정되어 있다는 것을 확인했습니다.
이 문제를 완화하기 위해 에뮬레이터는 API 수준 26 이상을 사용하는 이미지의 최소 RAM 수준을 Android 스튜디오의 기본 수준인 1,536MB로 늘립니다. AVD config.ini
파일에 hw.ramSize
가 MB 단위로 나열되지 않는다면 Issue Tracker에서 문제를 생성하세요.
다음 위치에서 config.ini
파일을 찾을 수 있습니다.
~/.android/avd/<avdname>.avd/config.ini
27.3.9(2018년 7월)
이 업데이트에는 다음과 같은 개선사항 및 버그 수정이 포함되어 있습니다.
개선된 Windows Hypervisor Platform 오류 메시지
일부 사용자가 WHPX(Windows Hypervisor Platform) 에뮬레이터를 활성화할 때 WHPX 초기화에 실패한 원인을 진단하는 데 어려움이 있었습니다. 이러한 문제를 진단하는 데 도움이 될 수 있도록 보다 유용한 오류 메시지를 추가했습니다. 명령줄에서 -verbose
플래그를 사용하여 에뮬레이터를 실행하면 이러한 오류 메시지가 사용 설정됩니다.
일반 수정사항
- 카메라 앱에서 스냅샷을 로드할 때 발생하는 OpenGL 오류가 수정되었습니다.
27.3.8(2018년 7월)
이 업데이트에는 몇 가지 새로운 기능, 기존 기능의 개선사항 및 버그 수정이 포함되어 있습니다.
스냅샷
이제 지정된 기기 구성의 여러 AVD 스냅샷을 저장하고 저장된 이 중에서 에뮬레이터 시작 시 로드할 스냅샷을 선택할 수 있습니다.
Android 스튜디오 3.2 Canary 13부터, 각 기기 설정은 AVD를 시작할 때 어떤 AVD 스냅샷을 로드할지 지정할 수 있는 컨트롤을 가상 기기 설정 대화상자의 고급 설정에 포함합니다.
이러한 확장 스냅샷 기능을 수용하기 위해 Extended controls 대화상자에 Snapshots 카테고리를 추가했습니다. 이 새로운 창에는 이전에 Settings 창에 있던 Quick Boot 스냅샷을 저장하고 로드하기 위한 컨트롤을 비롯하여 AVD 스냅샷을 저장하고 로드하기 위한 컨트롤이 포함되어 있습니다.
저장된 각 스냅샷의 이름과 설명을 편집할 수 있습니다.
자세한 내용은 스냅샷을 참조하세요.
HAXM 7.2.0
이제 모든 채널에서 HAXM 7.2.0을 사용할 수 있습니다.
이 업데이트에는 버그 수정 및 대용량 RAM 지원을 위한 개선사항이 포함되어 있습니다. 또한 이 HAXM 업데이트 및 에뮬레이터 27.3 이상에서는 스냅샷이 가상 기기 시작 시 스냅샷 전체를 로드하지 않고 요청 시 콘텐츠를 RAM에 로드합니다. 이 변경사항을 통해 스냅샷을 로드하는 데 필요한 시간을 크게 줄일 수 있습니다.
자세한 내용은 VM 가속 구성을 참조하세요.
27.2.9(2018년 5월)
이 업데이트에는 몇 가지 새로운 기능, 기존 기능의 개선사항 및 버그 수정이 포함되어 있습니다.
화면 녹화
이제 Android Emulator에서 동영상 및 오디오를 녹화/녹음하고 녹화/녹음 파일을 WebM 또는 애니메이션 GIF 파일에 저장할 수 있습니다.
화면 녹화 컨트롤은 Extended Controls 창의 Screen record 탭에 있습니다.
도움말: Control + Shift + R(Mac에서는 Command + Shift + R)을 눌러 화면 녹화 컨트롤을 열 수도 있습니다.
화면 녹화를 시작하려면 Screen record 탭에서 Start recording 버튼을 클릭합니다. 녹화를 중지하려면 Stop recording을 클릭합니다.
녹화된 동영상을 재생하거나 저장하는 컨트롤은 Screen record 탭의 하단에 있습니다. 동영상을 저장하려면 탭 하단의 메뉴에서 WebM 또는 GIF를 선택하고 Save를 클릭합니다.
명령줄에서 다음 명령어를 사용하여 에뮬레이터에서 화면 녹화 파일을 기록하고 저장할 수도 있습니다.
adb emu screenrecord start --time-limit 10 [path to save video]/sample_video.webm
스크린샷
명령줄에서 다음 명령어 중 하나를 사용하여 스크린샷을 촬영할 수 있습니다.
screenrecord screenshot [destination-directory]
adb emu screenrecord screenshot [destination-directory]
스크린샷은 PNG 형식으로 저장됩니다.
가상 장면 카메라 및 ARCore
ARCore를 사용하여 증강 현실(AR) 앱을 개발하고 테스트하는 작업이 이제 가상 환경 내에서 AR 경험을 실험할 수 있는 새로운 가상 장면 카메라로 훨씬 더 쉬워졌습니다.
에뮬레이터에서 가상 장면 카메라를 사용하는 방법에 관한 자세한 내용은 Android Emulator에서 AR 앱 실행을 참고하세요.
Pixel 기기 이미지의 Google Play 스토어
Pixel 및 Pixel 2 기기 이미지의 Google Play 스토어가 사용 설정되었습니다. 이는 Android 스튜디오 3.2 이상의 AVD Manager에 표시되며 Play Store 열에 Google Play 로고가 있습니다. Google Play 스토어가 사용 설정된 AVD는 Extended controls 대화상자에 Google Play 탭이 있습니다. 이 탭에는 기기에서 Google Play 서비스를 업데이트할 수 있는 편리한 버튼이 제공됩니다.
스냅샷
이제 에뮬레이터를 다시 시작하지 않고 Quick Boot 스냅샷을 로드할 수 있습니다. 스냅샷을 로드하려면 Extended Controls 창을 열고 Settings 페이지로 이동하여 Load Now 버튼을 클릭하세요.
리소스를 보다 효율적으로 사용하고 각 작업에 소요되는 시간을 최소화하기 위해 스냅샷 로드 및 저장 기능을 많이 개선했습니다. 여전히 저장 시간이 비정상적으로 오래 걸리는 경우 CPU, RAM 및 실행 중인 바이러스 백신/방화벽/보안 소프트웨어 설정의 세부정보와 함께 문제를 신고하세요.
Skia로 렌더링
API 27 이상의 이미지를 사용하면 에뮬레이터에서 더 원활하고 효율적인 렌더링이 가능한 Skia로 Android UI를 렌더링할 수 있습니다.
지금은 Skia를 사용하려면 명시적으로 사용 설정해야 합니다.
Skia 렌더링을 사용 설정하려면 adb 셸에서 다음 명령어를 사용하세요.
su setprop debug.hwui.renderer skiagl stop start
카메라
이제 Windows에서 Android Emulator에서 Media Foundation을 웹캠 백엔드로 사용하여 웹캠 캡처의 성능과 프레임 속도가 최대 720p 30FPS까지 크게 향상되었습니다.
이제 Mac에서 webcam0 및 webcam1을 함께 사용할 수 있습니다.
기타
-phone-number-prefix
명령줄 옵션이 -phone-number [number]
로 변경되어 전체 전화번호를 설정할 수 있습니다.
이제 영숫자로 된 SMS 주소를 사용할 수 있습니다.
수정사항
- 이제 Linux 버전의 Android Emulator가 최신 Clang C ++ 도구 모음을 사용하여 빌드됩니다. 이 변경사항을 통해 libGL 및 libstdc++ 오류로 인해 에뮬레이터를 시작하지 못하던 문제가 수정되었습니다.
- 여러 가지 비정상 종료 및 중단 원인이 해결되었습니다.
- 여유 디스크 공간이 충분하지 않아서 발생하는 비정상 종료 및 중단을 피하기 위해 이제 에뮬레이터가 시작 시 여유 디스크 공간이 충분한지 확인하고 최소 2GB를 사용할 수 있지 않으면 시작되지 않습니다.
- 일부 Unity 게임이 렌더링되지 못하도록 하는 문제가 수정되었습니다.
- 에뮬레이터가 네트워크에 연결할 수 없도록 하는 DNS 문제가 수정되었습니다.
- Virtual Device Configuration 대화상자를 통해 AVD에 할당된 내부 저장소 변경사항이 작동하지 않는 문제가 수정되었습니다.
- 많은 adb 프로세스가 생성되고 제대로 종료되지 않는 문제가 수정되었습니다.
- Extended controls 창이 열리지 않으면 회전 버튼과 UI의 다른 부분이 응답하지 않는 문제가 수정되었습니다.
- Extended controls 대화상자를 한 번 이상 열지 않으면 호스트에서 복사하여 붙여넣기가 작동하지 않는 문제가 수정되었습니다.
- 프레임이 없는 에뮬레이터의 크기 조절 직사각형이 에뮬레이터의 시각 테마를 잘 따르도록 업데이트되었습니다.
- 이제 비행기 모드가 켜져 있을 때 전화 및 SMS가 올바르게 중지됩니다.
- 스냅샷을 로드한 후 SMS 및 모바일 데이터 기능이 사용 중지되는 문제가 수정되었습니다.
“Unable to open... \pstore.bin. Permission denied.”
와 같은 거짓 경고 메시지를 더 이상 수신하지 않습니다.- 일부 Mac 화면에서 AVD를 재배치하지 못하는 문제가 수정되었습니다.
- AVD를 Pixel 2 XL 스킨으로 실행할 때 최신 MacBook Pro 컴퓨터에서 화면이 깜박이거나 빈 화면이 표시되는 문제가 수정되었습니다.
- 프레임이 없는 에뮬레이터가 활성화된 상태에서 확대/축소 모드로 전환할 때 빈 화면이 표시되는 문제가 수정되었습니다.
- 확대할 때 기기 스킨과 에뮬레이터 콘텐츠가 동기화되지 않고 스크롤되는 문제가 수정되었습니다.
중단 또는 기타 불안정 문제가 계속 발생하면 문제를 신고하세요.
27.1.12(2018년 3월)
이 업데이트에는 다음과 같은 문제의 수정사항이 포함되어 있습니다.
- 에뮬레이터를 시작한 후 블루투스 오디오 품질이 저하되었습니다. (I문제 37095756)
- 하나의 에뮬레이터로 전송된 위치가 모든 에뮬레이터로 전송되었습니다. (문제 73450633)
- 콘솔을 사용하여 설정된 GPS 위치가 그래픽 사용자 인터페이스에서 Extended Controls > Location을 사용하여 설정된 값으로 재정의되었습니다. (문제 73471760)
중단 또는 기타 불안정 문제가 계속 발생하면 문제를 신고하세요.
이 업데이트, 현재 시스템 이미지 및 Android 스튜디오의 미리보기 버전에서 Android Emulator를 사용하여 ARCore로 빌드된 증강 현실 애플리케이션을 실행할 수 있습니다. 자세한 요구사항 및 안내는 Android Emulator에서 AR 앱 실행을 참고하세요.
27.1.10(2018년 2월)
카메라 캡처 해상도
이제 연결된 웹캠에서 720p 프레임을 캡처할 수 있습니다.
Android 8.1(API 수준 27) 이상의 시스템 이미지로 작업하려면 연결된 웹캠에 720p 프레임을 캡처할 수 있는 기능이 있어야 합니다.
수정사항
- 웹캠 캡처가 경우에 따라 왜곡된 이미지 또는 전체 녹색 이미지를 출력하는 문제가 수정되었습니다.
- 실제로 중단되지 않은 경우에도 다음 메시지가 표시될 수 있던 문제가 수정되었습니다. '에뮬레이터: 오류: 중단된 스레드 'Qt 이벤트 루프'가 감지되었습니다. 15,000밀리초 동안 응답이 없습니다.'
중단 또는 기타 불안정 문제가 계속 발생하면 문제를 신고하세요.
27.1.7(2018년 2월)
프레임이 없는 에뮬레이터 창:
기본적으로 기기 스킨 파일이 있는 에뮬레이터는 주변 창 프레임 없이 표시됩니다. 주변 창 프레임을 표시하려면 Extended Controls 창의 Settings 창에서 Show window frame around device를 사용 설정하세요.
AVD 스냅샷 작업을 더욱 효율적으로 만드는 Quick Boot 개선사항:
- 언제든지 확장 컨트롤 대화상자의 설정 창에서 Save Now 버튼을 사용하여 AVD 스냅샷을 저장할 수 있습니다.
- 에뮬레이터가 현재 상태와 이전에 저장된 스냅샷 사이의 차이만 저장하여 많은 경우에 스냅샷을 저장하는 데 소요되는 시간을 줄입니다.
자세한 내용은 Quick Boot 문서를 참고하세요.
에뮬레이터가 QEMU 2.9를 사용하도록 업데이트되었습니다.
몇 가지 중요한 개선사항은 다음과 같습니다.
- 성능 향상을 위해 최적화된 I/O 및 세분화된 I/O 스레드 잠금
- QEMU 2.8(26.1.4) 이후 수정된 버그
- 새로운 HAXM 백엔드 구현
QEMU 2.9 변경 로그에서 전체 변경사항 목록을 확인하세요.
OpenGL ES 3.0을 준수하는 Swiftshader 구현:
이제 에뮬레이터의 Swiftshader 렌더러가 OpenGL ES 3.0을 완전히 준수합니다. Swiftshader 렌더러에 관한 자세한 내용은 확장 컨트롤의 설정 > 고급 섹션을 참고하세요.
수정사항
- Enable clipboard sharing 옵션을 해제한 후 설정하지 않으면 클립보드 공유가 작동하지 않는 문제가 수정되었습니다.
- 저해상도 AVD에서 Swiftshader 렌더링 백엔드를 사용하는 경우 중단되는 문제가 수정되었습니다.
27.0.5(2018년 1월)
Windows에서 렌더링용 ANGLE이 이제 기본적으로 사용 중지됩니다.
ANGLE이 더 적합하다면 명령줄 플래그
-gpu angle_indirect
를 사용하여 다시 사용 설정할 수 있습니다. 또는, Extended controls 창을 열고 Settings > Advanced로 이동한 후 OpenGL ES 렌더러 설정으로 ANGLE D3D11을 선택하세요.Shift+B가 대문자 B로 입력되지 않는 문제가 수정되었습니다.
27.0.2(2017년 12월)
새로운 Quick Boot 기능은 AVD 인스턴스의 스냅샷을 기반으로 더 빠른 에뮬레이터 시작 시간을 제공합니다.
모든 AVD의 Quick Boot가 기본적으로 사용 설정됩니다. 처음으로 AVD를 시작할 때는 콜드 부팅(기기 전원 켜기와 같음)을 실행해야 하지만, 이후의 시작은 모두 빠르게 진행되고 시스템이 에뮬레이터를 닫은 시점의 상태로 복원됩니다(기기 절전 모드 해제와 유사함).
에뮬레이터가 스냅샷을 저장하는 시기를 제어하려면 에뮬레이터의 Extended controls 창을 열고 Settings를 클릭하세요. 여기서 Save quick boot state on exit에 관한 다음 설정 중 하나를 선택할 수 있습니다.
- Yes: 에뮬레이터를 닫을 때 항상 Quick Boot 스냅샷을 저장합니다. 이는 기본값입니다.
- No: Quick Boot 스냅샷을 저장하지 않습니다. 항상 콜드 부팅을 실행합니다.
- Ask: 에뮬레이터를 닫을 때 Quick Boot 스냅샷을 저장할지 여부를 묻는 메시지를 표시합니다.
선택사항은 현재 열려 있는 AVD에만 적용됩니다.
자세한 내용은 Quick Boot 문서를 참고하세요.
Mac OpenGL ES 3 지원이 추가되었습니다(API 수준 24 이상, Google API 및 x86 ABI를 사용하는 시스템 이미지의 경우).
OpenGL ES 2+ 앱의 안정성을 높이기 위해 이제 에뮬레이터에서 사용 가능한 경우 OpenGL 코어 프로필을 사용합니다.
Swiftshader/ANGLE을 통한 렌더링과 관련된 새로운 옵션:
-gpu swiftshader_indirect
: Quick Boot에서 작동하는 더 빠르고 안정적인 Swiftshader 변형입니다.-gpu angle_indirect
(Windows만): Quick Boot에서도 작동하는 더 안정적인 ANGLE D3D 변형입니다.
이전
-gpu swiftshader
및-gpu angle
옵션이 이제 지원 중단되었습니다. 이제 Extended controls 창에서 Settings > Advanced의 OpenGL ES 렌더러 설정과 관련된 'SwiftShader' 및 'ANGLE' 옵션은*_indirect
변형을 사용합니다.기타 다양한 버그 수정
26.1.4(2017년 8월)
버그 수정 및 다음과 같은 GPU 구성 개선사항이 포함된 부 출시 버전입니다.
- ANGLE 렌더기에서 실행할 때 부팅 애니메이션 사용
- ANGLE 렌더기에서 실행할 때 GLES3 사용 안함
26.1.3(2017년 8월)
버그 수정, 성능 개선사항 및 소규모 기능 변경이 포함된 부 출시 버전입니다.
- 이제 최신 Android 8.0 시스템 이미지를 사용하려면 이 버전이 필요합니다.
이 시스템 이미지는 별도의
vendor.img
파티션을 포함하며 트레블을 준수합니다. - 이제 새로운 HAXM 6.2.0이 사용 가능하며(SDK Manager 확인) 다음과 같은 업데이트를 포함합니다.
- 메모리 사용량이 개선되었습니다. HAXM에 의해 고정된 최대 메모리 작업 세트가 더 이상 AVD의 RAM 크기와 동일하지 않습니다. 대신 요청 시 메모리가 페이지 인됩니다. 이를 통해 RAM 크기가 작은 시스템에서 에뮬레이터를 보다 안정적으로 실행할 수 있습니다.
- 이제 HAXM 6.2.0이 설치된 에뮬레이터는 macOS에서 더 빠르게 부팅할 수 있으며 긴 초기화 단계를 건너뜁니다.
- GPU 구성 개선사항
- Swiftshader를 사용한 호스트 측 소프트웨어 렌더링으로 대체하여 게스트 측 소프트웨어 렌더링을 실행할 때 부팅 시 검은색 화면이 표시되는 문제가 수정되었습니다. Google API를 사용하는 API 수준 19~25용 최신 버전의 시스템 이미지에서 게스트 측 렌더링이 작동해야 합니다.
- 이전 Intel GPU가 있다는 것을 감지하여 에뮬레이터가 소프트웨어 렌더러로 전환되었지만, 에뮬레이터가 실제로 별개의 GPU에서 실행 중인 문제가 수정되었습니다. ANGLE 또는 Swiftshader 렌더링을 사용하도록 전환되는 GPU는 다음과 같이 결정됩니다.
- 이전 Intel iGPU에는 OpenGL 및 ANGLE D3D 드라이버 모두에서 드라이버 문제가 있습니다. Intel HD Graphics 3xxx 이하가 설치된 사용자는 Swiftshader를 사용합니다.
- 일부 사용자가 'Pixel 런처가 계속 중단됨' 버그로 인해 API 수준 25 이미지를 사용할 수 없는 문제를 신고했습니다. 이 문제는 일부 Intel HD 4xxx 모델의 드라이버 문제인 것으로 보입니다. 따라서, ANGLE을 사용하도록 자동으로 전환됩니다.
- 최상의 GPU 에뮬레이션 결과를 얻으려면 별개의 NVIDIA 또는 AMD GPU나 최신 Intel GPU(Iris, HD 5xxx, HD 5xx/6xx)를 사용하는 것이 좋습니다.
- AVD가
hw.gpu.mode=host
로 구성되고 에뮬레이터가 원격 데스크톱 클라이언트에서 실행되었을 때 에뮬레이터가 시작되지 않는 문제(OpenGL 에뮬레이션 초기화에 실패함)가 수정되었습니다. - 'OpenGL ES API 수준(다시 시작해야 함)' 설정이 명확해졌습니다. 문제가 발생하거나 더 낮은 OpenGL ES API 수준에서 테스트해야 할 때 OpenGL ES 3에서 OpenGL ES 2로 다운그레이드하는 옵션이 추가되었습니다.
- Mesa 렌더러 지원이 중단되었습니다. 이제
hw.gpu.mode=mesa
가 호스트에서 Swiftshader를 사용하도록 자동으로 전환됩니다.
- macOS 개선사항:
- 이제 에뮬레이터가 Hypervisor.Framework 또는 HAXM 6.2.0을 통해 macOS 10.13 High Sierra와 완벽히 호환됩니다.
- 성능 및 macOS 호환성을 향상하기 위해 이제 macOS에서 32비트 x86 이미지용 Hypervisor.framework가 기본적으로 사용 설정됩니다. 구체적으로 Hypervisor.framework에 문제가 발생하면 버그 신고를 제출하고
~/.android/advancedFeatures.ini
(이 파일이 없다면 만들어야 함)에HVF = off
를 추가하세요. - Hypervisor.framework를 사용하는 동안 인터넷 연결이 없거나 디버거를 연결하지 못하는 문제가 수정되었습니다.
- 웹캠 캡처의 호환성과 성능을 향상하기 위해 QTKit 기반 카메라 캡처가 AVFoundation을 기반으로 하는 버퍼링된 카메라 캡처로 대체되었습니다.
- 일부 시스템 이미지(현재는 API 수준 25만 해당)에서 Wi-Fi 지원이 추가되었습니다.
'AndroidWifi'라는 액세스 포인트를 사용할 수 있으며 Android가 자동으로 이 액세스 포인트에 연결됩니다. 명령줄 매개변수
-feature -Wifi
로 에뮬레이터를 실행하여 Wi-Fi 지원을 중지할 수 있습니다. - 일부 사용자가 고정 크기 Play 스토어 시스템 이미지의 저장용량이 충분하지 않다는 문제를 제기했습니다. 따라서, 800MB에서 2GB로 기본 크기를 늘렸습니다.
- 설정 페이지에서 버그 신고 UI 페이지를 열 수 있는 단축키(Ctrl+Shift+U)가 추가되었습니다.
- Intel x86 EPT가 있지만 UG는 없는 이전 CPU를 사용하는 경우 두 개 이상의 코어가 구성되어 있으면 에뮬레이터 부팅에 실패하는 문제가 수정되었습니다.
- 에뮬레이터가 Xen 하이퍼바이저에서 자체적으로 실행되는 경우 HyperV가 잘못 감지되는 문제가 수정되었습니다.
- 일부 Linux 구성에서 에뮬레이터가 시작 시 비정상 종료되는 문제가 수정되었습니다.
26.1.2(2017년 7월)
이 출시 버전에는 새로운 기능과 성능 개선사항이 포함되어 있습니다.
확장 컨트롤(More
를 클릭한 후 Settings 및 Proxy 클릭)에서 맞춤 HTTP 프록시 구성을 정의하는 기능이 추가되었습니다. 기본적으로 에뮬레이터는 Android 스튜디오 HTTP 프록시 설정을 사용하지만 이 화면에서 수동 프록시 구성을 정의할 수 있습니다.
에뮬레이터를 원격으로 보고 제어할 수 있도록 게스트 모드 GPU의 VNC 지원이 추가되었습니다. 예를 들어, 다음과 같이 에뮬레이터를 시작하고 VNC가 포트 5901을 수신 대기하도록 할 수 있습니다.
- 실행:
emulator -gpu guest -avd avd_name -no-window -qemu -vnc :1
Tightvnc 뷰어와 같은 VNC 뷰어를 열고 5901 포트에 연결합니다.
Mac의 내장 화면 공유 클라이언트를 사용하려면 에뮬레이터를 시작할 때 VNC 비밀번호가 필요합니다. 비밀번호를 설정하려면 다음 명령어를 사용합니다.
emulator -gpu guest -avd avd_name -no-window -qemu -vnc :1,password -monitor stdio
그런 다음 콘솔에
change vnc password
를 입력하고 비밀번호를 입력합니다.
현재 Android O는 VNC 모드에서 지원되지 않습니다.
- 실행:
확장 컨트롤 도움말 화면(More
를 클릭한 후 Help 및 Emulator Help 클릭)에 File a bug 버튼이 추가되었습니다. File a bug를 클릭하면 스크린샷, AVD 구성 정보 및 버그 신고 로그와 같은 버그 신고 세부정보를 볼 수 있는 대화상자가 열립니다. 그러면 신고를 직접 저장하거나 에뮬레이터 문제를 신고할 수 있습니다.
에뮬레이터 및 가상 센서 패널에 자이로스코프 센서가 추가되었습니다. 자이로스코프 센서가 작동하려면 자이로스코프를 지원하는 시스템 이미지가 필요합니다(현재는 API 수준 24 및 25).
Windows에서 호스트의 여러 가상 네트워크 인터페이스에 에뮬레이터에서 작동하지 않는 여러 DNS 주소가 도입될 때 Qemu DNS 목록에 호스트 선호 DNS가 추가되었습니다.
macOS 10.10 이상에서 서버 플래그를 통해 32비트 X86 이미지의 실험용 macOS Hypervisor.Framework 지원이 추가되어 부팅 시간 및 성능이 향상됩니다.
- 문제가 발생하면
~/.android/advancedFeatures.ini
에HVF = off
행을 추가하세요.
- 문제가 발생하면
이제 OpenGL ES 3.x가 OpenGL ES 3을 지원하는 시스템 이미지 및 호스트 GPU에서 기본적으로 사용 설정됩니다. 현재는 Android O(API 수준 26) 및 Windows/Linux 호스트만 OpenGL ES 3을 지원합니다.
- OpenGL ES 3 관련 문제가 발생하면
~/.android/advancedFeatures.ini
에GLESDynamicVersion = off
행을 추가하세요.
- OpenGL ES 3 관련 문제가 발생하면
이제 에뮬레이터가 최종 디스플레이 이미지 게시를 제외한 모든 렌더링에 화면을 벗어난 OpenGL FBO를 사용하며 이는 플랫폼 간 색상 일관성 문제를 해결하는 데 도움이 됩니다.
급격한 에뮬레이터 속도 저하 문제와 관련된 데이터를 수집한 후 이 문제가 이전 Intel OpenGL 드라이버와 Windows 업데이트 간의 일부 상호작용과 관련이 있을 수 있는 것을 확인했습니다. 따라서, Intel HD 4000, 3000, 2000 및 관련 GPU를 사용하는 사용자의 경우 기본적으로 렌더링이 D3D 렌더러(ANGLE) 또는 Swiftshader(소프트웨어 렌더러)로 설정됩니다.
26.0.0(2017년 3월)
이 출시 버전은 API 수준 26과 호환됩니다. 여기에는 많은 성능 개선사항과 버그 수정이 포함되어 있습니다.
부 버전 26.0.3(2017년 5월)
- 문제 있는 하드웨어 구성으로 인해 발생하는 문제를 빠르게 해결하기 위해 온라인으로 업데이트할 수 있는 기능 플래그가 추가되었습니다. 이를 통해 Google에서 서버 측 플래그를 업데이트하여 사용자 구성에 종속된 수정 및 기능을 출시할 수 있습니다. 특정 하드웨어에 문제가 있으면 문제를 조사할 수 있도록 버그를 신고하세요.
- Android Wear API 수준 25 시스템 이미지의 로터리 입력을 새롭게 지원합니다. Wear 기기에서 로터리 입력 다이얼을 에뮬레이션하려면 확장 창에서 Rotary Input 탭을 클릭하세요.
- 이제 Crash Reporting 대화상자의 크기를 조절할 수 있으며 더 이상 입력 없이 When to send crash reports를 Ask로 재설정하지 않습니다.
- 이제 32비트 에뮬레이터는 2GB 가상 주소 공간에서 에뮬레이터의 공간이 부족하지 않도록 최대 AVD RAM 크기가 512MB 이하여야 합니다.
- 에뮬레이터 이미지에서 절대 경로 지원이 추가되었습니다.
- Google Play 스토어 이미지의 확장 창에 Play 서비스 버전을 표시하는 새 탭과 Play 서비스 업데이트를 확인하는 버튼이 추가되었습니다.
- Emulator Settings 페이지에 OpenGL 렌더기를 선택할 수 있는 드롭다운이 추가되었습니다. Windows 시스템에서 OpenGL 드라이버에 문제가 발생하는 경우 ANGLE(D3D11) 또는 ANGLE(D3D9) 옵션을 사용해 보세요(다시 시작해야 함). 비 Windows 시스템에서 OpenGL 드라이버 문제가 발생하면 Swiftshader 소프트웨어 렌더러를 사용해 보세요(다시 시작해야 함).
- 에뮬레이터가
exit
및minimize
명령어를 모두 수신할 때 종료 시 드물게 발생하는 비정상 종료가 수정되었습니다. - Mac 시스템에서 디스플레이를 변경할 때 크기 조정 문제가 수정되었습니다. (문제 268296)
- 호스트 컴퓨터를 절전 모드에서 다시 시작한 후 또는 에뮬레이터가 오랫동안 실행 중일 때 에뮬레이터가 CPU의 300%를 차지하고 이를 유지하는 문제가 수정되었습니다.
- 에뮬레이터가 종료될 때 발생하는 비정상 종료 문제가 수정되었습니다.
HAXM v6.1.1 업데이트(2017년 3월)
참고: 3월 30일부터 SDK Manager를 통해 Mac 사용자가 HAXM v6.1.1을 사용할 수 있으며 Windows 사용자도 곧 사용할 수 있습니다.
Android Emulator 버전 26.0.0은 다음 업데이트를 포함하는 HAXM v6.1.1을 지원합니다.
- PMU(Performance Monitoring Unit) 에뮬레이션이 사용 설정되었습니다. (문제 223377)
- Mac에서 VirtualBox 및 Docker와의 공존성이 해결되었습니다. (문제 197915)
- 일반적으로 Hyper-V가 사용 설정되어 있으므로 설치 프로그램이 Windows에서 Intel VT-x를 감지하지 못할 때 표시되는 설치 오류 메시지가 수정되었습니다.
- Hyper-V 기반 Windows VM에서 Android Emulator 가속화 지원이 추가되었습니다. 이 업데이트를 적용하려면 호스트 Hyper-V 인스턴스(Windows VM/게스트를 관리하는 인스턴스)에서 중첩 가상화가 사용 설정된 최신 버전의 Hyper-V를 사용해야 합니다. Hyper-V는 게스트 Hyper-V 인스턴스(Windows VM)에서 사용 중지되어야 합니다.
종속 항목
- Android SDK 플랫폼 도구 버전 25.0.4 이상
- Android SDK 도구 버전 26.0.0 이상
새로운 기능 및 버그 수정
- API 수준 26과 호환됩니다.
- GLES 2.0을 완전히 준수합니다. 부합하는 데스크톱 OpenGL 드라이버를 포함하는 호스트 GPU가 있으면 이제 에뮬레이터가 Android CTS dEQP-GLES2
mustpass
목록을 100% 통과합니다. 이 기능은 API 수준 24 x86 이미지(버전 11 이상)용으로 출시되었으며 곧 모든 시스템 이미지에 포함됩니다. - 동영상 재생 성능이 향상되었습니다. 이제 에뮬레이터가 모든 동영상 색상 버퍼를 호스트/게스트 공유 메모리에 저장하며 GPU에서 필요한 최종 YUV-RGB 변환을 실행합니다. 현재 대부분의 시스템에서 1080p30을 사용할 수 있습니다. 이 기능은 API 수준 24 x86 이미지(버전 11 이상)용으로 출시되었으며 곧 모든 시스템 이미지에 포함됩니다.
- 이제 에뮬레이터가 종료 시 자체적으로
adb devices
목록에서 올바르게 등록 취소되고 Linux 시스템에서 열린 TCP 포트를 닫습니다. - 이제 adb 연결이 더 안정적입니다. 실행 중인 에뮬레이터가 더 빠르게 감지되어 더 이상 '오프라인' 또는 '승인되지 않음' 상태로 전환되지 않습니다.
25.3.0(2017년 3월)
이 출시 버전부터 Android Emulator가 SDK 도구와 별도로 출시됩니다. 이 출시 버전에는 다양한 성능 개선사항, 새로운 기능 및 버그 수정이 포함되어 있습니다.
부 버전 25.3.1(2017년 3월)
- 기본적으로 GLAsyncSwap을 사용 중지하여 일부 GPU 구성에서 발생하는 비정상 종료 문제가 수정되었습니다.
이 기능은 게임 및 동영상의 프레임 시간과 초당 프레임 수를 개선하기 위해 25.3.0에 추가되었지만, 이로 인해 일부 알 수 없는 시스템 구성에서 에뮬레이터가 실패합니다.
android_sdk/emulator/lib/advancedFeatures.ini
파일을 열고GLAsyncSwap = on
을 설정하여 수동으로 이 기능을 사용 설정할 수 있습니다.
종속 항목
- Android SDK 플랫폼 도구 버전 24 이상
- Android SDK 도구 버전 25.3.0
새로운 기능 및 버그 수정
- 모든 최신 버그 수정, 향상된 성능 및 새로운 기능을 포함하여 에뮬레이션 엔진이 QEMU 2.7로 업데이트되었습니다.
- IPv6를 새롭게 지원합니다.
- 이제 에뮬레이터에서 SwiftShader를 호스트의 순수 소프트웨어 렌더러로 사용합니다.
- Android Pipe 성능 개선: 에뮬레이터와 Android OS 간의 주요 통신 채널인 Android Pipe가 훨씬 더 빨라졌으며 더 짧은 지연 시간과 향상된 멀티스레드 성능을 제공합니다. 덕분에 다음을 포함한 많은 에뮬레이터 성능이 개선되었습니다.
- ADB push/pull 속도 향상
- 더 나은 3D 가속화 지원
- 에뮬레이터의 전체 응답성 증가
- 그래픽 성능 향상
- 이제 게스트가 버퍼를 요청할 때 에뮬레이터에서 GPU 측 버퍼(glBindBuffers/glBufferData)를 사용하여 일부 앱에서 CPU 오버헤드가 감소합니다.
- 오디오 지원이 향상되었습니다.
- 더 빠른 디스크 I/O: 이제 에뮬레이터에서 별도의 스레드를 사용하여 디스크 I/O를 전달하므로 지연 시간이 더 짧아지고 처리량이 더 많아집니다(약 1.5배의 순차 I/O 속도, 약 5배의 임의 액세스 I/O 속도). 또한, 이를 통해 디스크 플러시 횟수가 감소하여 실제 기기 로드가 훨씬 줄어듭니다.
- 이제 에뮬레이터가 Windows 시스템에서 스파스 파일을 디스크 부팅에 사용하여 첫 번째 부팅과 'wipe-data' 부팅 속도를 모두 높입니다. AVD를 만들거나 재설정할 때 이제 에뮬레이터가 2GB 이상이 아닌 100~200MB의 데이터를 디스크에 씁니다.
- 다양한 GUI 개선사항:
- 이제 에뮬레이터에서 버그 수정 및 성능 개선사항을 포함하는 Qt 5.7.0을 사용합니다.
- UI 초기화 시 더 이상 모든 에뮬레이터 실행 파일을 Qt 플러그인으로 로드하려고 시도하지 않으므로 특히 HDD에서 UI 초기화 시간이 크게 단축됩니다.
- 회전, 창 크기 조절, 확장 컨트롤 창 로드 및 닫기를 포함하여 UI 상호작용이 더 빠르고 원활해졌습니다.