AOSP 构建无法在模拟器上启动(黑屏)

时间:2021-05-19 23:50:22

标签: android macos android-emulator android-source

关于构建 AOSP 图像并使用所述图像运行模拟器导致黑屏的问题有多种答案,有些方法可以追溯到很长一段时间,很多没有答案。我现在已经尝试了多台 macOS 机器,多个映像构建,相同的结果 - 启动时黑屏。 ADB 在启动后将模拟器显示为离线,因此这不仅仅是图形问题。

我尝试了以下构建:

  • aosp_x86_64-userdebug
  • aosp_x86_64-eng
  • aosp_arm64-eng
  • sdk_phone_arm64-userdebug
  • aosp_tv_arm64-eng

分支:

  • 主线
  • android11_r37

机器/架构

  • macOS BigSur,M1 (aarm64) 16GB - 必须在此处使用预览模拟器
  • macOS BigSur,英特尔 (x86_64) 32GB

构建 AOSP 不是问题,除非涉及到 M1 并且需要 11.x MacOSSDK。我能够在必要的地方修补构建以完成构建 - 这一切都在 build/soong 中,所以它不是需要更改的实际 AOSP 代码。

在启动模拟器时,我还尝试了各种 GPU 选项,以防出现图形渲染问题。 CoreAudio 没有在 M1 Mac 上初始化会出现一些问题,但禁用音频可以解决这个问题。

据我所知,使用 -debug-init-verbose 模拟器标志没有任何问题。所有的图像文件都在那里(一个构建由于某种原因没有构建 userdata.img)。

这是使用 asp_tv_arm64-eng 的最新 M1 构建的日志:

emulator: Android emulator version 30.3.5.0 (build_id 7036990) (CL:N/A)
emulator: Found ANDROID_PRODUCT_OUT: /Volumes/android/out/target/product/generic_arm64
emulator: Found build target architecture: arm64
emulator: argv[0]: '/Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/emulator'; program directory: '/Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator'
emulator: emuDirName: '/Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator'
emulator: try dir /Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator
emulator: Trying emulator path '/Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/qemu/darwin-aarch64/qemu-system-aarch64'
emulator: Found target-specific 64-bit emulator binary: /Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/qemu/darwin-aarch64/qemu-system-aarch64
emulator: Adding library search path: '/Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/lib64'
emulator: Adding library search path: '/Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/lib64/gles_angle'
emulator: Adding library search path: '/Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/lib64/gles_angle9'
emulator: Adding library search path: '/Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/lib64/gles_angle11'
emulator: Adding library search path: '/Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/lib64/gles_swiftshader'
emulator: Adding library search path for Qt: '/Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/lib64/qt/lib'
emulator: Silencing all qWarning(); use qCWarning(...) instead: QT_LOGGING_RULES=default.warning=false
emulator: Setting Qt plugin search path: QT_QPA_PLATFORM_PLUGIN_PATH=/Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/lib64/qt/plugins
emulator: Setting Qt to use software OpenGL: QT_OPENGL=software
emulator: Setting QML to use software QtQuick2D: QMLSCENE_DEVICE=softwarecontext
emulator: Overriding pre-existing bad Qt high dpi settings...
emulator: Running :/Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/qemu/darwin-aarch64/qemu-system-aarch64
emulator: qemu backend: argv[00] = "/Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/qemu/darwin-aarch64/qemu-system-aarch64"
emulator: qemu backend: argv[01] = "-noaudio"
emulator: qemu backend: argv[02] = "-verbose"
emulator: Concatenated backend parameters:
 '/Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/qemu/darwin-aarch64/qemu-system-aarch64' -noaudio -verbose
emulator: found Android build root: /Volumes/android/out/target/product/generic_arm64
emulator: found Android build out:  /Volumes/android/out/target/product/generic_arm64
emulator: Cannot find boot properties file: /Volumes/android/out/target/product/generic_arm64/boot.prop

emulator: Found target API sdkVersion: 30

emulator: Invalid int property: 'ro.build.version.incremental:eng.paulba.20210518.135049'
emulator: autoconfig: -skin HVGA
emulator: autoconfig: -skindir (null)
emulator: autoconfig: -kernel /Volumes/android/out/target/product/generic_arm64/kernel-ranchu
emulator: Target arch = 'arm64'
emulator: Auto-detect: Kernel image requires new device naming scheme.
emulator: Auto-detect: Kernel does not support YAFFS2 partitions.
emulator: autoconfig: -ramdisk /Volumes/android/out/target/product/generic_arm64/ramdisk.img
emulator: autoconfig: -sysdir /Volumes/android/out/target/product/generic_arm64
emulator: Using initial system image: /Volumes/android/out/target/product/generic_arm64/system.img
emulator: system partition size adjusted to match image file (1055 MB > 800 MB)

emulator: Using initial vendor image: /Volumes/android/out/target/product/generic_arm64/vendor.img
emulator: autoconfig: -data /Volumes/android/out/target/product/generic_arm64/userdata-qemu.img
emulator: autoconfig: -initdata /Volumes/android/out/target/product/generic_arm64/userdata.img
emulator: autoconfig: -cache /Volumes/android/out/target/product/generic_arm64/cache.img
emulator: INFO: ignore sdcard for arm at api level >= 30
emulator: Physical RAM size: 2048MB

emulator: VM heap size 0MB is below hardware specified minimum of 512MB,setting it to that value
emulator: System image is read only
emulator: autoconfig: -no-snapshot from AVD config.ini
emulator: Found 1 DNS servers: 192.168.4.1
emulator: skin name 'HVGA' aliased to '320x480'
emulator: found magic skin width=320 height=480 bpp=16

emulator: registered 'boot-properties' qemud service
emulator: Adding boot property: 'qemu.cmdline' = 'androidboot.logcat=v:* androidboot.consolepipe=qemu_pipe,pipe:logcat'
emulator: Adding boot property: 'qemu.logcat' = 'start'
emulator: WARNING: encryption is off
emulator: CPU Acceleration: working
emulator: CPU Acceleration status: Hypervisor.Framework OS X Version 11.4
handleCpuAcceleration: feature check for hvf
emulator: VERBOSE: AdbInterface.cpp:356:  no root specified: 
emulator: VERBOSE: AdbInterface.cpp:356:  no root specified: 
emulator: VERBOSE: AdbInterface.cpp:386: Found: 1 adb executables
emulator: VERBOSE: AdbInterface.cpp:388: Adb: /Volumes/android/out/soong/host/darwin-x86/bin/adb
emulator: VERBOSE: AdbInterface.cpp:410: Path:/Volumes/android/out/soong/host/darwin-x86/bin/adb protocol version: 41
emulator: GPU emulation enabled using 'host' mode
emulator: Initializing hardware OpenGLES emulation support
emulator: VERBOSE: MultiDisplay.cpp:325: create display 0
emulator: VERBOSE: MultiDisplay.cpp:414: setDisplayPose 0 x 0 y 0 w 320 h 480 dpi 0
cannot add library /Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/qemu/darwin-aarch64/lib64/vulkan/libvulkan.dylib: failed
cannot add library /Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/lib64/vulkan/libvulkan.dylib: failed
cannot add library /Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/qemu/darwin-aarch64/lib64/vulkan/libMoltenVK.dylib: failed
added library /Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/lib64/vulkan/libMoltenVK.dylib
[mvk-info] MoltenVK version 1.1.1. Vulkan version 1.1.154.
        The following 70 Vulkan extensions are supported:

    (Elided for brevity)

[mvk-info] Created VkInstance with the following 0 Vulkan extensions enabled:
[mvk-info] Using MTLFence for Vulkan semaphores.
[mvk-info] Created VkDevice to run on GPU Apple M1 with the following 0 Vulkan extensions enabled:
emulator: VERBOSE: load_config.cpp:242: Verified boot params were not found.
emulator: INFO: ignore sdcard for arm at api level >= 30
emulator: Found 1 DNS servers: 192.168.4.1
Content of hardware configuration file:
  hw.cpu.arch = arm64
  hw.cpu.ncore = 2
  hw.ramSize = 2048

    (Elided for brevity)

.
QEMU options list:
emulator: argv[00] = "/Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/qemu/darwin-aarch64/qemu-system-aarch64"
emulator: argv[01] = "-dns-server"
emulator: argv[02] = "192.168.4.1"
emulator: argv[03] = "-no-audio"
emulator: argv[04] = "-serial"
emulator: argv[05] = "null"
emulator: argv[06] = "-cpu"
emulator: argv[07] = "cortex-a53"
emulator: argv[08] = "-machine"
emulator: argv[09] = "type=virt"
emulator: argv[10] = "-enable-hvf"
emulator: argv[11] = "-smp"
emulator: argv[12] = "cores=2"
emulator: argv[13] = "-m"
emulator: argv[14] = "2048"
emulator: argv[15] = "-lcd-density"
emulator: argv[16] = "320"
emulator: argv[17] = "-nodefaults"
emulator: argv[18] = "-kernel"
emulator: argv[19] = "/Volumes/android/out/target/product/generic_arm64/kernel-ranchu"
emulator: argv[20] = "-initrd"
emulator: argv[21] = "/Volumes/android/out/target/product/generic_arm64/ramdisk.img"
emulator: argv[22] = "-drive"
emulator: argv[23] = "index=0,id=vendor,if=none,file=/Volumes/android/out/target/product/generic_arm64/vendor.img,read-only"
emulator: argv[24] = "-device"
emulator: argv[25] = "virtio-blk-device,drive=vendor"
emulator: argv[26] = "-drive"
emulator: argv[27] = "index=1,id=userdata,if=none,file=/Volumes/android/out/target/product/generic_arm64/userdata-qemu.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576"
emulator: argv[28] = "-device"
emulator: argv[29] = "virtio-blk-device,drive=userdata"
emulator: argv[30] = "-drive"
emulator: argv[31] = "index=2,id=cache,if=none,file=/Volumes/android/out/target/product/generic_arm64/cache.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576"
emulator: argv[32] = "-device"
emulator: argv[33] = "virtio-blk-device,drive=cache"
emulator: argv[34] = "-drive"
emulator: argv[35] = "index=3,id=system,if=none,file=/Volumes/android/out/target/product/generic_arm64/system.img,read-only"
emulator: argv[36] = "-device"
emulator: argv[37] = "virtio-blk-device,drive=system"
emulator: argv[38] = "-netdev"
emulator: argv[39] = "user,id=mynet"
emulator: argv[40] = "-device"
emulator: argv[41] = "virtio-net-device,netdev=mynet"
emulator: argv[42] = "-device"
emulator: argv[43] = "virtio-rng-device"
emulator: argv[44] = "-show-cursor"
emulator: argv[45] = "-L"
emulator: argv[46] = "/Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/lib/pc-bios"
emulator: argv[47] = "-soundhw"
emulator: argv[48] = "hda"
emulator: argv[49] = "-append"
emulator: argv[50] = "qemu=1 no_timer_check androidboot.hardware=ranchu androidboot.serialno=EMULATOR30X3X5X0 keep_bootcon earlyprintk=ttyAMA0 android.qemud=1 console=0 android.checkjni=1 qemu.gles=1 qemu.settings.system.screen_off_timeout=2147483647 qemu.vsync=60 qemu.gltransport=pipe qemu.gltransport.drawFlushInterval=800 qemu.opengles.version=196608 qemu.uirenderer=skiagl cma=260M@0-4G loop.max_part=7 androidboot.boot_devices=a003800.virtio_mmio qemu.dalvik.vm.heapsize=512m qemu.camera_protocol_ver=1 printk.devkmsg=on"
emulator: argv[51] = "-android-hw"
emulator: argv[52] = "/Volumes/android/out/target/product/generic_arm64/hardware-qemu.ini"
Concatenated QEMU options:
 '/Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/qemu/darwin-aarch64/qemu-system-aarch64' -dns-server 192.168.4.1 -no-audio -serial null -cpu cortex-a53 -machine type=virt -enable-hvf -smp cores=2 -m 2048 -lcd-density 320 -nodefaults -kernel /Volumes/android/out/target/product/generic_arm64/kernel-ranchu -initrd /Volumes/android/out/target/product/generic_arm64/ramdisk.img -drive index=0,id=vendor,if=none,file=/Volumes/android/out/target/product/generic_arm64/vendor.img,read-only -device virtio-blk-device,drive=vendor -drive index=1,id=userdata,if=none,file=/Volumes/android/out/target/product/generic_arm64/userdata-qemu.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576 -device virtio-blk-device,drive=userdata -drive index=2,id=cache,if=none,file=/Volumes/android/out/target/product/generic_arm64/cache.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576 -device virtio-blk-device,drive=cache -drive index=3,id=system,if=none,file=/Volumes/android/out/target/product/generic_arm64/system.img,read-only -device virtio-blk-device,drive=system -netdev user,id=mynet -device virtio-net-device,netdev=mynet -device virtio-rng-device -show-cursor -L '/Users/builduser/Downloads/Android Emulator.app/Contents/MacOS/emulator/lib/pc-bios' -soundhw hda -append 'qemu=1 no_timer_check androidboot.hardware=ranchu androidboot.serialno=EMULATOR30X3X5X0 keep_bootcon earlyprintk=ttyAMA0 android.qemud=1 console=0 android.checkjni=1 qemu.gles=1 qemu.settings.system.screen_off_timeout=2147483647 qemu.vsync=60 qemu.gltransport=pipe qemu.gltransport.drawFlushInterval=800 qemu.opengles.version=196608 qemu.uirenderer=skiagl cma=260M@0-4G loop.max_part=7 androidboot.boot_devices=a003800.virtio_mmio qemu.dalvik.vm.heapsize=512m qemu.camera_protocol_ver=1 printk.devkmsg=on' -android-hw /Volumes/android/out/target/product/generic_arm64/hardware-qemu.ini
emulator: Android qemu version 30.3.5.0 (build_id 7036990) (CL:N/A)

emulator: Starting QEMU main loop
emulator: Adding boot property: 'ro.opengles.version' = '196608'
emulator: Adding boot property: 'qemu.sf.fake_camera' = 'none'
emulator: Adding boot property: 'dalvik.vm.heapsize' = '512m'
emulator: Adding boot property: 'qemu.hw.mainkeys' = '0'
emulator: Adding boot property: 'qemu.sf.lcd_density' = '320'
emulator: goldfish_events.have-dpad: false
emulator: goldfish_events.have-trackball: true
emulator: goldfish_events.have-camera: false
emulator: goldfish_events.have-keyboard: true
emulator: goldfish_events.have-lidswitch: false
emulator: goldfish_events.have-tabletmode: false
emulator: goldfish_events.have-touch: false
emulator: goldfish_events.have-multitouch: true
emulator: control console listening on port 5554, ADB on port 5555
Not using any http proxy
emulator: Adding boot property: 'qemu.timezone' = 'America/Los_Angeles'
emulator: android_hw_fingerprint_init: fingerprint qemud listen service initialized

emulator: INFO: GrpcServices.cpp:288: Started GRPC server at 127.0.0.1:8554, security: Local
emulator: emulator_window_fb_rotate

emulator: OpenGL Vendor=[Google (Apple)]
emulator: OpenGL Renderer=[Android Emulator OpenGL ES Translator (Apple M1)]
emulator: OpenGL Version=[OpenGL ES 3.0 (4.1 Metal - 71.6.2)]

对为什么我没有让模拟器启动映像有任何见解吗?

0 个答案:

没有答案