首页 > 解决方案 > 在模拟器上运行 AOSP 构建时出现错误“系统 UI 没有响应”

问题描述

我正在尝试在模拟器上运行 AOSP(oreo 8.1)构建。

我使用以下命令来构建 AOSP。

source build/envsetup.sh
lunch aosp_arm-eng
make -j4

我的构建成功了。现在我正在尝试使用以下命令在模拟器上运行。

emulator

模拟器以以下警告消息启动。

无法自动检测 ADB 二进制文件。在扩展设置页面中添加 ADB 的自定义路径之前,某些模拟器功能将无法使用。

成功启动后,模拟器上显示“系统 UI 没有响应”消息,模拟器运行速度也很慢。

非常感谢解决此问题的任何帮助。

模拟器截图:系统 ui 没有响应

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

标签: android-emulatorandroid-source

解决方案


它经常发生 - 特别是在运行 CPU 消耗仿真的慢速机器上,仿真器最初会加载到System UI isn't responding显示警报的状态。这并不一定意味着设备不工作;通常情况下,警报可以被解除,并且从那时起设备将完全正常工作。

我不确定这里要解决的确切问题是什么。尽管如此,假设您在 CI 上运行并且 - 除了模拟器的迟缓之外,希望克服System UI isn't responding启动完成时出现的警报(如标题所示) - 我可以建议这个 bash 脚本(要点)

#!/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 :-)"

该脚本等待启动器准备就绪并处于焦点位置,并自动关闭系统响应警报。

但是,它绝不会解决模拟器的迟缓问题。


推荐阅读