Android 开始使用
本指南将带你完成使用 Midscene 自动化 Android 设备所需的一切:通过 adb 连接真机、配置模型 API Key、体验零代码 Playground,并运行你的首个 JavaScript 脚本。
使用 JavaScript 控制 Android 设备:https://github.com/web-infra-dev/midscene-example/blob/main/android/javascript-sdk-demo
集成 Vitest 进行测试:https://github.com/web-infra-dev/midscene-example/tree/main/android/vitest-demo
配置 AI 模型服务
将你的模型配置写入环境变量,可参考 模型策略 了解更多细节。
准备工作
在编写脚本前,先确认 adb 能够连接设备且设备信任当前电脑。
安装 adb 并设置 ANDROID_HOME
- 通过 Android Studio 或 命令行工具 安装 adb
- 验证安装是否成功:
出现类似输出表示安装成功:
- 按 Android environment variables 设置
ANDROID_HOME,并验证:
有输出即代表配置成功:
启用 USB 调试并验证设备
在系统设置的开发者选项中开启 USB 调试(若有 USB 调试(安全设置) 也请一并开启),然后用数据线连接手机。

验证连接:
出现类似输出代表连接成功:
试用 Playground(零代码)
Playground 是验证连接、观察 AI Agent 的最快方式,无需编写代码。它与 @midscene/android 共享相同的代码实现,因此在 Playground 上验证通过的流程,用脚本运行时也完全一致。
- 启动 Playground CLI:
- 点击 Playground 窗口中的齿轮按钮,粘贴你的 API Key 配置。如果还没有 API Key,请回到 模型配置 获取。

开始体验
配置完成后,你可以立即开始体验 Midscene。它提供了多个关键操作 Tab:
- Act: 与网页进行交互,这就是自动规划(Auto Planning),对应于
aiAct方法。比如
- Query: 从界面中提取 JSON 结构的数据,对应于
aiQuery方法。
类似的方法还有 aiBoolean(), aiNumber(), aiString(),用于直接提取布尔值、数字和字符串。
- Assert: 理解页面,进行断言,如果不满足则抛出错误,对应于
aiAssert方法。
- Tap: 在某个元素上点击,这就是即时操作(Instant Action),对应于
aiTap方法。
关于自动规划(Auto Planning)和即时操作(Instant Action)的区别,请参考 API 文档。
集成 Midscene Agent
当 Playground 运行正常后,就可以切换到可复用的 JavaScript 脚本。
第 1 步:安装依赖
第 2 步:编写脚本
下面的示例会在设备上打开浏览器、搜索 eBay,并断言结果列表。
第 3 步:运行示例
第 4 步:查看报告
脚本成功后会输出 Midscene - report file updated: /path/to/report/some_id.html。在浏览器中打开该 HTML 文件即可回放每一步交互、查询与断言。
进阶
当你需要自定义设备行为、把 Midscene 接入独立框架,或排查 adb 问题时,可参考本节内容。更多构造函数参数可前往 API 参考(Android)。
扩展 Android 上的 Midscene
使用 defineAction() 定义自定义手势,并通过 customActions 传入。Midscene 会把自定义动作追加到规划器中,让 AI 可以调用你领域特定的动作名。
关于自定义动作和动作 Schema 的更多解释,请参阅 与任意界面集成。
常见问题
为什么连接了设备,但仍然无法控制?
一个典型的错误信息是:
请在系统设置的开发者选项中确认以下选项已开启:
- USB 调试
- USB 调试(安全设置)(如果存在)

输入文本后,输入框内容被清空或消失
Midscene 在输入文本后会自动隐藏键盘,默认行为是发送 ESC 按键事件。然而,部分输入框(尤其是 WebView 中的输入框)会监听 ESC 按键事件,导致以下副作用:
- 清空刚输入的文本
- 关闭包含输入框的弹窗或模态框
- 导航离开当前页面
你可以按以下优先级逐步尝试解决:
方案一:改用 BACK 键(Android 返回键)隐藏键盘
将 keyboardDismissStrategy 设为 'back-first',用 Android BACK 键替代 ESC 键来隐藏键盘:
方案二:关闭自动隐藏键盘
如果你的输入框同时监听了 BACK 键,可以彻底关闭自动隐藏键盘,由 AI Agent 或后续操作自行管理 键盘状态:
关闭后键盘不会自动隐藏,可能导致键盘覆盖大量屏幕区域。你可以通过以下方式应对:
- 使用
aiAct指令手动隐藏键盘,例如await agent.aiAct('点击键盘上的收起按钮') - 安装并切换到 ADBKeyBoard——这是一款极小面积的虚拟键盘,即使不隐藏也几乎不影响屏幕操作
如何使用自定义的 adb 路径或远程 adb 服务器?
通过环境变量设置:
也可以通过 AndroidDevice 构造函数传入:
更多
- 查看所有 Agent 方法:API 参考(通用)
- Android 专属参数与接口:Android Agent API
- 示例项目
- Android JavaScript SDK 示例:https://github.com/web-infra-dev/midscene-example/blob/main/android/javascript-sdk-demo
- Android + Vitest 示例:https://github.com/web-infra-dev/midscene-example/tree/main/android/vitest-demo

