我正在尝试在仿真器上运行AOSP(oreo 8.1)。
我使用以下命令来构建AOSP。
source build/envsetup.sh
lunch aosp_arm-eng
make -j4
我的构建成功。现在,我正在尝试使用以下命令在模拟器上运行。
emulator
仿真器随以下警告消息启动。
无法自动检测到ADB二进制文件。在扩展设置页面中添加自定义ADB路径之前,某些仿真器功能将不起作用。
在成功启动后,模拟器上会显示“ 系统UI没有响应”消息,而且模拟器运行速度也很慢。
我们非常感谢您为解决此问题提供的帮助。
emulator screenshot: system ui isn't responding
emulator: WARNING: system partition size adjusted to match image file (2050 MB > 200 MB)
emulator: WARNING: encryption is off
main-loop: WARNING: I/O thread spun for 1000 iterations
答案 0 :(得分:1)
通常会发生这种情况-特别是在运行CPU消耗较大的仿真的慢速计算机上,仿真器最初会加载到显示System UI isn't responding
警报的状态。这并不一定意味着设备无法正常工作。从那时起,通常可以取消警报,并且设备将完全正常工作。
我不确定这里要解决的确切问题是什么。不过,假设您使用的是CI,并且-除了仿真器的呆滞之外,还希望克服System UI isn't responding
警报在启动完成时出现(如标题所示)-我可以建议this bash script (gist):
#!/bin/bash
echo ""
echo "[Waiting for launcher to start]"
LAUNCHER_READY=
while [[ -z ${LAUNCHER_READY} ]]; do
UI_FOCUS=`adb shell dumpsys window windows 2>/dev/null | grep -i mCurrentFocus`
echo "(DEBUG) Current focus: ${UI_FOCUS}"
case $UI_FOCUS in
*"Launcher"*)
LAUNCHER_READY=true
;;
"")
echo "Waiting for window service..."
sleep 3
;;
*"Not Responding"*)
echo "Detected an ANR! Dismissing..."
adb shell input keyevent KEYCODE_DPAD_DOWN
adb shell input keyevent KEYCODE_DPAD_DOWN
adb shell input keyevent KEYCODE_ENTER
;;
*)
echo "Waiting for launcher..."
sleep 3
;;
esac
done
echo "Launcher is ready :-)"
该脚本等待启动器准备就绪并聚焦,并自动关闭系统响应警报,直到其启动。
但是,它绝不能解决仿真器的呆滞现象。
答案 1 :(得分:0)
请参见另一个问题的this answer来解决ADB错误。但是,这可能无法修复模拟器的响应能力。
如果为与主机不同的体系结构编译aosp,则仿真器的运行速度往往非常慢。如果您在x86机器上进行构建,则x86的构建将使模拟器的运行速度大大提高,而不会消耗掉机器的所有资源。
答案 2 :(得分:0)
这个答案可能对像我这样犯过错误并且可以节省时间的人很有帮助。
我在物理设备上遇到了此问题,因为我使用了非常大的应用程序图标(2100x2100)。我通过使用较小尺寸(512x512)的应用图标解决了此问题。