openSTF是什么

1. OpenSTF 是什么

1.1. OpenSTF(Smartphone Test Farm)是一套开源的 Android 真机管理与远程调试平台

1.2. 目标很纯粹:把一堆散落在机柜里的 Android 手机,变成 可共享、可观测、可自动化接入的“设备云”

1.3. 核心使用场景

  • 自动化测试(App / 系统 / ROM)
  • 远程调试(USB 不在你身边)
  • 设备资源池化(测试、研发、运维共享)

2. OpenSTF 能解决什么问题

2.1. 设备不可控

  • USB 直连 → 人肉插拔
  • OpenSTF → Web 即插即用

2.2. 调试链路割裂

  • adb / scrcpy / 日志 / 安装各自为政
  • OpenSTF → 统一入口 + 权限控制

2.3. 自动化难落地

  • CI 环境无法稳定占用真机
  • OpenSTF → API + token 化设备租用

3. OpenSTF 的核心能力拆解

3.1. 设备管理

  • 在线 / 离线状态
  • 设备锁定(防抢占)
  • 分组 / 标签

3.2. 远程操作

  • Web 实时投屏(WebSocket + H.264)
  • 远程触控 / 键盘
  • 截图 / 录屏

3.3. 调试与维护

  • adb over Web
  • APK 安装 / 卸载
  • Logcat / shell

3.4. 权限与审计

  • 用户 / 组
  • 设备访问控制
  • 操作记录(适合企业内网)

4. OpenSTF 架构

flowchart LR
    User[Browser / CI] -->|HTTP/WebSocket| STF_UI[OpenSTF Web UI]
    STF_UI --> STF_API[STF API Server]

    STF_API --> Auth[Auth Service]
    STF_API --> DB[(RethinkDB)]
    STF_API --> Triproxy[Triproxy]

    Triproxy --> Provider1[STF Provider
Host A] Triproxy --> Provider2[STF Provider
Host B] Provider1 --> Phone1[Android Device] Provider1 --> Phone2[Android Device] Provider2 --> Phone3[Android Device]

5. 关键组件说明

5.1. STF API

  • 核心调度中枢
  • 设备状态、锁定、分配

5.2. Provider

  • 真正“接管手机”的节点
  • 每台插手机的机器都要跑
  • 与 adb 强绑定

5.3. Triproxy

  • 端口转发枢纽
  • 解决多 Provider 场景下的 adb / stream 路由

5.4. 数据层

  • RethinkDB(状态型数据库)
  • 不适合频繁 schema 变更,但非常适合实时设备状态

6. 部署与运维层面的现实问题

6.1. 项目状态

  • OpenSTF 已停止官方维护
  • 但在内网、测试环境仍大量存活

6.2. 常见坑

  • Chrome 升级 → WebSocket 行为变化
  • 新 Android 版本 → adb 权限收紧
  • 大规模设备 → USB Hub / 供电是硬伤

6.3. 运维建议

  • 容器化部署(docker-compose / k8s)
  • Provider 与手机 一对多但别太贪
  • 强烈建议 USB 独立供电

  1. 与现代方案的对比(前瞻视角)
    7.1. OpenSTF 的定位
  • 真机
  • 内网
  • 强控制

OpenSTF 是

“一个把 adb 从命令行,拉进浏览器和 CI 世界的老派但可靠的工程系统”