You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Jenkins运行Android模拟器遇超时错误,求启动等待完成脚本

解决Jenkins中Android模拟器启动超时问题并等待启动完成的脚本

错误原因分析

你遇到的TCP:5868连接超时问题,核心是-report-console tcp:5868,max=60设置的超时时间过短,Jenkins环境资源受限导致模拟器启动速度慢,触发控制台连接超时进而关闭模拟器。同时原命令没有内置等待模拟器完全启动的逻辑,无法确保后续操作正常执行。

改进后的启动脚本(Bash)

以下脚本会清理残留进程、启动模拟器并可靠等待其完全就绪,适配Jenkins运行环境:

#!/bin/bash

# 1. 清理残留的模拟器和adb进程,避免端口占用或冲突
pkill -f emulator || true
adb kill-server

# 2. 启动模拟器,后台运行并优化启动参数
echo "启动Android模拟器..."
emulator/emulator \
    -skin 1080x1920 \
    -ports 5784,5785 \
    -prop persist.sys.language=en \
    -prop persist.sys.country=US \
    -avd emulatorname \
    -wipe-data \
    -no-window \
    -no-audio \
    -no-boot-anim \
    -gpu off &  # 无GPU硬件时禁用,加快启动(按需移除)
EMULATOR_PID=$!

# 3. 等待模拟器被adb识别
echo "等待模拟器连接到adb..."
adb wait-for-device

# 4. 等待系统完全启动(直到boot_completed标记为1)
echo "等待Android系统启动完成..."
until adb shell getprop sys.boot_completed | grep -m 1 '1'; do
    sleep 5
done

# 5. 可选:解锁模拟器屏幕(适配需要交互的测试场景)
adb shell input keyevent 82

echo "模拟器已完全就绪,可执行后续测试任务"

# 脚本退出时自动清理模拟器进程
trap "kill $EMULATOR_PID 2>/dev/null; adb kill-server" EXIT

参数调整说明

  • 移除-report-console:改用adb内置命令监控状态,彻底避免TCP连接超时问题
  • 添加-no-audio、-no-boot-anim:减少不必要的资源消耗,加快启动速度
  • 添加-gpu off:Jenkins服务器无GPU硬件时,禁用GPU可避免启动失败(有GPU则移除该参数)
  • 后台运行模拟器:用&将进程放入后台,不阻塞脚本执行
  • 陷阱处理:脚本退出时自动杀死模拟器进程,避免残留资源占用

可选:保留-report-console的调整方案

如果必须使用控制台报告,可延长超时时间并改用本地套接字避免网络问题:

emulator/emulator ... -report-console unix:/tmp/emulator_console,max=120 ...

内容的提问来源于stack exchange,提问作者droid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:30:50