Android 模拟器无法在 macOS Big Sur 11.3+ 上运行
Android emulators are not working on macOS Big Sur 11.3+
我已将 mac OS 升级到 Big Sur,并且 none 的模拟器正在运行。似乎所有 Android 模拟器都在 Mac OS Big Sur Beta 上失败。我删除了旧的模拟器并创建了不同 HW/SW 的新模拟器,但没有成功。在 android 模拟器中引入了以下问题。
- ffffffffb69b4dbb: 未处理的退出 1d
- 模拟器引擎失败
- adb 设备离线
https://issuetracker.google.com/issues/165038831
有人有解决办法吗?
编辑 2021 年 4 月 27 日
~/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
更新:2021 年 8 月 11 日
目前 Emulators 和 Arctic Fox 正在运行。在 Big Sur 11.5.1
上测试
我的解决方案是从 Android studio AVD 擦除数据,然后使用 ./emulator @Pixel_3a_API_29 命令一次又一次地启动它直到它成功启动。
在尝试了关于 SO 的许多答案/评论之后,发现此解决方法有效且可重现:
- 设置新的 AVD
I used Pixel 3 & 3a, API 30, default options
- 使用
emulator
CLI 启动 AVD
$ ~/Library/Android/sdk/emulator/emulator @Pixel_3a_API_30
You'll see the infamous ...unhandled exit 1d
- 使用
⌃ + c
取消命令或按模拟器侧边栏上的x
You should see a spinner about Saving State...
- 运行 再次运行模拟器(第 2 步),这次它应该显示:
5。单击 DISMISS(或等待),模拟器应启动到 Android
注意: 从 Android Studio / AVD Manager GUI 启动相同的 AVD 仍会 运行 进入此异常,因此当您需要它时 - 启动模拟器就像第 2 步中那样。
更新,2020 年 10 月 1 日
Android Emulator 团队推出了 30.1.5,它在稳定版中修复了这个问题。开发版本 30.2.0 不包含此修复程序。根据 Google 员工的工作,它应该“很快”可用。
另请注意,如果您的模拟器性能不佳,您可能希望尝试使用主机的 GPU 进行渲染。这可以通过 运行 在您的终端中执行以下命令来完成,其中 -avd 是您的模拟器设备的名称,空格变成下划线。
~/Library/Android/sdk/emulator/emulator -gpu host -feature HVF -avd pixel_3a_api_29
旧信息,为教育价值而保留:
This is the reference to the commit fixing this issue for Big Sur. This looks like it should be released in the emulator 30.1.5 (see log 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
上次 BigSur 测试版更新(11.0 测试版 (20A5395g))后,Android Studio 不断关闭。 UI 如果我打开任何子窗口都没有响应...
再也没有测试版
运行 模拟器是这样的:
~/Library/Android/sdk/emulator/emulator -wipe-data @Pixel_3a_API_30
帮我修好了。
似乎可以与模拟器一起使用 30.2.6
(此时最新的测试版)
尽管锁定文件存在问题,导致 emu 无法启动。
以下是一切恢复正常的原因:
- 擦除所有 AVD 的数据(不确定是否需要)
- 查看每个
~/.android/avd/*.avd/
文件夹并删除 hardware-qemu.ini.lock
文件(如果存在)。
更新:这个问题现在应该被稳定频道中 Android 模拟器的 30.5.6 版本修复。
但是,如果您在更新到最新版本的 Android 模拟器后遇到问题,您可以通过删除然后重新添加 Android 模拟器来解决此问题SDK 管理器。
工具 > SDK 管理器 > SDK 工具
取消选中 Android 模拟器并点击应用。
检查 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>
将 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
解决问题的步骤:
1.Open终端并进入目录/Users/<username>/Library/Android/sdk/emulator/qemu/darwin-x86_64/
2.Create 一个名为 entitlements.xml
的 xml 文件,带有 touch
或 cat
命令
3.Add 此内容到 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>
4.Then 只需用它签署 qemu-system-x86_64:
codesign -s - --entitlements entitlements.xml --force qemu-system-x86_64
5.Now 只需重新启动 Android Studio,Android 模拟器就会再次运行!
正如@Demirezen 所提到的,目前这是一个代码签名问题see details here。
自己进行代码签名或使用 canary build 的模拟器 30.6.4 都可以解决问题。
使缓存无效/重新启动并重新创建图像,似乎某些幕后配置不向前兼容。
- 转到
/Users/<your user>/Library/Android/sdk/emulator/qemu/
- 在此文件中,您将看到文件。如果这些文件的名称包含数字
64
,则:
- 使用映像创建虚拟设备
arm64-v8a
+ API LEVEL= S
完成这些步骤后,模拟器应该会打开。
我遇到了同样的问题,只需将您的 android studio 和所有 sdk 工具更新到最新版本,一切都会正常。
添加适当的 ANDROID_AVD_HOME
以某种方式有所帮助。
您可以将 export ANDROID_AVD_HOME=$HOME/.android/avd
添加到 ~/.bash_profile
花了一整天尝试不同的方法,包括下载qemu。最后...进入 Android SDK> SDK 工具 > 更新所有内容,确保安装并勾选了 HAXM 安装程序。成功了!
我已将 mac OS 升级到 Big Sur,并且 none 的模拟器正在运行。似乎所有 Android 模拟器都在 Mac OS Big Sur Beta 上失败。我删除了旧的模拟器并创建了不同 HW/SW 的新模拟器,但没有成功。在 android 模拟器中引入了以下问题。
- ffffffffb69b4dbb: 未处理的退出 1d
- 模拟器引擎失败
- adb 设备离线
https://issuetracker.google.com/issues/165038831
有人有解决办法吗?
编辑 2021 年 4 月 27 日
~/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
更新:2021 年 8 月 11 日
目前 Emulators 和 Arctic Fox 正在运行。在 Big Sur 11.5.1
上测试我的解决方案是从 Android studio AVD 擦除数据,然后使用 ./emulator @Pixel_3a_API_29 命令一次又一次地启动它直到它成功启动。
在尝试了关于 SO 的许多答案/评论之后,发现此解决方法有效且可重现:
- 设置新的 AVD
I used Pixel 3 & 3a, API 30, default options
- 使用
emulator
CLI 启动 AVD
$ ~/Library/Android/sdk/emulator/emulator @Pixel_3a_API_30
You'll see the infamous
...unhandled exit 1d
- 使用
⌃ + c
取消命令或按模拟器侧边栏上的x
You should see a spinner about Saving State...
- 运行 再次运行模拟器(第 2 步),这次它应该显示:
5。单击 DISMISS(或等待),模拟器应启动到 Android
注意: 从 Android Studio / AVD Manager GUI 启动相同的 AVD 仍会 运行 进入此异常,因此当您需要它时 - 启动模拟器就像第 2 步中那样。
更新,2020 年 10 月 1 日
Android Emulator 团队推出了 30.1.5,它在稳定版中修复了这个问题。开发版本 30.2.0 不包含此修复程序。根据 Google 员工的工作,它应该“很快”可用。
另请注意,如果您的模拟器性能不佳,您可能希望尝试使用主机的 GPU 进行渲染。这可以通过 运行 在您的终端中执行以下命令来完成,其中 -avd 是您的模拟器设备的名称,空格变成下划线。
~/Library/Android/sdk/emulator/emulator -gpu host -feature HVF -avd pixel_3a_api_29
旧信息,为教育价值而保留:
This is the reference to the commit fixing this issue for Big Sur. This looks like it should be released in the emulator 30.1.5 (see log 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
上次 BigSur 测试版更新(11.0 测试版 (20A5395g))后,Android Studio 不断关闭。 UI 如果我打开任何子窗口都没有响应...
再也没有测试版
运行 模拟器是这样的:
~/Library/Android/sdk/emulator/emulator -wipe-data @Pixel_3a_API_30
帮我修好了。
似乎可以与模拟器一起使用 30.2.6
(此时最新的测试版)
尽管锁定文件存在问题,导致 emu 无法启动。
以下是一切恢复正常的原因:
- 擦除所有 AVD 的数据(不确定是否需要)
- 查看每个
~/.android/avd/*.avd/
文件夹并删除hardware-qemu.ini.lock
文件(如果存在)。
更新:这个问题现在应该被稳定频道中 Android 模拟器的 30.5.6 版本修复。
但是,如果您在更新到最新版本的 Android 模拟器后遇到问题,您可以通过删除然后重新添加 Android 模拟器来解决此问题SDK 管理器。
工具 > SDK 管理器 > SDK 工具
取消选中 Android 模拟器并点击应用。
检查 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>
将 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
解决问题的步骤:
1.Open终端并进入目录/Users/<username>/Library/Android/sdk/emulator/qemu/darwin-x86_64/
2.Create 一个名为 entitlements.xml
的 xml 文件,带有 touch
或 cat
命令
3.Add 此内容到 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>
4.Then 只需用它签署 qemu-system-x86_64:
codesign -s - --entitlements entitlements.xml --force qemu-system-x86_64
5.Now 只需重新启动 Android Studio,Android 模拟器就会再次运行!
正如@Demirezen 所提到的,目前这是一个代码签名问题see details here。 自己进行代码签名或使用 canary build 的模拟器 30.6.4 都可以解决问题。
使缓存无效/重新启动并重新创建图像,似乎某些幕后配置不向前兼容。
- 转到
/Users/<your user>/Library/Android/sdk/emulator/qemu/
- 在此文件中,您将看到文件。如果这些文件的名称包含数字
64
,则: - 使用映像创建虚拟设备
arm64-v8a
+ API LEVEL= S
完成这些步骤后,模拟器应该会打开。
我遇到了同样的问题,只需将您的 android studio 和所有 sdk 工具更新到最新版本,一切都会正常。
添加适当的 ANDROID_AVD_HOME
以某种方式有所帮助。
您可以将 export ANDROID_AVD_HOME=$HOME/.android/avd
添加到 ~/.bash_profile
花了一整天尝试不同的方法,包括下载qemu。最后...进入 Android SDK> SDK 工具 > 更新所有内容,确保安装并勾选了 HAXM 安装程序。成功了!