Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (seongtaejeong at gmail.com)
홈페이지
첨부 파일
 

Windows - WHPX(Windows Hypervisor Platform)를 이용한 Android Emulator 가속

MAUI 프로젝트를 Emulator 설정으로 Visual Studio 환경에서 (F5 디버깅처럼) 실행하면 잘 모르고 지나갈 수도 있는데요, 대신 "Tools" / "Android" / "Android Device Manager..." 메뉴를 통해 에뮬레이터를 직접 시작하는 경우 다음과 같은 경고창이 뜰 수도 있습니다.

This emulator does not have hardware acceleration enabled, and its performance will be impacted.
We recommend to either:

- Turn on "Hyper-V" feature to switch to the Native Hypervisor and accelerate your emulator.

- Configure hardware acceleration following the instructions to Enable Hardware Acceleration

- Try using a physical Android device for development.

- You can try and start the emulator anyway running unaccelerated, however this is NOT recommended.

문서를 봤더니,

How to enable hardware acceleration with Android emulators (Hyper-V & AEHD)
; https://learn.microsoft.com/en-us/dotnet/maui/android/emulator/hardware-acceleration

그동안 많은 변화가 있었군요. ^^; 우선 선택의 폭이 넓어져서 2가지 방법 중 하나를 선택하면 됩니다.

  1. The Windows Hypervisor Platform (WHPX). Hyper-V is a virtualization feature of Windows that makes it possible to run virtualized computer systems on a physical host computer.
  2. The Android Emulator hypervisor driver (AEHD).

과거에 유명했던 Intel HAXM은 33.x 이후의 에뮬레이터부터 권장하지 않고, 결국 위의 2번째 옵션에 해당하는 AEHD로 바뀌었다고 합니다. 일단은, AEHD가 범용성이 좋은 듯한데 그래도 윈도우 환경에서는 WHPX를 추천한다고 합니다.




해당 문서에 따르면, Windows 10 RS5 업데이트 이후부터는 Hyper-V를 설치한 경우 내부적으로 WHPX를 자동으로 활성화시키므로 굳이 "Windows Hypervisor Platform"을 켤 필요는 없다고 합니다.

whpx_enable_1.png

하지만 제 경우에 Hyper-V를 설치한 머신인데도 "This emulator does not have hardware acceleration enabled, and its performance will be impacted." 메시지가 뜬 건데요, 어쨌든 명시적으로 저 옵션을 켜고 재부팅한 이후부터는 더 이상 경고 메시지가 뜨지 않습니다. (아마도 WHPX가 나오기 이전부터 설치한 Hyper-V인 경우에는 자동 적용이 안 되는 듯합니다.)

참고로, AEHD는 Hyper-V를 지원하지 못하는 시스템에서도 사용할 수 있다고 하며, 심지어 Hyper-V를 지원한다고 해도 꺼야만 설치가 됩니다. 아마도 개발자라면 Hyper-V를 대부분 설치했을 것이므로 딱히 중요한 사항은 아니기에 자세한 사항은 문서를 참조하시면 되겠습니다.

암튼, 안드로이드 개발 환경만큼은 이젠 물리 기기가 없어도 될 정도로 쾌적해진 것 같습니다. ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 5/17/2024]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 76  77  78  79  80  81  82  [83]  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
11895정성태5/12/201922597.NET Framework: 832. ML.NET Model Builder - 회귀(Regression), 다중 분류(Multi-class classification) 예제파일 다운로드1
11894정성태5/10/201924544VS.NET IDE: 135. Visual Studio - ML.NET Model Builder 소개 [5]
11893정성태5/10/201920605오류 유형: 535. C# 6.0 이상의 문법을 컴파일 시 오류가 발생한다면?
11892정성태5/10/201920501웹: 38. HTTP Cookie의 expires 시간 형식(RFC7231)
11891정성태5/9/201923635.NET Framework: 831. (번역글) .NET Internals Cookbook Part 12 - Memory structure, attributes, handles
11890정성태5/8/201919309개발 환경 구성: 439. "Visual Studio Enterprise is required to execute the test." 메시지와 관련된 코드 기록
11889정성태5/8/201919380개발 환경 구성: 438. mstest, QTAgent의 로그 파일 설정 방법
11888정성태5/8/201937292.NET Framework: 830. C# - 비동기 호출을 취소하는 CancellationToken의 간단한 예제 코드 [1]파일 다운로드1
11887정성태5/8/201923094.NET Framework: 829. C# - yield 문을 사용할 수 있는 메서드의 조건
11886정성태5/7/201920159오류 유형: 534. mstest.exe 실행 시 "Visual Studio Enterprise is required to execute the test." 오류 [2]
11885정성태5/7/201917625오류 유형: 533. mstest.exe 실행 시 "File extension specified '.loadtest' is not a valid test extension." 오류 발생
11884정성태5/5/201922553.NET Framework: 828. C# DLL에서 Win32 C/C++처럼 dllexport 함수를 제공하는 방법 - 두 번째 이야기
11883정성태5/3/201927538.NET Framework: 827. C# - 인터넷 시간 서버로부터 받은 시간을 윈도우에 적용하는 방법파일 다운로드1
11882정성태5/2/201924027.NET Framework: 826. (번역글) .NET Internals Cookbook Part 11 - Various C# riddles파일 다운로드1
11881정성태4/28/201924131오류 유형: 532. .NET Core 프로젝트로 마이그레이션 시 "CS0579 Duplicate 'System.Reflection.AssemblyCompanyAttribute' attribute" 오류 발생
11880정성태4/25/201919862오류 유형: 531. 이벤트 로그 오류 - Task Scheduling Error: m->NextScheduledSPRetry 1547, m->NextScheduledEvent 1547
11879정성태4/24/201928768.NET Framework: 825. (번역글) .NET Internals Cookbook Part 10 - Threads, Tasks, asynchronous code and others파일 다운로드2
11878정성태4/22/201924050.NET Framework: 824. (번역글) .NET Internals Cookbook Part 9 - Finalizers, queues, card tables and other GC stuff파일 다운로드1
11877정성태4/22/201924253.NET Framework: 823. (번역글) .NET Internals Cookbook Part 8 - C# gotchas파일 다운로드1
11876정성태4/21/201922511.NET Framework: 822. (번역글) .NET Internals Cookbook Part 7 - Word tearing, locking and others파일 다운로드1
11875정성태4/21/201924339오류 유형: 530. Visual Studo에서 .NET Core 프로젝트를 열 때 "One or more errors occurred." 오류 발생
11874정성태4/20/201924377.NET Framework: 821. (번역글) .NET Internals Cookbook Part 6 - Object internals파일 다운로드1
11873정성태4/19/201923053.NET Framework: 820. (번역글) .NET Internals Cookbook Part 5 - Methods, parameters, modifiers파일 다운로드1
11872정성태4/17/201923930.NET Framework: 819. (번역글) .NET Internals Cookbook Part 4 - Type members파일 다운로드1
11871정성태4/16/201921809.NET Framework: 818. (번역글) .NET Internals Cookbook Part 3 - Initialization tricks [3]파일 다운로드1
11870정성태4/16/201920692.NET Framework: 817. Process.Start로 실행한 콘솔 프로그램의 출력 결과를 얻는 방법파일 다운로드1
... 76  77  78  79  80  81  82  [83]  84  85  86  87  88  89  90  ...