选择语言
与 Droidline 通信的所有方式(Python、Node.js、CLI、HTTP、原始套接字和 MCP),各自最适合做什么,以及它们共用的设置。
本页为译文。如与英文版不一致,以英文版为准。 English
所有接口都与同一个服务器通信,即 127.0.0.1:8780 上的 droidline serve,而且都使用相同的命令名和相同的参数。touch 在哪里都是 touch。选择适合当前任务的那一种;也可以混合使用,例如用 Python 脚本跑例行任务,用 CLI 做快速检查。
| 接口 | 最适合 | 你需要 | 指南 |
|---|---|---|---|
| Python | 任意规模的脚本、数据处理、用 pytest 测试 | Python 3.9+,pip install droidline | Python |
| Node.js | JavaScript 或 TypeScript 脚本、Web 后端 | Node.js 18+,npm install droidline | Node.js |
| CLI | 快速检查、shell 和 PowerShell 脚本、cron 定时任务 | 不需要额外安装:droidline 程序本身 | CLI |
| HTTP | 没有 SDK 的语言、无代码工具、curl | 任意 HTTP 客户端 | HTTP |
| 原始套接字 | 任意语言的长时间运行程序、事件 | 一个 TCP 套接字和一个 JSON 解析器 | 其他语言 |
| MCP | 让 Claude 或 Cursor 等 AI 智能体使用手机 | 一个 MCP 客户端 | AI 智能体 |
同一条命令,处处相同
下面是同一条命令(点击文字为“OK”的元素)在各个接口中的写法:
d.touch("text", "OK")await d.touch("text", "OK");droidline touch text OKcurl -s -X POST localhost:8780/devices/_/touch \
-H 'content-type: application/json' -d '{"by":"text","value":"OK"}'{"id":1,"cmd":"touch","by":"text","value":"OK"}参数在所有接口中遵循相同的规则:
- 必需参数放在前面,顺序与命令参考中列出的一致。按位置传入。
- 可选参数可以省略,服务器会填入默认值。按名称传入:Python 中写
timeout=30,Node.js 中写{ timeout: 30 },CLI 中写--timeout 30,JSON 中写"timeout": 30。 - 用哪部手机:只有一部手机在线时不必说明。有多部时,选择其中一部:
connect("shelf-01")、--device shelf-01、/devices/shelf-01/...或"device": "shelf-01"。
它们都由同一个文件 commands.json 生成,所以新命令会同时出现在每种语言中。
所有接口都会读取的设置
这些环境变量会同样改变 SDK、CLI 和 MCP 适配器的默认值:
| 变量 | 默认值 | 含义 |
|---|---|---|
DROIDLINE_HOST | 127.0.0.1 | 服务器地址 |
DROIDLINE_PORT | 8780 | 你的代码连接的端口 |
DROIDLINE_TOKEN | 无 | 客户端令牌,服务器运行在另一台机器上时需要 |
DROIDLINE_DEVICE | 无 | 没有指定手机时使用的手机 |
除非你修改 config.toml 中的 client.listen,服务器只接受来自同一台电脑的连接。要从另一台机器控制手机,请先阅读安全;正是客户端令牌把陌生人挡在门外。