快速开始

把手机与电脑配对,然后从 shell、Python、Node.js 或 HTTP 发送你的第一批命令,大约只需五步。

本页为译文。如与英文版不一致,以英文版为准。 English

本页假设服务器、应用及其权限都已经装好。如果还没有,请先完成安装,大约需要十五分钟。本页要求电脑和手机连接同一个 Wi-Fi。

1. 启动服务器

在电脑的终端中运行:

droidline serve

让它保持运行。下面的所有操作都在第二个终端中进行。

2. 配对手机

配对就是让手机和电脑互相认识一次。它们交换密钥,此后就能识别对方,并加密彼此之间的所有通信。每部手机只需配对一次。

  1. 在电脑上运行:

    droidline pair

    终端中会出现一个二维码。它在 10 分钟内有效,只能配对一部手机。

  2. 在手机上打开 Droidline,进入配对标签页,点击扫描二维码。

  3. 把摄像头对准终端。应用会显示已与 …… 配对,中间是你电脑的名称。

手机没有摄像头,或者二维码扫不出来时,使用这种方式。

  1. 在手机上打开 Droidline,进入配对标签页,点击在此 Wi-Fi 下配对。

  2. 应用会在网络中查找你的电脑。如果出现不止一台,选择你的那一台。随后应用会显示一个 6 位代码,5 分钟内有效。

  3. 在电脑上输入这个代码。--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 current
from 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.png
d.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 的值。查找元素说明了如何在它们之间选择。

下一步