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

에뮬레이터 출시 노트

Android 에뮬레이터는 Android 스튜디오에 포함되어 있습니다.

25.3.0 이전의 에뮬레이터 버전은 Android SDK 도구의 일부로 배포되었습니다.

최신 버전이 있는지 확인하려면 SDK Manager에서 업데이트를 확인하세요.

25.3.0 이전의 Android 에뮬레이터 버전은 Android SDK 도구 출시 노트를 참조하세요.

각 출시 버전에서 수정된 버그에 관한 자세한 내용은 Android 스튜디오 업데이트 출시 블로그를 참조하세요.

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비트 이미지를 헤드리스 빌드로 실행할 수 있습니다. API 27 이상이 설치된 32비트 x86 게스트에서 에뮬레이터는 64비트 엔진(qemu-system-x86_64)을 사용합니다. 이러한 시스템 이미지에서는 사용자 공간이 32비트이지만 커널은 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 개발자 회의에서 발표된 Project Marble 이니셔티브 작업의 일환으로 출시되었습니다. 이전 버전의 다른 Project Marble 개선사항에 관한 자세한 내용은 Android Emulator: Project Marble 개선사항을 참조하세요.

이 업데이트에서는 Project Marble과 관련하여 유휴 상태 시 에뮬레이터의 CPU 사용량을 줄이는 것과 같이 에뮬레이터 리소스 사용량을 줄이는 데 중점을 뒀습니다. 또한 더 광범위한 환경에서 더욱 쉽게 에뮬레이터 작업을 실행할 수 있는 변경사항을 포함하며 일반적인 품질 문제를 해결했습니다.

다음 섹션에서는 이 업데이트에 포함된 Project Marble 개선사항을 설명합니다.

호스트 오디오 동작 개선사항

버전 28.0.3부터 에뮬레이터가 기본적으로 호스트의 오디오 입력을 차단합니다.

호스트 오디오 데이터를 사용하려면 확장 컨트롤 > 마이크로 이동하고 가상 마이크가 호스트 오디오 입력 사용을 사용 설정하여 해당하는 옵션을 사용 설정하면 됩니다. 이 옵션은 에뮬레이터를 다시 시작할 때마다 자동으로 사용 중지됩니다.

또한 명령줄을 사용한다면 -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, libsqlite3libxkbcommon을 에뮬레이터와 함께 패키징합니다.
  • 에뮬레이터는 이제 신뢰할 수 없는 결과를 반환한 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 환경 변수를 내보냅니다. 이 변경사항은 서로 다른 언어로 에뮬레이터를 실행하는 것과 관련된 비정상 종료 및 비호환성 문제를 해결합니다.
  • 이제 확장 컨트롤 > 설정 > 고급 > 성능 통계에서 액세스할 수 있는 성능 통계를 사용하여 에뮬레이터의 CPU 및 RAM 사용량을 추적할 수 있습니다. 에뮬레이터에서 너무 많은 CPU 또는 RAM을 사용하는 것으로 보인다면 이러한 통계를 사용하여 문제를 신속하게 진단하세요.
  • 이제 glReadPixels GL_IMPLEMENTATION_COLOR_READ_TYPE에서 에뮬레이션된 결과 대신 호스트 GPU의 결과를 사용합니다. 이 변경사항은 부적절한 다시 읽기 형식으로 인해 이미지와 저작물이 표시되지 않는 문제를 해결하는 데 도움이 됩니다.
  • OpenGL ES 확장 GL_EXT_texture_format_BGRA8888GL_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초 간격으로 담당 팀에 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> 명령줄 옵션을 사용하여 stdoutstderr를 모두 파일로 리디렉션할 수 있습니다.
  • 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: Continuous Integration) 워크플로로 설정하기가 어려웠습니다.

이 문제를 해결하기 위한 첫 번째 단계로 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를 에뮬레이터와 함께 안전하게 사용할 수 있습니다. '승인되지 않은' 에뮬레이터 문제가 발생하면 다음 문제해결 단계를 따르세요.
    1. 모든 에뮬레이터를 종료합니다.
    2. ~/.android/adbkey~/.android/adbkey.pub 파일을 모두 삭제합니다.
    3. adb kill-server 명령어를 실행합니다.
    4. adb devices 명령어를 실행합니다.
    5. AVD 데이터를 삭제합니다.
    6. 에뮬레이터를 다시 시작합니다.

28.0.23(2019년 1월 29일)

이 업데이트에는 다음과 같은 개선사항 및 수정이 포함되어 있습니다.

호스트 오디오 입력이 기본적으로 사용 중지됨

Reddit의 최근 게시물에는 게스트 Android OS가 항상 호스트 마이크의 오디오를 사용하며 이 때문에 'Ok Google'이 예기치 않게 작동되는 방식에 관해 자세히 설명되어 있습니다. 불편을 끼쳐 드려 죄송합니다. Android 팀과 협력하여 시스템 이미지에서도 핫워드 감지를 사용 중지하겠습니다.

이 문제를 해결하기 위해 다음과 같이 변경되었습니다.

  • 이제 실제 호스트 오디오 데이터가 기본적으로 억제됩니다. 게스트가 마이크를 사용할 때 호스트 오디오 대신 무음이 전달됩니다.
  • 호스트 오디오 데이터를 사용하려면 이제 확장 컨트롤 > 마이크로 이동하고 가상 마이크가 호스트 오디오 입력 사용을 사용 설정하여 해당하는 옵션을 사용 설정하면 됩니다. 이 옵션은 에뮬레이터를 다시 시작할 때마다 자동으로 사용 중지됩니다.

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 플래그를 사용합니다.
  • 확장 컨트롤 > 스냅샷 > 설정으로 이동하여 현재 상태를 Quickboot에 자동 저장할까요?아니요로 전환합니다.
  • 이 옵션을 선택한 후 에뮬레이터를 다시 시작해야 합니다. 에뮬레이터가 자동으로 저장하도록 설정된 경우 다음 명령어를 실행하여 체크포인트를 설정할 수 있습니다.
        adb emu avd snapshot remap 0
        
    이 명령어를 실행하면 에뮬레이터 Quickboot 스냅샷이 설정한 체크포인트에 계속 남아 있습니다. 체크포인트에서 에뮬레이터를 로드하려면 동일한 ㅇ명령어를 다시 실행하세요.

스냅샷 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 변경사항이 포함되어 있습니다.

다음은 Android Emulator에 영향을 주는 몇 가지 중요한 변경사항입니다.

  • x86: gdbstub가 이제 SSE 레지스터에 액세스할 수 있는 권한을 제공합니다.
  • 디스크 이미지: 이미지 잠금이 추가되고 기본적으로 사용 설정됩니다. 별도로 옵션이 지정되지 않는 한, 호스트가 OFD 또는 posix 잠금을 지원하면 여러 QEMU 프로세스가 동일한 이미지에 쓸 수 없습니다.
  • qemu-img: qemu-img resize에서 새로운 이미지 부분의 사전 할당을 지원합니다.
  • 이제 qemuqemu-img에서 QCOW2 축소가 지원됩니다.

접근성

  • 스크린 리더 문제가 해결되고 화면 녹화 및 스냅샷 UI에서 이러한 도구와 관련된 지원이 강화되었습니다.
  • 색맹 사용자가 Quick Boot 알림 아이콘 접근성이 향상되었습니다.

그래픽

  • OpenGL ES 버텍스 배열 포인터에 발생할 수 있는 범위를 벗어난 메모리 액세스 문제가 해결되었습니다.
  • 일부 오래된 GPU에서는 OpenGL 2.1 이상(필수)을 지원하지 않거나 다른 안정성 문제가 있었습니다. 이러한 문제로 인해 에뮬레이터가 시작 시 비정상 종료되거나 정지되거나 기본 GPU 설정에서 사용할 수 없게 될 수 있습니다. 이제 에뮬레이터는 이러한 GPU가 사용 중인 것으로 감지하면 자동으로 Swiftshader 렌더기로 전환됩니다.
  • FBO != 0eglSwapBuffers 시점에 바인드되면 에뮬레이터가 올바른 프레임 버퍼를 게시하지 못하는 문제가 수정되었습니다.
  • 가상 Android 디스플레이가 왼쪽 상단에만 표시되는 문제가 해결되었습니다. 이 문제는 잘못 구성된 Qt 환경 변수 때문이라고 생각합니다. 이제 에뮬레이터가 Qt 크기 조정과 관련된 모든 환경 변수를 재정의합니다.
  • 스냅샷에서 GLES1 앱을 로드할 때 일부 상황에서 에뮬레이터가 비정상 종료되는 문제가 해결되었습니다.
  • double free 또는 손상된 데이터를 초래할 수 있는 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>/*
  • 여유 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 디렉터리에서 다음 명령어를 실행하는 것이 좋습니다.
        chattr +C
        
    이 명령어를 실행하면 COW(기록 중 복사) 기능이 사용 중지된 폴더에 새 스냅샷을 만듭니다.

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 에뮬레이터 지원을 중단할 계획입니다. 32비트 버전의 Android 에뮬레이터 지원을 중단하고 종료하기 전에 전환 계획을 배포하겠습니다. 그러나 이 향후 변경과 관련된 의견이나 문의사항을 적극적으로 받고 있습니다.

현재 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 에뮬레이터를 활성화할 때 WHPX(Windows Hypervisor Platform) 초기화에 실패한 이유를 진단하는 데 문제가 있었습니다. 이러한 문제를 진단하는 데 도움이 될 수 있도록 보다 유용한 오류 메시지를 추가했습니다. 명령줄에서 -verbose 플래그를 사용하여 에뮬레이터를 실행하면 이러한 오류 메시지가 사용 설정됩니다.

일반 수정

  • 카메라 앱에서 스냅샷을 로드할 때 발생하는 OpenGL 오류가 수정되었습니다.

27.3.8(2018년 7월)

이 업데이트에는 몇 가지 새로운 기능, 기존 기능의 개선사항 및 버그 수정이 포함되어 있습니다.

스냅샷

이제 지정된 기기 구성의 여러 AVD 스냅샷을 저장하고 저장된 이 중에서 에뮬레이터 시작 시 로드할 스냅샷을 선택할 수 있습니다.

Android 스튜디오 3.2 Canary 13부터, AVD를 시작할 때 로드할 AVD를 지정할 수 있는 가상 기기 구성 대화상자의 고급 설정에 있는 컨트롤이 각 기기 구성에 포함됩니다.

이러한 스냅샷 기능 확장을 수용하기 위해 확장 컨트롤 대화상자에 스냅샷 카테고리를 추가했습니다. 이 새로운 창에는 이전에 설정 창에 있던 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 파일에 저장할 수 있습니다.

화면 녹화 컨트롤은 확장 컨트롤 창의 화면 녹화 탭에 있습니다.

도움말: Control + Shift + R(Mac에서는 Command + Shift + R)을 눌러 화면 녹화 컨트롤을 열 수도 있습니다.

화면 녹화를 시작하려면 화면 녹화 탭에서 녹화 시작 버튼을 클릭합니다. 녹화를 중지하려면 녹화 중지를 클릭합니다.

녹화된 동영상을 재생하거나 저장하는 컨트롤은 화면 녹화 탭의 하단에 있습니다. 동영상을 저장하려면 탭 하단의 메뉴에서 WebM 또는 GIF를 선택하고 저장을 클릭합니다.

명령줄에서 다음 명령어를 사용하여 에뮬레이터에서 화면 녹화 파일을 기록하고 저장할 수도 있습니다.

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 스토어

이제 Google Play 스토어가 Pixel 및 Pixel 2 기기 이미지에서 사용 설정됩니다. Android 스튜디오 3.2 이상의 AVD Manager에 표시되며 Play Store 열에 Google Play 로고가 있습니다. Google Play 스토어가 사용 설정된 AVD는 확장 컨트롤 대화상자에 Google Play 탭이 있습니다. 이 탭에는 기기에서 Google Play 서비스를 업데이트할 수 있는 편리한 버튼이 제공됩니다.

스냅샷

이제 에뮬레이터를 다시 시작하지 않고 Quick Boot 스냅샷을 로드할 수 있습니다. 스냅샷을 로드하려면 확장 컨트롤 창을 열고 설정 페이지로 이동하여 지금 로드 버튼을 클릭하세요.

리소스를 보다 효율적으로 사용하고 각 작업에 소요되는 시간을 최소화하기 위해 스냅샷 로드 및 저장 기능이 많이 개선되었습니다. 여전히 저장 시간이 비정상적으로 오래 걸리는 경우 CPU, RAM 및 실행 중인 항바이러스제/방화벽/보안 소프트웨어 설정의 세부정보를 제공하여 문제를 신고하세요.

Skia로 렌더링

API 27 이상의 이미지를 사용할 때 에뮬레이터가 Skia로 Android UI를 렌더링하여 더욱 원활하고 효율적으로 렌더링할 수 있습니다.

지금은 Skia를 사용하려면 명시적으로 사용 설정해야 합니다.

Skia 렌더링을 사용 설정하려면 adb 셸에서 다음 명령어를 사용하세요.

      su
      setprop debug.hwui.renderer skiagl
      stop
      start
    

카메라

Windows에서 Android 에뮬레이터가 Media Foundation을 웹캠 백엔드로 사용하여 웹캠 캡처의 성능과 프레임 속도가 최대 720p 30FPS까지 크게 향상되었습니다.

이제 Mac에서 webcam0 및 webcam1을 함께 사용할 수 있습니다.

기타

-phone-number-prefix 명령줄 옵션이 -phone-number [number]로 변경되어 전체 전화번호를 설정할 수 있습니다.

이제 영숫자 SMS 주소를 사용할 수 있습니다.

수정

  • 이제 Linux 버전의 Android 에뮬레이터가 최신 Clang C ++ 도구 모음을 사용하여 빌드됩니다. 이 변경사항을 통해 libGL 및 libstdc++ 오류로 인한 에뮬레이터 시작 실패 문제가 해결되었습니다.
  • 여러 가지 비정상 종료 및 중단 원인이 해결되었습니다.
  • 여유 디스크 공간이 충분하지 않아서 발생하는 비정상 종료 및 중단을 피하기 위해 이제 에뮬레이터가 시작 시 여유 디스크 공간이 충분한지 확인하고 최소 2GB가 사용 가능하지 않으면 에뮬레이터가 시작되지 않습니다.
  • 일부 Unity 게임이 렌더링되지 못하도록 하는 해결되었습니다.
  • 에뮬레이터가 네트워크에 연결할 수 없도록 하는 DNS 문제가 해결되었습니다.
  • 가상 기기 구성 대화상자를 통해 AVD에 할당된 내부 저장소 변경사항이 작동하지 않는 문제가 해결되었습니다.
  • 많은 adb 프로세스가 생성되고 제대로 종료되지 않는 문제가 해결되었습니다.
  • 확장 컨트롤 창이 열리지 않으면 회전 버튼과 UI의 다른 부분이 응답하지 않는 문제가 해결되었습니다.
  • 확장 컨트롤 대화상자를 한 번 이상 열지 않으면 호스트에서 복사하여 붙여넣기가 작동하지 않는 문제가 해결되었습니다.
  • 프레임이 없는 에뮬레이터의 크기 조정 직사각형이 에뮬레이터의 시각 테마를 잘 따르도록 업데이트되었습니다.
  • 이제 비행기 모드가 켜져 있을 때 전화 및 SMS가 올바르게 중지됩니다.
  • 스냅샷을 로드한 후 SMS 및 모바일 데이터 기능이 사용 중지되는 문제가 해결되었습니다.
  • “Unable to open... \pstore.bin. Permission denied.”와 같은 거짓 경고 메시지가 더 이상 수신되지 않습니다.
  • 일부 Mac 화면에서 AVD를 재배치하지 못하는 문제가 해결되었습니다.
  • AVD를 Pixel 2 XL 스킨으로 실행할 때 최신 MacBook Pro 컴퓨터의 깜박임 및 빈 화면 문제가 해결되었습니다.
  • 프레임이 없는 에뮬레이터가 활성화된 상태에서 확대 모드로 전환할 때 빈 화면이 표시되는 문제가 해결되었습니다.
  • 확대할 때 기기 스킨과 에뮬레이터 콘텐츠가 동기화되지 않고 스크롤되는 문제가 해결되었습니다.

중단 또는 기타 불안정 문제가 계속 발생하면 문제를 신고하세요.

27.1.12(2018년 3월)

이 업데이트에는 다음과 같은 문제의 수정사항이 포함되어 있습니다.

  • 에뮬레이터를 시작한 후 블루투스 오디오 품질이 저하되었습니다. (문제 37095756)
  • 하나의 에뮬레이터로 전송된 위치가 모든 에뮬레이터로 전송되었습니다. (문제 73450633)
  • 콘솔을 사용하여 설정된 GPS 위치가 그래픽 사용자 인터페이스에서 확장 컨트롤 > 위치를 사용하여 설정된 값으로 재정의되었습니다. (문제 73471760)

중단 또는 기타 불안정 문제가 계속 발생하면 문제를 신고하세요.

이 업데이트, 현재 시스템 이미지 및 Android 스튜디오의 미리보기 버전에서 Android Emulator를 사용하여 ARCore로 빌드된 증강 현실 애플리케이션을 실행할 수 있습니다. 자세한 요구사항 및 지침은 Android 에뮬레이터에서 AR 앱 실행을 참조하세요.

27.1.10(2018년 2월)

  • 카메라 캡처 해상도

    이제 연결된 웹캠에서 720p 프레임을 캡처할 수 있습니다.

    Android 8.1(API 수준 27) 이상의 시스템 이미지로 작업하려면 연결된 웹캡에 720p 프레임을 캡처할 수 있는 기능이 있어야 합니다.

  • 수정

    • 웹캡 캡처가 경우에 따라 왜곡된 이미지 또는 전체 녹색 이미지를 출력하는 문제가 해결되었습니다.
    • 실제로 중단되지 않은 경우에도 다음 메시지가 표시될 수 있는 문제가 해결되었습니다. '에뮬레이터: 오류: 중단된 스레드 'Qt 이벤트 루프'가 감지되었습니다. 15000밀리초 동안 응답이 없습니다.'

중단 또는 기타 불안정 문제가 계속 발생하면 문제를 신고하세요.

27.1.7(2018년 2월)

  • 프레임이 없는 에뮬레이터 창:

    기본적으로 기기 스킨 파일이 있는 에뮬레이터는 주변 창 프레임 없이 표시됩니다. 주변 창 프레임을 표시하려면 확장 컨트롤 창의 설정 창에서 기기 주변 창 프레임 표시를 사용 설정하세요.

  • AVD 스냅샷 작업을 더욱 효율적으로 만드는 Quick Boot 개선사항:

    • 언제든지 확장 컨트롤 대화상자의 설정 창에서 지금 저장 버튼을 사용하여 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 렌더기에 관한 자세한 내용은 확장 컨트롤설정 > 고급 섹션을 참조하세요.

  • 수정

    • 클립보드 공유 사용 설정 옵션을 해제한 후 설정하지 않으면 클립보드 공유가 작동하지 않는 문제가 해결되었습니다.
    • 저해상도 AVD에서 Swiftshader 렌더링 백엔드를 사용하는 경우 중단되는 문제가 해결되었습니다.

27.0.5(2018년 1월)

  • Windows에서 렌더링용 ANGLE이 이제 기본적으로 사용 중지됩니다.

    ANGLE이 더 적합하다면 명령줄 플래그 -gpu angle_indirect를 사용하여 다시 사용 설정할 수 있습니다. 또는 확장 컨트롤 창을 열고 설정 > 고급으로 이동한 후 OpenGL ES 렌더기 설정으로 ANGLE D3D11을 선택하세요.

  • Shift+B가 대문자 B 문자로 입력되지 않는 문제가 해결되었습니다.

27.0.2(2017년 12월)

  • 새로운 Quick Boot 기능은 AVD 인스턴스의 스냅샷을 기반으로 더 빠른 에뮬레이터 시작 시간을 제공합니다.

    모든 AVD의 Quick Boot가 기본적으로 사용 설정됩니다. 처음으로 AVD를 시작할 때는 콜드 부팅(기기 전원 켜기와 같음)을 실행해야 하지만 이후의 시작은 모두 빠르게 진행되고 시스템이 에뮬레이터를 닫은 시점의 상태로 복원됩니다(기기 절전 모드 해제와 유사함).

    에뮬레이터가 스냅샷을 저장하는 시기를 제어하려면 에뮬레이터의 확장 컨트롤 창을 열고 설정을 클릭하세요. 여기서 종료 시 Quick Boot 상태 저장에 관한 다음 설정 중 하나를 선택할 수 있습니다.

    • : 에뮬레이터를 닫을 때 항상 Quick Boot 스냅샷을 저장합니다. 이는 기본값입니다.
    • 아니요: Quick Boot 스냅샷을 저장하지 않습니다. 항상 콜드 부팅을 실행합니다.
    • 확인: 에뮬레이터를 닫을 때 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 옵션이 이제 지원 중단되었습니다. 이제 확장 컨트롤 창에서 설정 > 고급의 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월)

이 출시 버전에는 새로운 기능과 성능 개선사항이 포함되어 있습니다.

  • 확장 컨트롤(더보기 를 클릭한 후 설정프록시 클릭)에서 맞춤 HTTP 프록시 구성을 정의하는 기능이 추가되었습니다. 기본적으로 에뮬레이터는 Android 스튜디오 HTTP 프록시 설정을 사용하지만 이 화면에서 수동 프록시 구성을 정의할 수 있습니다.

  • 에뮬레이터를 원격으로 보고 제어할 수 있도록 게스트 모드 GPU의 VNC 지원이 추가되었습니다. 예를 들어 다음과 같이 에뮬레이터를 시작하고 VNC가 포트 5901을 수신 대기하도록 할 수 있습니다.

    1. 실행: emulator -gpu guest -avd avd_name -no-window -qemu -vnc :1
    2. 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 모드에서 지원되지 않습니다.

  • 확장 컨트롤 도움말 화면(더보기 를 클릭한 후 도움말에뮬레이터 도움말 클릭)에 버그 신고 버튼이 추가되었습니다. 버그 신고를 클릭하면 스크린샷, AVD 구성 정보 및 버그 보고서 로그와 같은 버그 보고서 세부정보를 볼 수 있는 대화상자가 열립니다. 그러면 보고서를 직접 저장하거나 에뮬레이터 문제를 보고할 수 있습니다.

  • 에뮬레이터 및 가상 센서 패널에 자이로스코프 센서가 추가되었습니다. 자이로스코프 센서가 작동하려면 자이로스코프를 지원하는 시스템 이미지가 필요합니다(현재는 API 수준 24 및 25).

  • Windows에서 호스트의 여러 가상 네트워크 인터페이스에 에뮬레이터에서 작동하지 않는 여러 DNS 주소가 도입될 때 Qemu DNS 목록에 호스트 선호 DNS가 추가되었습니다.

  • macOS 10.10 이상에서 서버 플래그를 통해 32비트 X86 이미지의 실험용 macOS Hypervisor.Framework 지원이 추가되어 부팅 시간 및 성능이 향상됩니다.

    • 문제가 발생하면 ~/.android/advancedFeatures.iniHVF = off 행을 추가하세요.
  • 이제 OpenGL ES 3.x가 OpenGL ES 3을 지원하는 시스템 이미지 및 호스트 GPU에서 기본적으로 사용 설정됩니다. 현재는 Android O(API 수준 26) 및 Windows/Linux 호스트만 OpenGL ES 3을 지원합니다.

    • OpenGL ES 3 관련 문제가 발생하면 ~/.android/advancedFeatures.iniGLESDynamicVersion = off를 추가하세요.
  • 이제 에뮬레이터가 최종 디스플레이 이미지 게시를 제외한 모든 렌더링에 화면을 벗어난 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 기기에서 로터리 입력 다이얼을 에뮬레이션하려면 확장 창에서 로터리 입력 탭을 클릭하세요.
  • 이제 오류 보고 대화상자의 크기를 조절할 수 있으며 더 이상 입력 없이 오류 보고서 전송확인으로 재설정하지 않습니다.
  • 이제 32비트 에뮬레이터에서는 2GB 가상 주소 공간에서 에뮬레이터의 공간이 부족하지 않도록 최대 AVD RAM 크기가 512MB 이하여야 합니다.
  • 에뮬레이터 이미지에서 절대 경로 지원이 추가되었습니다.
  • Google Play 스토어 이미지의 확장 창에 Play 서비스 버전을 표시하는 새 탭과 Play 서비스 업데이트를 확인하는 버튼이 추가되었습니다.
  • 에뮬레이터 설정 페이지에 OpenGL 렌더기를 선택할 수 있는 드롭다운이 추가되었습니다. Windows 시스템에서 OpenGL 드라이버에 문제가 발생하는 경우 ANGLE(D3D11) 또는 ANGLE(D3D9) 옵션을 사용해 보세요(다시 시작해야 함). 비 Windows 시스템에서 OpenGL 드라이버 문제가 발생하면 Swiftshader 소프트웨어 렌더기를 사용해 보세요(다시 시작해야 함).
  • 에뮬레이터가 exitminimize 명령어를 모두 수신할 때 종료 시 드물게 발생하는 비정상 종료가 해결되었습니다.
  • 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 에뮬레이터가 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 상호작용이 더 빠르고 원활해졌습니다.