修复MacOS Big Sur 下 Android模拟无法运行
系统版本:MacOS Big Sur 11.3
Android emulator版本:30.5.5
表现
系统升级后Android模拟器无法运行,通过命令行启动模拟器运行报错如下:
<code>% emulator -feature HVF -avd Pixel_2_API_29 handleCpuAcceleration: feature check for hvf emulator: INFO: QtLogger.cpp:68: Warning: QMetaObject::connectSlotsByName: No matching signal for on_new_posture_requested(int) ((null):0, (null)) emulator: INFO: QtLogger.cpp:68: Warning: QMetaObject::connectSlotsByName: No matching signal for on_dismiss_posture_selection_dialog() ((null):0, (null)) cannot add library /Users/zhangzhenli/Library/Android/sdk/emulator/qemu/darwin-x86_64/lib64/vulkan/libvulkan.dylib: failed added library ./lib64/vulkan/libvulkan.dylib cannot add library /Users/zhangzhenli/Library/Android/sdk/emulator/qemu/darwin-x86_64/lib64/vulkan/libMoltenVK.dylib: failed HVF error: HV_ERROR qemu-system-x86_64: failed to initialize HVF: Invalid argument HAX is working and emulator runs in fast virt mode. qemu-system-x86_64: Back to HAX accelerator added library ./lib64/vulkan/libMoltenVK.dylib emulator: INFO: GrpcServices.cpp:301: Started GRPC server at 127.0.0.1:8554, security: Local </code>
问题原因
谷歌爬了一些发现了大概,简单说就是Big Sur 11.3针对安全性做了升级,现有的qemu没有及时适配。
解决方法
要解决此问题,我们要做的就是为qemu-system-x86_64二进制添加新的权限声明。
- 创建一个entitlements.xml文件,内容如下:
<code><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.hypervisor</key>
<true/>
</dict>
</plist>
</code>
- 签名qemu二进制文件:
<code> ~ % cd ~/Library/Android/sdk/emulator/ emulator % codesign -s - --entitlements entitlements.xml --force ~/Library/Android/sdk/emulator/qemu/darwin-x86_64/qemu-system-x86_64 </code>
- 再次启动
<code> emulator % ./emulator -list-avds Pixel_2_API_29 emulator %./emulator -feature HVF -avd Pixel_2_API_29 handleCpuAcceleration: feature check for hvf emulator: INFO: QtLogger.cpp:68: Warning: QMetaObject::connectSlotsByName: No matching signal for on_new_posture_requested(int) ((null):0, (null)) emulator: INFO: QtLogger.cpp:68: Warning: QMetaObject::connectSlotsByName: No matching signal for on_dismiss_posture_selection_dialog() ((null):0, (null)) cannot add library /Users/zhangzhenli/Library/Android/sdk/emulator/qemu/darwin-x86_64/lib64/vulkan/libvulkan.dylib: failed added library ./lib64/vulkan/libvulkan.dylib cannot add library /Users/zhangzhenli/Library/Android/sdk/emulator/qemu/darwin-x86_64/lib64/vulkan/libMoltenVK.dylib: failed added library ./lib64/vulkan/libMoltenVK.dylib emulator: INFO: GrpcServices.cpp:301: Started GRPC server at 127.0.0.1:8554, security: Local </code>
以上HVF error: HV_ERROR错误消除,成功启动了。
参考原文
链接: https://www.arthurkoziel.com/qemu-on-macos-big-sur/.
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!