公告资讯

热门消息 > 星界云手机ADB直连+白名单玩法曝光,极客10分钟接入CI/CD流水线

星界云手机ADB直连+白名单玩法曝光,极客10分钟接入CI/CD流水线

2026-03-28

“测试同学凌晨两点还在公司蹲 Monkey,结果本地 Docker-Android 容器把宿主机 CPU 拉爆,CI 流水线直接红成一片。”
—— 某上市电商 QA 负责人在知乎匿名吐槽,点赞 2.3k

这条高赞回答背后,是移动端 DevOps 的老大难问题:真机池维护贵、模拟器性能拉胯、本地 Docker 隔离强却帧率不稳。今天,星界云手机把 ADB over TCP 全端口开放,再加「IP 白名单」一键封门,10 分钟就能让云手机化身 CI 流水线里的“安卓特工”,成本还比本地方案腰斩。怎么玩?直接上干货。


1. ADB over TCP + IP 白名单:把云手机装进“安全保险箱”

星界云手机默认关闭 ADB,需在控制台手动开启。开启时必须填写公网 IP 白名单(支持段写法),单数据中心一次生效,子账号也能用,但改白名单只能主账号操作,从源头杜绝“谁都能连”的裸奔风险。
开启后系统会分配一个 ip:port 格式的 ADB 地址,端口走 TCP 5555,TLS 不做额外封装,原生 adb 命令直接敲,对现有脚本零改造。

安全设计小抄
- 白名单仅支持公网 IP,内网地址无效
- 端口不随机,避免被扫描器撞库
- 关闭 ADB 立即断开所有长连接,不保留会话


2. Python 三件套:批量装包、截图、抓日志

本地装个 adbutils 就能玩。以下代码在 GitHub Actions ubuntu-latest 实测通过,一次并发 20 台云手机无压力。

# -*- coding: utf-8 -*-
# pip install adbutils==1.2.1
import adbutils, concurrent.futures, datetime

devices = [
    "101.42.xxx.1:5555",
    "101.42.xxx.2:5555",
    # … 更多星界云手机 ADB 地址
]

apk_path = "app-debug.apk"
screenshot_dir = "./screenshot"

def job(d):
    d = adbutils.adb.device(d)
    d.install(apk_path, nolaunch=True)
    d.shell("am start -n com.demo/.MainActivity")
    d.shell("logcat -d > /sdcard/logcat.txt")
    pull_log = f"/sdcard/logcat.txt {d.serial}_logcat.txt"
    d.pull("/sdcard/logcat.txt", f"{d.serial}_logcat.txt")
    sc = d.screenshot()
    sc.save(f"{screenshot_dir}/{d.serial}.png")
    return f"{d.serial} done"

with concurrent.futures.ThreadPoolExecutor(max_workers=20) as exe:
    print(list(exe.map(job, devices)))

跑完本地会多出 20 张截图 + 20 份 logcat,全程 90 秒,比真机插 USB 还快。


3. GitHub Actions nightly:Monkey 0 人工值守

把上面脚本封装成 monkey.yml,每晚 02:00 自动拉起星界云手机,跑 5 万事件,失败自动提 issue。

name: Nightly Monkey
on:
  schedule:
    - cron: '0 2 * * *'
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v4
        with: { python-version: '3.11' }
      - run: pip install adbutils
      - run: python monkey_star.py
        env:
          ADB_DEVICES: ${{ secrets.STAR_ADB_LIST }}  # 星界云手机地址列表

monkey_star.py 里加一行 d.shell("monkey -p com.demo --throttle 200 -v 50000") 即可。
第二天上班,GitHub 已贴心把 crash 堆栈贴在 Actions 日志里,真正 0 人工值守


4. 性能对比:云手机 vs 本地 Docker-Android

指标 本地 Docker-Android 星界云手机(尊享版)
冷启动 35 s 18 s
应用安装速度 21 MB/s 45 MB/s(内网通道)
平均帧率(GFXBench) 38 fps 54 fps(GPU 加速)
单节点并发 8 容器即 CPU 90% 20 台无压力
月成本(20 节点) ¥1600(8C16G 服务器) ¥1200(60 元/台/月)

数据说明一切:云手机更快、更稳、更便宜


5. 最佳实践:跑完即焚,成本立减 50%

星界云手机支持「按量」与「包月」双模式。CI 场景建议:

  1. 包月池保持 5 台低配比(普通版),做每日冒烟
  2. 高峰前 10 分钟通过 API 批量开通 50 台,跑完 Monkey 立即释放
  3. 释放后仅收取实际使用小时,综合成本再降 50%

配合 GitHub Actions 的 workflow_dispatch,还能让开发自己点按钮“一键要机”, QA 不再当资源守门员


6. 如何上车

  1. 打开 星界云手机官网 注册账号
  2. 控制台「云手机」→ 选型号 → 开通 1 天试用(联系客服或销售即可)
  3. 本地 adb connect ip:port 看到 device 即表示成功

Tips:试用默认不给 GPU 高配,如需直播专业版 1080P,跟销售提“DevOps 体验”即可秒开。


结语

当本地真机池还在吃灰、Docker-Android 帧率节节败退时,星界云手机用原生 ADB + IP 白名单把安卓环境直接搬到云端,10 分钟接入 CI/CD,Monkey、截图、日志全自动化,成本腰斩,效率翻倍。下一次流水线红灯,别再熬夜蹲机房——让云手机替你值夜班。