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

Bitbucket流水线中Android模拟器APK安装失败问题求助

解决Bitbucket流水线中armeabi-v7a AVD插桩测试安装失败问题

针对你遇到的ShellCommandUnresponsiveException、UtpException等测试APK安装失败问题,可以按以下步骤逐一排查解决:

  • 确保模拟器完全启动就绪
    armeabi-v7a模拟器启动速度远慢于x86_64版本,不要在模拟器启动后立刻执行测试。添加等待脚本确认系统完全启动:

    adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done'
    

    这条命令会等待模拟器的系统启动完成信号,避免因系统未就绪导致的安装超时。

  • 调整ADB安装超时阈值
    默认ADB安装超时时间较短,不足以应对armeabi架构的慢安装速度。在流水线中添加环境变量:

    export ADB_INSTALL_TIMEOUT=120
    

    同时在项目根目录的gradle.properties中添加配置:

    android.adbInstallTimeout=120000
    

    双保险延长安装超时时间(单位分别为秒和毫秒)。

  • 优化AVD启动参数
    启动模拟器时分配更多系统资源,避免因内存或存储空间不足导致安装失败:

    emulator -avd your_armeabi_avd -no-window -no-audio -no-boot-anim -partition-size 2048 -memory 2048
    

    -partition-size增大模拟器存储分区,-memory分配更多运行内存,减少资源瓶颈。

  • 修复UtpException传输问题
    该错误多与ADB传输协议有关,强制ADB使用TCP协议:

    adb kill-server && adb start-server
    adb tcpip 5555
    adb connect localhost:5555
    

    重启ADB守护进程并切换到TCP连接,避免USB模拟层的兼容性问题。

  • 排查流水线环境依赖
    确保Docker镜像中安装了armeabi模拟器所需的底层库:

    apt-get update && apt-get install -y libncurses5 libstdc++6
    

    缺失这些库可能导致模拟器后台进程无响应,进而引发ShellCommandUnresponsiveException。

  • 优化Gradle测试命令
    运行测试时禁用缓存并关闭调试等待,减少不必要的延迟:

    ./gradlew connectedAndroidTest --no-build-cache -Pandroid.testInstrumentationRunnerArguments.waitForDebugger=false
    

如果以上步骤仍未解决问题,建议在测试失败前执行adb logcat -d > logcat.txt导出日志,查看APK安装时的具体错误信息(如签名不匹配、存储空间不足等),进一步定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:27:20