Android Emulator(AVD)无法在MacOS中启动

Android Emulator(AVD)无法在MacOS中启动,android,avd,selinux,Android,Avd,Selinux,当目标平台为26级(android 8.0.0)或更高级别时,我的android emulator无法启动。仿真器仅显示一个黑屏,而仿真器进程一直以大约100%的CPU运行。请注意,25级及以下级别工作正常 以下是我到目前为止的发现: 我从命令行启动了emulator,以便检查logcat: ./emulator -avd Test2 -logcat '*:e' 以下是日志的摘录: ./emulator -avd Test2 -logcat '*:e' [0.000000]初始化cgroup

当目标平台为26级(android 8.0.0)或更高级别时,我的android emulator无法启动。仿真器仅显示一个黑屏,而仿真器进程一直以大约100%的CPU运行。请注意,25级及以下级别工作正常

以下是我到目前为止的发现:

我从命令行启动了emulator,以便检查logcat:

./emulator -avd Test2 -logcat '*:e'
以下是日志的摘录:

./emulator -avd Test2 -logcat '*:e'
[0.000000]初始化cgroup子系统cpu
[0.000000]正在初始化cgroup子系统cpuacct
[0.000000]Linux版本3.18.91+(android-build@wphr1.hot.corp.google.com)(gcc版本4.9 20140827(预发布)(gcc))#1 SMP抢占2018年1月9日星期二20:30:51 UTC
[0.000000]命令行:qemu=1 androidboot.hardware=ranchu clocksource=pit androidboot.console=ttyS0 android.qemud=1 console=0 android.checkjni=1 qemu.gles=1 androidboot.logcat=*:e androidboot.selinux=permissive ndns=2 ndns=2
[0.000000]已禁用快速字符串操作
... 
(跳过几百行)
...
[1.443608]初始化:初始化第一阶段已开始!
[1.443608]初始化:使用Android DT目录/proc/device tree/firmware/Android/
[1.443608]初始化:跳过第一阶段装载(设备树中缺少/不兼容fstab)
[1.453842]初始化:跳过设置初始化AVB_版本(不在恢复模式下)
[1.453842]初始化:加载SELinux策略
[1.453842]selinux:selinux:无法打开/sepolicy:没有这样的文件或目录
[    1.453842] 
[1.463161]初始化:未能加载单片SELinux策略:没有此类文件或目录
[1.463161]初始化:死机:重新启动到引导加载程序
[1.463161]初始化:重新启动启动,原因:重新启动,重新启动目标:引导加载程序
[1.472277]初始化:android::WriteStringToFile打开失败:没有此类文件或目录
[1.472277]初始化:关闭超时:6
[1.472277]初始化:终止初始化服务
[1.472277]初始化:waitpid失败:没有子进程
[1.482231]初始化:终止正在运行的服务花费了0.013438秒,剩余服务:0
[1.482231]初始化:waitpid失败:没有子进程
[1.482231]初始化:卷未运行,跳过卷关闭
[1.607664]初始化:powerctl\u关机\u时间\u毫秒:128:0
[1.607664]初始化:重启结束,跳转到内核
[1.607664]重新启动:使用命令“bootloader”重新启动系统
[1.607664]重新启动:计算机重新启动
[0.000000]初始化cgroup子系统cpu
[0.000000]正在初始化cgroup子系统cpuacct
[0.000000]Linux版本3.18.91+(android-build@wphr1.hot.corp.google.com)(gcc版本4.9 20140827(预发布)(gcc))#1 SMP抢占2018年1月9日星期二20:30:51 UTC
[0.000000]命令行:qemu=1 androidboot.hardware=ranchu clocksource=pit androidboot.console=ttyS0 android.qemud=1 console=0 android.checkjni=1 qemu.gles=1 androidboot.logcat=*:e androidboot.selinux=permissive ndns=2 ndns=2
[0.000000]已禁用快速字符串操作
...
这将每5秒无限重复一次。所以我怀疑我的问题与SELinux有关。这是有道理的,因为Android 8在该领域引入了许多变化:


但是我不知道为什么其他人没有这个问题,也不知道该怎么办。

您是否尝试过从AVD向导中擦除emulator的数据

我也遇到了同样的问题,并在启动前通过擦除emulator解决了这个问题


问题很可能与GPU驱动程序有关尝试安装正确的GPU驱动程序。

有些GPU很难找到。如果找不到,请强制使用软件图形,如下所述

转到“虚拟设备设置”,然后转到“模拟性能”部分下的“软件作为图形”。这可能会显著降低性能。然而,它将毫无问题地工作

在AVD设置中,选择“模拟性能图形”选项中的“软件”,而不是“自动”或“硬件”

简单解决方案。 删除android文件夹。 重新安装android sdk。 删除用户文件夹中的avd设置。
创建新的AVD。

我发现这是主机上的SELinux问题。这是解决问题的一种方法:

sudo setsebool -P selinuxuser_execheap 1
还有更具体的方法。但是,您需要捕获异常以获得确切的命令:

通过执行以下操作暂时允许此访问:

ausearch -c 'qemu-system-x86' --raw | audit2allow -M my-qemusystemx86
semodule -X 300 -i my-qemusystemx86.pp
当然,您可以通过在主机上临时允许SELinux来进行测试


在我这样做之后,手机屏幕不再是黑色的

你的AVD配置是什么?另外,你有没有尝试从头开始创建一个新的AVD?我想其他人也有这个问题,比如,它可能与
/sepolicy
有关?尝试了几个AVD配置,只更改android版本就可以了。但这里有一个:设备:NexusOne,目标:Android 8.0.0-API级别26,CPU/ABI:Google API Intel Atom(x86_64),键盘:否,皮肤:带有动态硬件控件的皮肤,摄像头:无,RAM:512,堆:32,存储:200MB,仿真:使用主机GPUIt可能由图形的Linux驱动程序引起。您是否尝试过使用软件图形(虚拟设备设置)→ 同时,我将我的项目移植到AndroidStudio,并在所有SDK文件夹上进行了干净的安装。既然我不能核对你的答案,你就可以放心了。我试过了,但还是没用。我越来越确信,在Eclipse上开发Android 9显然是不可能的。与此同时,谷歌甚至让eclipse下载离线。试着通过终端或命令提示符以管理员的身份运行。这是第一次。