Android模拟器无法在OSX Big Sur上运行

时间:2020-08-25 09:50:02

标签: 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

有人可以解决吗?

14 个答案:

答案 0 :(得分:31)

更新:现在应该由稳定频道中的 Android 模拟器 30.5.6 版修复此问题。

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

工具 > 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>

将 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 :(得分:8)

解决问题的步骤:

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

2.使用entitlements.xmltouch命令创建一个名为cat的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>

4.然后简单地用它签署 qemu-system-x86_64:

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

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

答案 2 :(得分:5)

更新,2020年1月1日

Android仿真器团队已推送30.1.5,此问题已稳定修复。开发版本30.2.0不包含此修复程序。根据Googler的工作,它应该“很快”可用。

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

~/Library/Android/sdk/emulator/emulator -gpu host -feature HVF -avd pixel_3a_api_29

旧信息,出于教育价值而保留:

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

如果您迫不及待,则应该能够建立该分支。经过严格测试的指南从仓库的自述文件中抽出大量精力:

# 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

答案 3 :(得分:2)

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

答案 4 :(得分:2)

尝试了许多关于SO的答案/评论后,发现此替代方法可行且可重复:

  1. 设置新的AVD

我使用了Pixel 3和3a,API 30,默认选项

  1. 使用const str = `<div class="date"> <span> <i class="far fa-user"></i>&nbsp;{Name} <i class="fas fa-link"></i>&nbsp; LINK <i class="fas fa-sync-alt"></i>&nbsp;{ReblogSource} </span> <span> irrelevant content </span> </div>` const $div = $('<div>').html(str) $div.find('.date span:first').contents().each(function() { const $el = $(this); if ($el.hasClass('fa-link')) { return false // breaks loop } $el.remove(); }); console.log($div.html()) CLI启动AVD
emulator

您会看到臭名昭著的$ ~/Library/Android/sdk/emulator/emulator @Pixel_3a_API_30

  1. 使用...unhandled exit 1d取消命令或按模拟器侧边栏上的⌃ + c

您应该会看到有关“保存状态”的微调器...

  1. 再次运行模拟器(步骤2),这一次它应该显示:
    Screenshot of the top of an Android emulator with a dialog, reading "Resetting for cold-boot: emulator engine failed"

5。点击 DISMISS (或等待),然后模拟器应启动到Android

注意:从Android Studio / AVD Manager GUI启动相同的AVD仍然会遇到此异常,因此,在需要时,请像在步骤2中一样启动模拟器。

答案 5 :(得分:2)

在上一次BigSur beta更新(11.0 Beta(20A5395g))之后,Android Studio继续关闭。如果我打开任何子窗口,UI都没有响应...

再也没有beta

答案 6 :(得分:1)

正如@Demirezen 所提到的,目前,这是一个代码签名问题 see details here。 自己进行代码签名或使用来自 canary build 的模拟器 30.6.4 都可以解决问题。

答案 7 :(得分:0)

像这样运行模拟器:

~/Library/Android/sdk/emulator/emulator -wipe-data @Pixel_3a_API_30

为我修复了。

答案 8 :(得分:0)

似乎可以与模拟器 30.2.6 一起使用(目前是 Beta 频道中的最新版本) 虽然锁文件存在问题,阻止了 emu 启动。

这是让一切恢复正常的原因:

  1. 擦除所有 AVD 的数据(不确定是否需要)
  2. 查看每个 ~/.android/avd/*.avd/ 文件夹并删除 hardware-qemu.ini.lock 文件(如果存在)。

答案 9 :(得分:0)

使缓存无效/重新启动并重新创建图像,似乎某些幕后配置不向前兼容。

答案 10 :(得分:0)

  1. 转到/Users/<your user>/Library/Android/sdk/emulator/qemu/
  2. 在此文件中,您将看到文件。如果这些文件的名称包含数字 64,则:
  3. 使用映像 arm64-v8a + API LEVEL= S 创建虚拟设备

在这些步骤之后应该打开模拟器。

答案 11 :(得分:0)

我遇到了同样的问题,只需将您的 android studio 和所有 sdk 工具更新到最新版本,一切都会正常运行。

答案 12 :(得分:0)

添加适当的 ANDROID_AVD_HOME 会有所帮助。 您可以将 export ANDROID_AVD_HOME=$HOME/.android/avd 添加到 ~/.bash_profile

答案 13 :(得分:0)

花了一整天尝试不同的方法,包括下载 qemu。最后......进入Android SDK> SDK工具>更新所有内容,确保已安装并勾选HAXM安装程序。成功了!