Android CLI 支持 AI Agent 通过 Device Streaming 调试云真机

0 阅读2分钟

最近 Android CLI 正式支持 Android Device Streaming 这个还是挺实用的,等于是现在远程 Android 可以暴露成了一个标准 ADB endpoint 给 Agent ,然后 CLI 从申请设备到安装、操作、截图、抓日志、抓 trace 都可以留在终端里完成:

其实这些能力之前一直都有,只是 Android CLI 把之前在 Android Studio、ADB、Emulator、Firebase Device Streaming 里的能力统一整理成一套适合 Agent 调用的 Android runtime interface。

甚至申请设备这一步也进入 CLI 了,这次的 Android CLI 提供了完整的 android device remote 命令组,可以直接查询能用的 Google Cloud Project、浏览设备型号、创建 reservation、连接、延长 reservation、断开以及释放设备。

甚至 android device remote create 默认会在申请成功之后自动连接 ADB。

Agent 创建 reservation 后,Android CLI 会启动一个后台连接进程,把云端设备接到本机 ADB,然后 connect 命令返回之后,这个后台进程继续维持连接,所以后面的工具其实也不知道“这是一台云真机”,android run、android install、ADB、Logcat 或者其他基于 ADB 的工具都是原本流程。

一个完整流程类似这样:

android auth login
​
android device remote projects
android device remote models
​
android device remote create <device-codename>/<api> \
  --project=my-project
​
./gradlew assembleDebug
​
android run \
  --apks=app/build/outputs/apk/debug/app-debug.apk
​
android layout --pretty
​
android screen capture \
  --annotate \
  --output=screen.png

特别这里最后两步:

  • android layout 可以直接把当前 App 的 UI hierarchy 输出成 JSON,而且支持 --diff,只返回上一次检查之后发生变化的节点
  • 如果 UI hierarchy 不好用,比如 WebView、动画或者视觉元素,Agent 还可以执行 android screen capture --annotate,Android CLI 会在截图上检测 UI 元素并标成 #1、#2 这样的编号
  • 之后 screen resolve 能把 #5 直接解析成实际坐标,再交给 adb shell input tap

比如你让 Codex 修一个「Pixel 正常、Samsung 某机型启动后布局错位」的问题,以前 Agent 修改完代码,大概率只能说「建议你在 Samsung 真机上测试一下」,现在它理论上可以自己查询云端 Samsung 设备,然后申请真机、部署 APK、跑到对应页面、读取 layout 或截图,再根据结果继续修改。

唯一的限制就是 Android Device Streaming 目前每个项目每月只有 30 分钟免费额度,貌似就算是 Android Partner Device Labs 也是一样要钱,$9/小时 。

我甚至直接让 Dot 自己整起,设定好额度用免费的跑几次还是够的: