Android-эмулятор (AVD) не загружается в MacOS

Мой эмулятор Android не загружается, когда целевой платформой является уровень 26 (Android 8.0.0) или выше. Эмулятор просто показывает черный экран, пока процесс эмулятора постоянно работает прибл. 100% процессор. Обратите внимание, что уровень 25 и ниже работают нормально.

Вот что я обнаружил до сих пор:

Я запустил эмулятор из командной строки, чтобы проверить logcat:

./emulator -avd Test2 -logcat '*:e'

Здесь выдержка из логарифма:

[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.18.91+ ([email protected]) (gcc version 4.9 20140827 (prerelease) (GCC) ) #1 SMP PREEMPT Tue Jan 9 20:30:51 UTC 2018
[    0.000000] Command line: qemu=1 androidboot.hardware=ranchu clocksource=pit androidboot.console=ttyS0 android.qemud=1 console=0 console=0 android.checkjni=1 qemu.gles=1 androidboot.logcat=*:e androidboot.selinux=permissive ndns=2 ndns=2
[    0.000000] Disabled fast string operations
... 
(skipping a few hundred lines)
...
[    1.443608] init: init first stage started!
[    1.443608] init: Using Android DT directory /proc/device-tree/firmware/android/
[    1.443608] init: First stage mount skipped (missing/incompatible fstab in device tree)
[    1.453842] init: Skipped setting INIT_AVB_VERSION (not in recovery mode)
[    1.453842] init: Loading SELinux policy
[    1.453842] selinux: SELinux:  Could not open /sepolicy:  No such file or directory
[    1.453842] 
[    1.463161] init: Failed to load monolithic SELinux policy: No such file or directory
[    1.463161] init: panic: rebooting to bootloader
[    1.463161] init: Reboot start, reason: reboot, rebootTarget: bootloader
[    1.472277] init: android::WriteStringToFile open failed: No such file or directory
[    1.472277] init: Shutdown timeout: 6
[    1.472277] init: terminating init services
[    1.472277] init: waitpid failed: No child processes
[    1.482231] init: Terminating running services took 0.013438 seconds with remaining services:0
[    1.482231] init: waitpid failed: No child processes
[    1.482231] init: vold not running, skipping vold shutdown
[    1.607664] init: powerctl_shutdown_time_ms:128:0
[    1.607664] init: Reboot ending, jumping to kernel
[    1.607664] reboot: Restarting system with command 'bootloader'
[    1.607664] reboot: machine restart
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.18.91+ ([email protected]) (gcc version 4.9 20140827 (prerelease) (GCC) ) #1 SMP PREEMPT Tue Jan 9 20:30:51 UTC 2018
[    0.000000] Command line: qemu=1 androidboot.hardware=ranchu clocksource=pit androidboot.console=ttyS0 android.qemud=1 console=0 console=0 android.checkjni=1 qemu.gles=1 androidboot.logcat=*:e androidboot.selinux=permissive ndns=2 ndns=2
[    0.000000] Disabled fast string operations
...

Это повторяется бесконечно каждые 5 секунд. Поэтому я подозреваю, что моя проблема связана с SELinux. Это имело бы смысл, так как Android 8 представила множество изменений в этой области: https://source.android.com/security/selinux/

Но я не знаю, почему у других нет этой проблемы и что с этим делать.

Ответы

Ответ 1

Я обнаружил, что это проблема 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 временно разрешающим для вашего хоста.

После того, как я это сделал, дисплей телефона больше не был черным.

Ответ 2

Вы пытались очистить данные эмулятора от мастера AVD?

У меня была такая же проблема, и я решил ее решить, пропустив эмулятор перед запуском.

enter image description here

Ответ 3

Вероятно, проблема связана с драйвером GPU. Попробуйте установить соответствующий драйвер графического процессора.

Трудно найти для некоторых графических процессоров. Если вы не можете найти его, принудительно используйте программную графику, как описано ниже.

Перейдите к настройкам виртуального устройства, а затем Software качестве графики в разделе эмулируемой производительности. Это может значительно снизить производительность. Однако он будет работать без проблем.

enter image description here

Ответ 4

Выберите "Программное обеспечение" в параметре "Эмутированная производительность", в настройках AVD вместо "Автоматический" или "Аппаратное обеспечение",

Ответ 5

Простое решение. Удалите папку Android. Переустановите android sdk. Удалите параметр avd внутри пользовательских папок. создать новый AVD.