Android Emulator – AMD Processor and Hyper-V Support
android-developers.googleblog.com
android-developers.googleblog.com
Tangentially and asking the crowd:
What products on the market use macOS's Hypervisor Framework? Virtualbox apparently doesn't [1], but Docker For Mac does [2]...
Edit: and QEMU added experimental support in 2.12 [3], released in April
[1] https://www.virtualbox.org/ticket/14217
The issue was on Windows (and macOS) where it used Intel HAXM which obviously didn't work with AMD cores.
there weren't really that many "official" mac products with amd.
I'm afraid that the ecosystem of hypervisor APIs are going the same way as with graphics APIs, e.g. thanks to Direct3D and Metal. I believe we should disregard such APIs in favor of cross-platform open alternatives such as Intel's HAXM: Support for Linux and AMD SVM is planned on my side, as it serves as basis for my PS4 LLE emulator.
I’m curious what you mean about no guest debugging support. Also curious about the other shortcomings so that we can prioritize appropriately. We have only just shipped our first version.
On API divergence, it’s an interesting point. MacOS, Windows, HAXM, and KVM all have slightly different philosophies about what a hypervisor should do. Maybe over time we can work toward more convergence.
True. This is an unimportant rant on my side, since it would be nice to have a complete emulator out-of-the-box. But it's true it can be solved in userspace (EDIT: now I wonder how could we inject exceptions back into the guest, should they occur during emulation in userspace).
> I'm curious what you mean about no guest debugging support.
This would allow the host to introduce software/hardware breakpoints and single-stepping through the guest. This is extremely relevant to debug bootloaders/microkernels, or in my case, closed-source kernels that do not support debugging. Some hypervisors, e.g. KVM (and soon HAXM), support this: check "KVM_DEBUG_GUEST" at https://www.kernel.org/doc/Documentation/virtual/kvm/api.txt
> Also curious about the other shortcomings so that we can prioritize appropriately.
The API provides no way to add/override/hook arbitrary MSRs while handling guests's rdmsr/wrmsr instructions, or override CPUID leaves/subleaves. This is required to run certain kernels are designed to run in specific x86 processors. Of course, most hypervisors lack this feature and I understand that WHPX is fairly recent so I'm not complaining about the lack of it. My issue is rather that closed-source implementations are not helpful for researchers since shortcomings like these means the whole library is no longer usable for us. Comparatively adding such features to (say) KVM or HAXM takes just few hours.
Also, don't get me wrong. I feel it's incredibly valuable having finally an API allowing developers benefit from Hyper-V in userland. I'm just concerned about the current trend of hypervisor APIs, as every vendor eventually just ships a closed hypervisor library for its own platform, and developers have to put up with 5 different ways of doing the same thing.
(PS: I've invested quite some time on HAXM, but I'm not affiliated with Intel in any way)
Isn’t that what this is for?
https://docs.microsoft.com/en-us/virtualization/api/hypervis...
Or are you looking for a higher-level API or something?
edit: and for CPUID:
https://docs.microsoft.com/en-us/virtualization/api/hypervis...
FYI for anyone using Visual Studio & Xamarin, we've added support for this in Visual Studio 2017 15.8 Preview 1 or higher with the Mobile development with .NET (Xamarin) workload installed.
Miguel posted details in this blog post: https://blogs.msdn.microsoft.com/visualstudio/2018/05/08/hyp...
Happy coding folks.
(disclaimer - I work at Microsoft)
Android emulator has improved massively over the past few years, you might want to go take an actual look at it. Even has quite a few features missing from iOS's simulator, too, like camera scene emulation.
(I work at Google, but not on Android)
There is also anbox that should be close to what a simulator would be: https://anbox.io/
When was the last time you used the emulator?
Has it improved markedly recently, and if so, how?