Android Emulator의 하드웨어 가속 구성

에뮬레이터는 순수하게 소프트웨어로 실행하는 것보다 CPU, GPU, 모뎀과 같은 머신 하드웨어를 사용할 수 있는 경우에 최적의 성능을 보여줍니다. 머신 하드웨어를 사용하여 성능을 개선하는 이 기능을 하드웨어 가속이라고 합니다.

에뮬레이터는 하드웨어 가속을 사용하여 다음과 같은 두 가지 주요 방식으로 환경을 개선할 수 있습니다.

  • 그래픽 가속으로 화면 렌더링 개선
  • 가상 머신(VM) 가속으로 실행 속도 개선

하드웨어 가속은 기본적으로 대부분의 머신에 사용 설정되어 있습니다. 이 페이지에서는 하드웨어 가속이 머신에 사용 설정되어 있지 않은 경우 그래픽 및 가상 머신(VM) 가속을 구성하여 에뮬레이터의 성능을 높일 수 있는 방법을 설명합니다.

그래픽 가속 구성

그래픽 가속은 컴퓨터의 하드웨어(일반적으로 GPU)를 사용하여 화면 렌더링 속도를 높입니다. Android 기기는 내장된 시스템용 OpenGL(OpenGL ES 또는 GLES)을 사용하여 2D 및 3D 그래픽을 화면에 렌더링합니다.

AVD Manager에서 Android Virtual Device(AVD)를 만들 때 에뮬레이터가 AVD의 GPU를 에뮬레이션하기 위해 하드웨어를 사용할지 소프트웨어를 사용할지 지정할 수 있습니다. 하드웨어 가속이 권장되며 일반적으로 더 빠릅니다. 그러나 컴퓨터에서 에뮬레이터와 호환되지 않는 그래픽 드라이버를 사용하는 경우 소프트웨어 가속을 사용해야 할 수도 있습니다.

기본적으로 에뮬레이터는 컴퓨터 설정에 기반해 하드웨어 또는 소프트웨어 그래픽 가속을 사용할지 판단합니다. GPU 하드웨어와 드라이버가 호환된다면 에뮬레이터는 GPU를 사용합니다. 호환되지 않으면 에뮬레이터는 소프트웨어 가속(컴퓨터의 CPU 사용)을 사용하여 GPU 처리를 시뮬레이션합니다.

명령줄에서 에뮬레이터를 시작하면 가상 기기 인스턴스에 맞게 AVD에서 그래픽 가속 설정을 재정의할 수 있습니다.

요구사항

그래픽 가속을 사용하려면 개발 환경에 다음이 포함되어야 합니다.

  • SDK 도구: 최신 버전 권장(최소 버전 17)
  • SDK 플랫폼: 최신 버전 권장(최소 Android 4.0.3, 버전 3)

AVD Manager에서 그래픽 가속 구성

AVD의 그래픽 가속을 구성하려면 다음 단계를 따르세요.

  1. AVD Manager를 엽니다.
  2. 새 AVD를 생성하거나 기존 AVD를 수정합니다.
  3. Verify Configuration 창에서 Emulated Performance 섹션을 찾습니다.
  4. Graphics: 옵션값을 선택합니다.
  5. Finish를 클릭합니다.

명령줄에서 그래픽 가속 구성

명령줄에서 AVD를 실행할 때 그래픽 가속 유형을 지정하려면 다음 예와 같이 -gpu 옵션을 포함합니다.

emulator -avd avd_name -gpu mode [{-option [value]} ... ]

mode 값은 다음 옵션 중 하나로 설정할 수 있습니다.

  • auto: 에뮬레이터가 컴퓨터 설정에 기반해 하드웨어 또는 소프트웨어 그래픽 가속 중에서 선택할 수 있습니다.
  • host: 하드웨어 가속을 위해 컴퓨터의 GPU를 사용합니다. 이 옵션을 선택하면 일반적으로 에뮬레이터의 그래픽 품질과 성능이 가장 높아집니다. 그러나 그래픽 드라이버에서 OpenGL을 렌더링하는 데 문제가 있다면 swiftshader_indirect 또는 angle_indirect 옵션을 사용해야 할 수도 있습니다.
  • swiftshader_indirect: 소프트웨어 가속을 사용하여 그래픽을 렌더링하려면 Quick Boot와 호환되는 SwiftShader 변형을 사용합니다. 이 옵션은 컴퓨터에서 하드웨어 가속을 사용할 수 없는 경우 host 모드의 좋은 대안입니다.
  • angle_indirect: 소프트웨어 가속을 사용하여 그래픽을 렌더링하려면 Quick Boot와 호환되는 ANGLE Direct3D 변형을 사용합니다(Windows 전용). 이 옵션은 컴퓨터에서 하드웨어 가속을 사용할 수 없는 경우 host 모드의 좋은 대안입니다. 대부분의 경우 ANGLE 성능은 host 모드를 사용하는 것과 유사합니다. ANGLE이 OpenGL 대신 Microsoft DirectX를 사용하기 때문입니다.

    Windows에서는 일반적으로 Microsoft DirectX 드라이버가 OpenGL 드라이버보다 문제가 적습니다. 이 옵션은 Direct3D 11을 사용하며, Windows 10, Windows 8.1 또는 Windows 7 플랫폼 업데이트가 포함된 Windows 7 SP1이 필요합니다.

  • guest: 게스트 측 소프트웨어 렌더링을 사용합니다. 이 옵션을 선택하면 에뮬레이터의 그래픽 품질과 성능이 가장 낮아집니다.

다음 mode 옵션은 지원이 중단되었습니다.

  • swiftshader: 버전 27.0.2에서 지원이 중단되었습니다. 대신 swiftshader_indirect를 사용하세요.
  • angle: 버전 27.0.2에서 지원이 중단되었습니다. 대신 angle_indirect를 사용하세요(Windows 전용).
  • mesa: 버전 25.3에서 지원이 중단되었습니다. 대신 swiftshader_indirect를 사용하세요.

Android UI에 Skia 렌더링 사용 설정

API 수준 27 이상의 이미지를 사용할 때 에뮬레이터는 Skia로 Android UI를 렌더링할 수 있습니다. Skia는 에뮬레이터가 그래픽을 더 부드럽고 효율적으로 렌더링하도록 도와줍니다.

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

su
setprop debug.hwui.renderer skiagl
stop
start

VM 가속 구성

VM 가속은 컴퓨터 프로세서를 사용하여 에뮬레이터의 실행 속도를 크게 개선합니다. 하이퍼바이저라는 도구는 컴퓨터 프로세서가 제공하는 가상화 확장 프로그램을 사용하여 이러한 상호작용을 관리합니다. 이 섹션에서는 VM 가속을 사용하기 위한 요구사항과 각 운영체제에서 VM 가속을 설정하는 방법에 관해 설명합니다.

일반 요구사항

에뮬레이터에서 VM 가속을 사용하려면 컴퓨터가 이 섹션의 일반 요구사항을 충족해야 합니다. 컴퓨터는 운영체제와 관련된 다른 요구사항도 충족해야 합니다.

개발 환경 요구사항

VM 가속을 사용하려면 개발 환경이 다음 요구사항을 충족해야 합니다.

  • SDK 도구: 최소 버전 17, 권장 버전 26.1.1 이상
  • AVD: 필수 Android 버전은 다음 표에 설명되어 있습니다.

    CPU 아키텍처 시스템 이미지 요구사항
    X86_64 x86 또는 x86_64 시스템 이미지: Android 2.3.3(API 수준 10) 이상
    ARM64 arm64-v8a 시스템 이미지: Android 5.0(API 수준 21) 이상

가상화 확장 프로그램 요구사항

개발 환경 요구사항 외에도 컴퓨터 프로세서는 가상화 확장 프로그램을 지원해야 합니다. 지원되는 프로세서는 다음과 같습니다.

  • Intel 가상화 기술(VT-x, vmx)이 적용된 Intel 프로세서(예: Intel Core iX 및 Intel Core Ultra 프로세서)
  • AMD-V(SVM)가 포함된 AMD 프로세서(예: AMD Ryzen 프로세서)
  • Apple Silicon

Intel 및 AMD 프로세서의 추가 요구사항

Intel 및 AMD 프로세서에는 두 번째 수준의 주소 변환(Intel EPT 또는 AMD RVI)이 필요합니다. 대부분의 최신 Intel 및 AMD 프로세서는 두 번째 수준의 주소 변환을 지원합니다. 가상화 확장 프로그램을 제공하는 1세대 Intel 또는 AMD 프로세서에만 두 번째 수준의 페이지 변환이 없을 수 있습니다.

프로세서가 필수 확장 프로그램을 지원하는지 확실하지 않다면 제조업체 사이트에서 프로세서 사양을 확인합니다. 프로세서가 이러한 확장 프로그램을 지원하지 않으면 VM 가속을 사용할 수 없습니다.

제한사항

VM 가속에는 다음과 같은 제한사항이 있습니다.

  • 다른 VM 내에서 VM 가속 에뮬레이터를 실행할 수 없습니다(예: VirtualBox나 VMWare, Docker에서 호스팅하는 VM). 호스트 컴퓨터에서 직접 VM 가속 에뮬레이터를 실행해야 합니다.
  • 운영체제 및 하이퍼바이저에 따라 VM 가속 에뮬레이터를 실행하는 동시에 다른 가상화 기술을 사용하는 소프트웨어를 실행할 수 없습니다. 이러한 소프트웨어의 예로는 가상 머신 솔루션, 특정 바이러스 백신 프로그램, 속임수 방지 솔루션 등이 포함됩니다(이에 국한되지 않음). 대체로 Windows에서 Hyper-V가 꺼진 경우 이러한 상황이 관찰됩니다. 이러한 소프트웨어는 대부분 문제없이 Android Emulator와 공존할 수 있습니다. 그러나 충돌이 발생하면 이러한 소프트웨어로 VM 가속 에뮬레이터를 동시에 실행하지 않는 것이 좋습니다.

하이퍼바이저 정보

VM 가속에는 하이퍼바이저가 필요합니다. 하이퍼바이저는 컴퓨터 프로세서에서 제공하는 가상화 확장 프로그램을 사용합니다.

하이퍼바이저와 VM 가속이 없으면 에뮬레이터는 호스트 컴퓨터의 아키텍처에 맞게 VM 블록에서 기계어 코드를 블록 단위로 번역해야 합니다. 이 과정은 꽤 느릴 수 있습니다. 하이퍼바이저를 사용하면 VM과 호스트 컴퓨터의 아키텍처가 일치하므로 에뮬레이터가 하이퍼바이저를 사용하여 호스트 프로세서에서 직접 코드를 실행할 수 있습니다. 이러한 개선을 통해 에뮬레이터의 속도와 성능이 모두 크게 향상됩니다.

가장 적합한 하이퍼바이저는 컴퓨터 운영체제 및 구성에 따라 다릅니다. 자세한 내용은 다음 섹션 중 하나를 참고하세요.

하이퍼바이저 설치 여부 확인

에뮬레이터의 -accel-check 명령줄 옵션을 사용하여 하이퍼바이저가 현재 컴퓨터에 설치되어 있는지 확인할 수 있습니다.

다음 예는 에뮬레이터의 accel-check 옵션을 사용하는 방법을 보여줍니다. 각 예에서 Sdk는 Android SDK의 위치입니다.

Windows:

c:\Users\janedoe\AppData\Local\Android> Sdk\emulator\emulator -accel-check
accel:
0
WHPX(10.0.22631) is installed and usable.
accel
Windows에는 여러 하이퍼바이저 옵션이 있습니다. 여기 나온 예와 다를 수 있습니다. 예를 들어 메시지에 AEHD, GVM (AEHD의 이전 이름) 키워드 중 하나가 표시될 수 있습니다.

macOS:

janedoe-macbookpro:Android janedoe$ ./Sdk/emulator/emulator -accel-check
accel:
0
Hypervisor.Framework OS X Version 13.2
accel

Linux

janedoe:~/Android$ ./Sdk/emulator/emulator -accel-check
accel:
0
KVM (version 12) is installed and usable.

Windows에서 VM 가속 구성

Windows의 VM 가속은 다음 두 가지 하이퍼바이저 중 하나를 사용할 수 있습니다.

  • Windows Hypervisor Platform(WHPX)
  • Android Emulator Hypervisor Driver(AEHD)

Windows Hypervisor Platform은 Windows에서 제공하는 Hyper-V Hypervisor를 사용하며 최적의 호환성을 제공하고 안정성을 개선합니다. 가능하면 WHPX를 사용해야 합니다.

시스템에서 WHPX를 지원하지 않거나 WHPX 사용에 관해 다른 우려사항이 있는 경우 Android Emulator Hypervisor Driver를 사용할 수 있습니다.

Windows Hypervisor Platform을 사용하여 VM 가속 구성

WHPX를 사용 설정하려면 컴퓨터가 다음 요구사항을 충족해야 합니다.

  • Intel 프로세서: 가상화 기술(VT-x), 확장 페이지 테이블(EPT), 무제한 게스트(UG) 기능을 지원해야 합니다. 컴퓨터의 BIOS 설정에서 VT-x가 사용 설정되어 있어야 합니다.
  • AMD 프로세서: AMD Ryzen 프로세서를 권장합니다. 컴퓨터의 BIOS 설정에서 가상화 또는 SVM이 사용 설정되어 있어야 합니다.
  • Android 스튜디오 3.2 베타 1 이상
  • Android Emulator 버전 27.3.8 이상
  • Windows 10 이상

Windows에 WHPX를 설치하려면 다음 단계를 따르세요.

  1. Windows 데스크톱에서 Windows 아이콘을 클릭하여 시작 메뉴를 엽니다.
  2. 검색창을 사용하여 Windows 기능 켜기/끄기를 입력합니다.

    Windows 기능 켜기/끄기 제어판이 표시되고 선택됩니다.

  3. Enter 키를 누르거나 Turns Windows Features on or off(Windows 기능 켜기/끄기)를 클릭하여 제어판을 실행합니다.

  4. Windows Hypervisor Platform 옆의 체크박스를 선택합니다.

  5. OK(확인)을 클릭합니다.

  6. 설치가 완료되면 컴퓨터를 다시 시작합니다.

Windows에서 Android Emulator Hypervisor Driver(AEHD)를 사용하여 VM 가속 구성

Android Emulator Hypervisor Driver를 설치하고 사용하려면 컴퓨터가 다음 요구사항을 충족해야 합니다.

  • 가상화 확장 프로그램이 포함된 Intel 또는 AMD 프로세서
  • 64비트 Windows 11 또는 Windows 10 (32비트 Windows는 지원되지 않음)

    Windows 8.1, Windows 8, Windows 7 사용자는 AEHD 1.7 이하를 계속 사용할 수 있습니다. 그러나 이러한 시나리오에는 지원이 제공되지 않습니다.

  • Windows Hyper-V Hypervisor도 사용하는 기능은 Windows 기능 대화상자에서 사용 중지해야 합니다.

    특정 Windows 구성요소는 Windows 기능 대화상자에서 Windows Hypervisor Platform이 선택되지 않은 경우에도 Windows Hyper-V Hypervisor를 활성화하고 사용합니다. 여기에는 Hyper-V, Core Isolation 등의 보안 기능이 포함됩니다. (Hyper-V 기능은 Hyper-V Hypervisor와 다릅니다.) 이러한 기능이 필요한 경우 WHPX를 대신 사용하세요.

AMD 프로세서의 경우 Android 스튜디오 4.0 Canary 5 이상에서 SDK Manager를 통해 Android Emulator Hypervisor Driver를 설치할 수 있습니다.

Intel 프로세서의 경우 Android 스튜디오 Flamingo 이상에서 SDK Manager를 통해 Android Emulator Hypervisor Driver를 설치할 수 있습니다.

SDK Manager에서 설치하려면 다음 단계를 따르세요.

  1. Tools > SDK Manager를 선택합니다.
  2. SDK Tools 탭을 클릭하고 Android Emulator Hypervisor Driver를 선택합니다.
  3. OK를 클릭하여 Android Emulator Hypervisor Driver를 다운로드하고 설치합니다.
  4. 설치 후 다음 명령줄의 명령어를 사용하여 드라이버가 올바르게 작동하는지 확인합니다.

    AEHD 2.1 이상

    sc query aehd
    

    상태 메시지에는 다음 정보가 포함됩니다.

    SERVICE_NAME: aehd
           ...
           STATE              : 4  RUNNING
           ...
    

    다음 오류 메시지는 가상화 확장 프로그램이 BIOS에서 사용 설정되지 않았거나 Hyper-V가 사용 중지되지 않았음을 의미합니다.

    SERVICE_NAME: aehd
           ...
           STATE              : 1  STOPPED
           WIN32_EXIT_CODE    : 4294967201 (0xffffffa1)
           ...
    

    AEHD 2.0 이하

    sc query gvm
    

    상태 메시지에는 다음 정보가 포함됩니다.

    SERVICE_NAME: gvm
           ...
           STATE              : 4  RUNNING
           ...
    

    다음 오류 메시지는 가상화 확장 프로그램이 BIOS에서 사용 설정되지 않았거나 Hyper-V가 사용 중지되지 않았음을 의미합니다.

    SERVICE_NAME: gvm
           ...
           STATE              : 1  STOPPED
           WIN32_EXIT_CODE    : 4294967201 (0xffffffa1)
           ...
    

Android Emulator Hypervisor Driver는 GitHub에서도 다운로드하여 설치할 수 있습니다. 드라이버 패키지의 압축을 해제한 후 관리자 권한으로 명령줄에서 silent_install.bat를 실행합니다.

관리자 권한으로 명령줄에서 다음 명령어를 사용하여 Android Emulator Hypervisor Driver를 제거합니다.

AEHD 2.1 이상

   sc stop aehd
   sc delete aehd

AEHD 2.0 이하

   sc stop gvm
   sc delete gvm

macOS에서 VM 가속 구성

macOS에서 Android Emulator는 내장된 Hypervisor.Framework를 사용하며, 이를 위해서는 macOS v10.10 (Yosemite) 이상이 필요합니다. 하지만 Android 스튜디오를 사용하려면 macOS의 버전이 더 높아야 할 수 있습니다. 이 경우 Android 스튜디오 시스템 요구사항을 따르세요.

Linux에서 VM 가속 구성

Linux 기반 시스템은 KVM 소프트웨어 패키지를 통해 VM 가속을 지원합니다. 안내에 따라 Linux 시스템에 KVM을 설치하고 KVM이 사용 설정되었는지 확인합니다. Ubuntu 시스템의 경우 Ubuntu KVM 설치를 참고하세요.

요구사항

KVM을 실행하려면 특정 사용자 권한이 필요합니다. KVM 설치 안내에 지정된 대로 충분한 권한이 있는지 확인합니다.

Linux에서 VM 가속을 사용하려면 컴퓨터가 다음 요구사항도 충족해야 합니다.

  • Intel 프로세서의 경우: 사용 설정된 가상화 기술(VT-x)과 Intel EM64T(Intel 64) 기능, Execute Disable(XD) Bit 기능을 지원합니다.
  • AMD 프로세서: AMD 가상화(AMD-V)를 지원합니다.

KVM이 현재 Linux에 설치되어 있는지 확인

에뮬레이터 -accel-check 명령줄 옵션을 사용하여 KVM이 설치되어 있는지 확인할 수 있습니다. 또는 kvm-ok 명령어가 포함된 cpu-checker 패키지를 설치할 수 있습니다.

다음 예는 kvm-ok 명령어를 사용하는 방법을 보여줍니다.

  1. 다음과 같이 cpu-checker 패키지를 설치합니다.

    sudo apt-get install cpu-checker
    egrep -c '(vmx|svm)' /proc/cpuinfo
    

    출력이 1 이상이면 가상화가 지원된다는 의미입니다. 출력이 0이면 CPU가 하드웨어 가상화를 지원하지 않는다는 의미입니다.

  2. kvm-ok 명령어를 실행합니다.

    sudo kvm-ok
    

    예상 출력:

    INFO: /dev/kvm exists
    KVM acceleration can be used
    

    다음 오류가 표시되면 가상 머신을 계속 실행할 수 있다는 의미입니다. 그러나 가상 머신은 KVM 확장 프로그램이 없으면 속도가 느려집니다.

    INFO: Your CPU does not support KVM extensions
    KVM acceleration can NOT be used
    

Linux에서 KVM 설치

다음 명령어를 사용하여 KVM을 설치합니다.

Cosmic(18.10) 이상

sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

Lucid(10.04) 이상

sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Karmic(9.10) 이상

sudo aptitude install kvm libvirt-bin ubuntu-vm-builder bridge-utils

Intel HAXM 제거 가이드

Intel에서 HAXM 개발을 중단하므로 에뮬레이터 33.x.x.x부터는 HAXM이 지원 중단됩니다. Android Emulator 하이퍼바이저 드라이버(AEHD)가 Intel 프로세서의 Intel HAXM을 대체합니다.

HAXM에 종속된 다른 소프트웨어가 설치되어 있고 Intel HAXM을 유지하고 직접 관리하기로 선택하지 않는 한 Windows 시스템에서 Intel HAXM을 완전히 삭제하는 것이 좋습니다.

Intel HAXM을 제거하려면 다음 단계를 따르세요.

Intel HAXM이 설치되어 있는지 확인

Windows 시스템에 Intel HAXM이 설치되어 있는지 확인하려면 Windows 명령 콘솔을 열고 다음 명령어를 실행합니다.

   sc query intelhaxm

Intel HAXM이 설치되어 실행 중인 경우 명령어 출력에 다음 메시지가 표시됩니다.

Intel HAXM이 설치되었지만 사용 중지된 경우 명령어 출력에 다음 메시지가 표시됩니다.

두 경우 모두 Intel HAXM이 실행 중이거나 사용 중지되어 있는지와 관계없이 설치됩니다. Intel HAXM을 계속 제거하려면 다음 단계로 이동해야 합니다.

Intel HAXM이 설치되어 있지 않으면 다음 메시지가 표시됩니다.

Android 스튜디오에서 SDK Manager를 사용하여 Intel HAXM 제거

Android 스튜디오에서 SDK Manager를 열고 'SDK Tools' 탭으로 이동한 다음 'Intel x86 Emulator Accelerator (HAXM installer) - Deprecated'(Intel x86 에뮬레이터 가속기(HAXM 설치 프로그램) - 지원 중단됨) 줄로 이동합니다. 다음 스크린샷과 같이 표시됩니다.

다음 스크린샷과 같이 체크박스를 선택 해제합니다.

'Apply'(적용) 버튼을 클릭하면 다음 대화상자가 표시됩니다.

Intel HAXM이 제거되면 다음과 같이 표시됩니다. 제거가 완료되었으며 여기에서 중지할 수 있습니다.

오류가 발생하면 다음 단계로 진행합니다.

Windows '설정'을 사용하여 Intel HAXM을 제거합니다.

Windows '설정'을 열고 '앱 > 설치된 앱'으로 이동합니다.

다음 스크린샷과 같이 'Intel Hardware Accelerated Execution Manager' 항목을 찾아 'Uninstall'(제거)을 클릭합니다.

Intel HAXM 제거 도구가 실행되고 결과를 보고해야 합니다. 제거가 완료되면 Intel HAXM 설치 프로그램 패키지 삭제로 이동합니다. 그렇지 않으면 다음 단계로 진행합니다.

명령줄을 사용하여 제거

  1. 'sc stop intelhaxm'을 실행하여 Intel HAXM 서비스를 중지합니다. 다음과 같은 출력이 표시됩니다.

  2. 'sc delete intelhaxm'을 실행하여 Intel HAXM 서비스를 삭제합니다. 다음과 같은 출력이 표시됩니다.

  3. Intel HAXM 설치 프로그램 패키지 삭제로 이동합니다.

Intel HAXM 설치 프로그램 패키지를 삭제합니다.

이 단계는 Windows '설정' 또는 명령줄을 사용하여 Intel HAXM을 제거할 때만 필요합니다. 이 단계를 수행하지 않으면 Android 스튜디오의 SDK 관리자에 Intel HAXM이 '설치됨'으로 계속 표시될 수 있습니다.

설치 프로그램 패키지는<Android SDK 폴더>\extras\intel에 있습니다. 기본적으로 Android SDK는 'C:\Users\<Windows 사용자 ID>\AppData\Local\Android\Sdk'에 설치됩니다. 다음 스크린샷의 예를 참고하세요.