蜂壳云 / Phones Cloud

把云端 Android 命令放进不同队列

Phones Cloud ·

同一台设备上,截图、短查询、顺序 Shell 和后台任务不能用同一种执行语义处理。

远程执行一条 Shell 命令很简单:把参数发到设备,等待退出码和输出。真正麻烦的是多种工作同时出现。

截图希望立刻返回,短查询希望快速完成,一组 Shell 步骤希望按顺序执行,文件读取或安装任务可能持续更久。把它们放进同一个队列,会让慢任务影响交互任务。

队列语义写进请求

Shell Extension 的请求会携带请求编号、超时时间和队列类型。队列类型会直接表达调用方对执行方式的约束。

Immediate、Ordered、Background 让平台可以把“现在要结果”“这组命令要按顺序”“这个任务可以在后台跑”区分开,而不是把所有工作都压进一个 FIFO。

三类队列处理三类压力

Immediate 面向截图和短状态查询,保持交互反馈;Ordered 使用单线程顺序执行,适合一组有先后依赖的 Shell 操作;Background 承接文件读取和耗时任务。

这三个队列的区别不在名字,而在故障隔离。慢任务可以慢,但不应该让下一次截图也跟着慢;顺序任务可以排队,但不应该抢占即时交互。

执行器也有硬边界

设备侧执行器会限制全局并发,给命令设置超时,读取 stdout 的同时排空 stderr,并在输出超过上限时截断结果。

命令结束或超时后,执行器会清理进程,避免僵尸进程和阻塞管道长期占用设备资源。这些边界决定了自动化系统能不能长时间运行。

结果要能回到调用方

执行结果会带着请求编号、退出码、输出内容和是否截断等信息返回。调用方可以把这些字段接入测试报告、Agent 决策或运维脚本。

这样的接口不假设每条命令都会成功。它把失败也结构化返回,让上层系统可以重试、降级或把问题暴露给人工处理。

工程要点

  • Shell Extension 把执行语义放进请求,而不是藏在实现里。
  • Immediate、Ordered、Background 队列把交互、顺序任务和后台工作隔离开。
  • 超时、输出限制、进程清理和结构化结果让远程命令适合长期自动化。

查看开发者 CLI

用 phones-cloud-cli 体验截图、点击、输入、Shell 和 APK 安装等远程 Android 控制能力。