选择语言

与 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 droidlinePython
Node.jsJavaScript 或 TypeScript 脚本、Web 后端Node.js 18+,npm install droidlineNode.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 OK
curl -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_HOST127.0.0.1服务器地址
DROIDLINE_PORT8780你的代码连接的端口
DROIDLINE_TOKEN无客户端令牌,服务器运行在另一台机器上时需要
DROIDLINE_DEVICE无没有指定手机时使用的手机

除非你修改 config.toml 中的 client.listen,服务器只接受来自同一台电脑的连接。要从另一台机器控制手机,请先阅读安全;正是客户端令牌把陌生人挡在门外。