Android 模拟器不适用于 macOS Big Sur 11.3+

Dun*_*una 50 android-emulator macos-big-sur

我已将 mac OS 升级到 Big Sur,但没有一个模拟器在工作。似乎所有 Android 模拟器在 Mac OS Big Sur Beta 上都失败了。我删除了旧的模拟器并创建了具有不同硬件/软件的新模拟器,但没有成功。在android模拟器中引入了以下问题。

  1. ffffffffb69b4dbb:未处理的出口 1d
  2. 模拟器引擎失败
  3. adb 设备离线

https://issuetracker.google.com/issues/165038831

有没有人有办法解决吗?

编辑 27.04.2021

~/Library/Android/sdk/emulator/emulator -gpu host -read-only -feature HVF -avd Pixel_4_API_29
emulator: Android emulator version 30.5.5.0 (build_id 7285888) (CL:N/A)
handleCpuAcceleration: feature check for hvf
cannot add library /Users/dunatv/Library/Android/sdk/emulator/qemu/darwin-x86_64/lib64/vulkan/libvulkan.dylib: failed
added library /Users/dunatv/Library/Android/sdk/emulator/lib64/vulkan/libvulkan.dylib
cannot add library /Users/dunatv/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 /Users/dunatv/Library/Android/sdk/emulator/lib64/vulkan/libMoltenVK.dylib
emulator: INFO: GrpcServices.cpp:301: Started GRPC server at 127.0.0.1:8554, security: Local
Run Code Online (Sandbox Code Playgroud)

更新:2021 年 8 月 11 日

目前,模拟器和北极狐正在工作。在 Big Sur 11.5.1 上测试

Mar*_*ark 33

更新:这现在应该由稳定通道中的 Android 模拟器30.5.6修复

但是,如果您现在在更新到最新版本的 Android 模拟器后遇到问题,您可以通过从 SDK 管理器中删除然后重新添加 Android 模拟器来解决此问题。

工具 > SDK 管理器 > SDK 工具
取消选中 Android Emulator 并点击应用。
检查 Android 模拟器并点击应用。


原答案:

这对我有用 https://www.arthurkoziel.com/qemu-on-macos-big-sur

本质上,创建一个entitlements.xml使用以下内容调用的 XML 文件:

<?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>
Run Code Online (Sandbox Code Playgroud)

将 XML 文件复制到 ~/Library/Android/sdk/emulator/qemu/darwin-x86_64

然后在终端中运行以下命令:

codesign -s - --entitlements entitlements.xml --force qemu-system-aarch64
codesign -s - --entitlements entitlements.xml --force qemu-system-aarch64-headless 
codesign -s - --entitlements entitlements.xml --force qemu-system-armel
codesign -s - --entitlements entitlements.xml --force qemu-system-armel-headless 
codesign -s - --entitlements entitlements.xml --force qemu-system-i386
codesign -s - --entitlements entitlements.xml --force qemu-system-i386-headless 
codesign -s - --entitlements entitlements.xml --force qemu-system-x86_64
codesign -s - --entitlements entitlements.xml --force qemu-system-x86_64-headless 
Run Code Online (Sandbox Code Playgroud)

  • 这是对我有用的答案 (3认同)

Sim*_*kle 18

更新,10-1-2020

Android Emulator 团队已推送 30.1.5,以稳定方式修复此问题。开发版本 30.2.0 不包含此修复程序。根据谷歌员工的工作,它应该“很快”可用。

另请注意,如果您在模拟器中遇到性能不佳的情况,您可能希望尝试使用主机的 GPU 进行渲染。这可以通过在终端中运行以下命令来完成,其中 -avd 是模拟器设备的名称,空格变为下划线。

~/Library/Android/sdk/emulator/emulator -gpu host -feature HVF -avd pixel_3a_api_29
Run Code Online (Sandbox Code Playgroud)

为教育价值而保留的旧信息

是针对 Big Sur 修复此问题的提交的参考。这看起来应该在模拟器 30.1.5 中发布(请参阅日志https://android.googlesource.com/platform/external/qemu/+log/refs/heads/emu-30-release),它应该在下一个金丝雀构建。

如果您迫不及待,您应该能够构建该分支。从 repo 的自述文件中大量提取的经过轻度测试的指南:

# Get the google repo tool - you can skip if you already have it
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > /usr/local/bin/repo && chmod +x /usr/local/bin/repo

# Get the code, will take some time. Probably best to go get a coffee here or run on a server if you have poor internet
mkdir -p $HOME/emu-master-dev && cd $HOME/emu-master-dev
repo init -u https://android.googlesource.com/platform/manifest -b emu-master-dev
repo sync -j8

# Get XCode 10.1 - required
https://download.developer.apple.com/Developer_Tools/Xcode_10.1/Xcode_10.1.xip
sudo xcodebuild -license accept &&
sudo xcode-select --install

# Get MacOS 10.13 SDK which is required
export XCODE_PATH=$(xcode-select -print-path 2>/dev/null)
git clone https://github.com/phracker/MacOSX-SDKs
cp -r MacOSX-SDKs/MacOSX10.13.sdk/ "$XCODE_PATH/Platforms/MacOSX.platform/Developer/SDKs"

# Build the emulator, which will be another coffee break...
cd external/qemu && android/rebuild.sh

# run it :)
./objs/emulator -list-avds
Run Code Online (Sandbox Code Playgroud)

  • 看来今天的更新 macOS 11.3 模拟器根本无法工作 (10认同)
  • 是的,它在 11.3 中不起作用 (7认同)
  • 对于 macOS Big Sur 11.3,[此](/sf/ask/4710183061/ 67288845)帖子有一个对我有用的解决方案。我把它放在这里供参考。 (3认同)
  • 不适用于 11.3。从 AVD 工具、命令行、AS 工具窗口中尝试。这个 BigSur 版本没有任何效果。作为围绕最新版本 Genymotion 的解决方案。 (2认同)
  • android模拟器新更新30.5.6已经解决了这个问题。万岁!!! (2认同)

Bur*_*zen 11

解决问题的步骤:

1.打开终端,进入目录 /Users/<username>/Library/Android/sdk/emulator/qemu/darwin-x86_64/

2.创建一个entitlements.xmltouchcat命令命名的xml文件

3.将此内容添加到entitlements.xml文件中:

<?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>
Run Code Online (Sandbox Code Playgroud)

4.然后简单地用它对 qemu-system-x86_64 进行签名:

codesign -s - --entitlements entitlements.xml --force qemu-system-x86_64

5.现在只需重新启动 Android Studio,Android 模拟器就可以再次运行了!

  • 就是这样! (3认同)

小智 5

我的解决方案是从 Android studio AVD 中擦除数据,然后使用 ./emulator @Pixel_3a_API_29 命令一次又一次启动它,直到成功启动。