Android Studio 模拟器仅在使用 `nouveau` 驱动程序时崩溃,使用 `i915` 英特尔驱动程序时正常

Android Studio 模拟器仅在使用 `nouveau` 驱动程序时崩溃,使用 `i915` 英特尔驱动程序时正常

我在第一代上运行 Kubuntu 20.04LTSOptimus 启用ThinkPad T410s(双显卡,英特尔+英伟达)。

每当我运行 Android Studio 设备模拟器(根据官方说明安装依赖项)这里) 使用nouveau驱动程序时,虚拟设备打开了,但在第一次单击 UI 后崩溃。

i915在/intel驱动程序(Intel HD 显卡,i5-i540M 处理器)下运行它时,它运行正常。

i915在/驱动程序下启动但使用以下intel命令运行模拟器时env DRI_PRIME=1英伟达图形通过nouveau,它可以运行,但在第一次单击鼠标时崩溃。

我不使用专有的原因英伟达驱动程序(我的机器为 340.108)是:

  • 它在某种程度上破坏了 RANDR 行为
  • 无法且永远不会处理 DRI_PRIME

这就是为什么我选择坚持使用,当使用 调用时,nouveau它可以在这款 T410s ThinkPad 的板载芯片上以不错的速度运行。NVS3100Menv DRI_PRIME=1

当通过命令行运行模拟器时env DRI_PRIME=1 ~/Android/Sdk/tools/emulator -avd Galaxy_Note_3_API_25 &,我看到的是:

handleCpuAcceleration: feature check for hvf
emulator: INFO: QtLogger.cpp:68: Warning: QXcbIntegration: Cannot create platform OpenGL context, neither GLX nor EGL are enabled ((null):0, (null))


emulator: INFO: QtLogger.cpp:68: Warning: QMetaObject::connectSlotsByName: No matching signal for on_new_posture_requested(int) ((null):0, (null))


emulator: INFO: QtLogger.cpp:68: Warning: QMetaObject::connectSlotsByName: No matching signal for on_dismiss_posture_selection_dialog() ((null):0, (null))


emulator: Warning: skin file button uses unknown key name 'menu'
emulator: Warning: skin file button uses unknown key name 'dpad-select'
emulator: Warning: skin file button uses unknown key name 'T'
emulator: Warning: skin file button uses unknown key name 'NEXT'
cannot add library /home/dmayr/Android/Sdk/emulator/qemu/linux-x86_64/lib64/vulkan/libvulkan.so: failed
added library /home/dmayr/Android/Sdk/emulator/lib64/vulkan/libvulkan.so
emulator: INFO: GrpcServices.cpp:315: Started GRPC server at 127.0.0.1:8554, security: Local
emulator: INFO: EmulatorAdvertisement.cpp:93: Advertising in: /run/user/1000/avd/running/pid_229634.ini
emulator: ERROR: AdbHostServer.cpp:102: Unable to connect to adb daemon on port: 5037

# Upon clicking the UI
[1]  + 229634 segmentation fault (core dumped)  env DRI_PRIME=1 ~/Android/Sdk/tools/emulator -avd Galaxy_Note_3_API_25

我想启动 Android Studio 模拟器,利用英伟达芯片,但迄今为止这还是不可能的。

你们中有人遇到过这种情况吗?

您是否找到了解决方法,或者您是否坚持在集成英特尔视频上运行模拟器(我目前的情况)?

答案1

我在 Ubuntu 22.04 上测试 nouveau 驱动程序时发现了类似的问题;尝试了一些可能相关的建议那么问题来了没有成功,因为模拟器要么崩溃,要么冻结我的整个系统。

在 AVD 配置中禁用“启用键盘输入”选项似乎有助于防止我的系统冻结,但最终我不得不回去使用 NVIDIA 的专有驱动程序

系统详细信息:

Ubuntu 22.04 LTS
NVIDIA GeForce GTX 1070
xserver-xorg-video-nouveau/jammy 1:1.0.17-2build1 amd64
Android emulator version 31.3.9.0 (build_id 8700579) (CL:N/A)

这是运行android模拟器的输出:emulator @myapp

INFO    | Android emulator version 31.3.9.0 (build_id 8700579) (CL:N/A)
emulator: INFO: Found systemPath ~/android-sdk/system-images/android-29/google_apis_playstore/x86/
emulator: INFO: Found systemPath ~/android-sdk/system-images/android-29/google_apis_playstore/x86/
INFO    | Duplicate loglines will be removed, if you wish to see each indiviudal line launch with the -log-nofilter flag.
INFO    | configAndStartRenderer: setting vsync to 60 hz
WARNING | cannot add library ~/android-sdk/emulator/qemu/linux-x86_64/lib64/vulkan/libvulkan.so: failed
INFO    | added library ~/android-sdk/emulator/lib64/vulkan/libvulkan.so
WARNING | *** No gRPC protection active, consider launching with the -grpc-use-jwt flag.***
INFO    | Started GRPC server at 127.0.0.1:8554, security: Local, auth: none
INFO    | Advertising in: /run/user/1000/avd/running/pid_7443.ini
INFO    | setDisplayConfigs w 1080 h 2280 dpiX 440 dpiY 440
nouveau: kernel rejected pushbuf: No such device
nouveau: ch2: krec 0 pushes 1 bufs 3 relocs 0
nouveau: ch2: buf 00000000 00000003 00000004 00000004 00000000 0x7f7b1227f000 0xb0000 0x80000
nouveau: ch2: buf 00000001 00000006 00000004 00000000 00000004 0x7f7ba785e000 0x14000 0x1000
nouveau: ch2: buf 00000002 0000008e 00000002 00000000 00000002 (nil) 0x99c000 0x1000
nouveau: ch2: psh 00000000 000002bd08 000002bd54
nouveau:        0x20024062
nouveau:        0x00000000
nouveau:        0x0099c200
nouveau:        0x20024060
nouveau:        0x00000018
nouveau:        0x00000001
nouveau:        0xa007406c
nouveau:        0x00001001
nouveau:        0xbf800000
nouveau:        0xbf800000
nouveau:        0x40400000
nouveau:        0xbf800000
nouveau:        0xbf800000
nouveau:        0x40400000
nouveau:        0x200406c0
nouveau:        0x00000000
nouveau:        0x00014000
nouveau:        0x000002e9
nouveau:        0x1000f010
qemu-system-x86_64: ../nouveau/pushbuf.c:730: nouveau_pushbuf_data: Assertion `kref' failed.
[1]    7443 IOT instruction (core dumped)  emulator @myapp

相关内容