快速开始
把手机与电脑配对,然后从 shell、Python、Node.js 或 HTTP 发送你的第一批命令,大约只需五步。
本页为译文。如与英文版不一致,以英文版为准。 English
本页假设服务器、应用及其权限都已经装好。如果还没有,请先完成安装,大约需要十五分钟。本页要求电脑和手机连接同一个 Wi-Fi。
1. 启动服务器
在电脑的终端中运行:
droidline serve
让它保持运行。下面的所有操作都在第二个终端中进行。
2. 配对手机
配对就是让手机和电脑互相认识一次。它们交换密钥,此后就能识别对方,并加密彼此之间的所有通信。每部手机只需配对一次。
-
在电脑上运行:
droidline pair终端中会出现一个二维码。它在 10 分钟内有效,只能配对一部手机。
-
在手机上打开 Droidline,进入配对标签页,点击扫描二维码。
-
把摄像头对准终端。应用会显示已与 …… 配对,中间是你电脑的名称。
手机没有摄像头,或者二维码扫不出来时,使用这种方式。
-
在手机上打开 Droidline,进入配对标签页,点击在此 Wi-Fi 下配对。
-
应用会在网络中查找你的电脑。如果出现不止一台,选择你的那一台。随后应用会显示一个 6 位代码,5 分钟内有效。
-
在电脑上输入这个代码。
--name给手机起一个简短的名字,之后会用到:droidline pair 482913 --name shelf-01
3. 检查手机是否在线
droidline devices
NAME ID MODEL ANDROID STATE ROUTE MISSING
shelf-01 k7d2q9xa SM-S921N 14 online lan notif,vpn
STATE应该是online。ROUTE显示手机连接电脑的方式。lan表示直接通过你的 Wi-Fi。MISSING列出手机上仍未开启的权限:a11y(无障碍服务)、ime(Droidline 键盘)、notif(通知使用权)、vpn(VPN 权限)和capture(屏幕截图,只在 Android 9 和 10 上请求)。只有a11y和ime是必需的,所以这里的notif,vpn没有问题。
4. 发送第一批命令
下面每个示例都会在手机上打开“设置”应用,点击其中一项,然后读回当前显示的是哪个界面。选择你想用的语言所在的标签页。
droidline launch com.android.settings
droidline touch text "网络和互联网"
droidline currentfrom droidline import connect
d = connect() # 唯一在线的手机
d.launch("com.android.settings") # 打开设置
d.touch("text", "网络和互联网")
print(d.current()) # {'package': 'com.android.settings', 'activity': ...}import { connect } from "droidline";
const d = await connect(); // 唯一在线的手机
await d.launch("com.android.settings"); // 打开设置
await d.touch("text", "网络和互联网");
console.log(await d.current()); // { package: 'com.android.settings', activity: ... }curl -s -X POST localhost:8780/devices/_/launch \
-H 'content-type: application/json' -d '{"package":"com.android.settings"}'
curl -s -X POST localhost:8780/devices/_/touch \
-H 'content-type: application/json' -d '{"by":"text","value":"网络和互联网"}'
curl -s -X POST localhost:8780/devices/_/current -H 'content-type: application/json'把 Python 示例保存为 first.py,用 python first.py 运行;或者把 Node.js 示例保存为 first.mjs,用 node first.mjs 运行。.mjs 扩展名告诉 Node.js 这个文件使用 import。
5. 查看屏幕上有什么
要操作一个界面,你需要知道 Droidline 是怎样看待它的。dump 把屏幕保存为一棵元素树,screenshot 保存一张图片:
droidline dump screen.json
droidline screenshot screen.pngd.dump("screen.json")
d.screenshot("screen.png")await d.dump("screen.json");
await d.screenshot("screen.png");curl -s -X POST localhost:8780/devices/_/dump -H 'content-type: application/json' > screen.json
curl -s localhost:8780/devices/_/screenshot.png -o screen.png打开 screen.json,搜索你在手机上看到的文字。每个元素都有 text、id 和 desc;这些就是你传给 touch 的值。查找元素说明了如何在它们之间选择。