最近我在 GitHub 上翻到一个项目:Droidline,挺有意思,分享给大家。

这个项目,先记住几个关键信息即可:

它干的事很简单,一句话概括:不用 ADB、不用数据线、不用 root,手机上装一个 App 扫码配对,PC 端就能用 Python、Node.js、命令行、HTTP 或 MCP 驱动这台真机。

先说它绕开了什么

Appium、uiautomator2 这套生态跑了这么多年,好用也确实好用,但使用限制还是挺多的,开发者选项、USB 调试、数据线,一个都不能少。测试真机一多,工位上就是一排排插,线松了、驱动抽风了、手机休眠了,脚本半夜挂掉的理由五花八门。想不带线,就得去云真机平台按时长掏钱。

Droidline 把这套全免了。手机端只装一个普通 App,开无障碍服务和自带的 Droidline 键盘,扫码跟 PC 配对,之后手机自己往外连,PC 一个端口都不用开。同 Wi-Fi 直接通,人在外面手机跑流量,走隧道或自建中继照样控,通信全程端到端加密,中继手里只有密文。

都能派什么活

两行命令,手机隔空连上电脑

PC 端 Windows、macOS、Linux 都有发布包,手机要 Android 9 及以上。手边没真机也没关系,发布包里带个 droidline-fakephone 模拟器,官方教程就是对着它写完第一个脚本的。

PC 端从 Releases 下载对应系统的包放进 PATH,手机装 droidline-agent.apk,然后两条命令

droidline serve
droidline pair

第一条起服务,第二条弹二维码,手机 App 扫一下就配对完成。没摄像头就点 App 里的「在此 Wi-Fi 下配对」,输它显示的 6 位码一样能连。连上就能点真机,先拿设置页练手

droidline launch com.android.settings
droidline touch text "Network & internet"

写 Python 的 pip install droidline,照着仓库自带的演示 App 跑一遍登录

from droidline import connect

d = connect()
d.launch("dev.droidline.demo")
if d.exists("text", "Close ad"):
    d.touch("text", "Close ad")
d.input("id", "email", "knife")
d.touch("text", "Log in")
print(d.get_text("id", "greeting"))

给 Claude Code 接 MCP 也只要一行

claude mcp add droidline -- droidline mcp

组件记三个就够上手。droidline serve 是常驻服务,所有入口都连它的 8780 端口;droidline pair 管配对;droidline mcp 是给 Agent 用的适配器。inspect(录脚本、荐选择器)、webdriver(让 Appium 客户端直接用)这些按需再开,不开就不占资源。

里面几个巧设计

一套规格生成五个入口。仓库根目录的 spec/commands.json 定义了全部命令和三语错误文案,Python、Node.js、.NET 三个 SDK 和 MCP 工具清单都由它生成,CI 里跑校验,SDK 方法跟规格不一致直接挂。所以 touch 在五个入口里都叫 touch,文档也只维护一份。做多端 SDK 的团队可以直接抄这个思路。

手机主动外连,PC 不开端口。方向反过来之后,安全模型也顺了,配对决定谁能控这台手机,握手之后每行通信都端到端加密,隧道和自建中继只是搬运密文。手机断网重连后从断点接着跑,执行中的命令由手机侧缓存应答,不会重跑一遍。

权限边界很克制。手机端只用无障碍服务和自装键盘,也就是普通 App 能拿到的权限,代价 README 里直接列了清单,解不开 PIN 锁,没有强停、清数据的单命令,打不开别的 App 没导出的页面。做工具先把「做不到什么」讲明白,这个比只是简单列功能列表有价值。

短板也得说清

版本还在 0.1,作者在 Status 页写明,服务端和 SDK 的测试目前都是对着手机模拟器跑的,跨品牌真机验证还在进行中,真要上生产,先拿自己的机器趟一遍。

游戏和自绘界面的 App 没有元素可拿,只能退回坐标点击加颜色判断。Android 15 起系统把一次性验证码从通知里藏起来了,只能知道码到了、去 App 里读。这些是无障碍权限路线的天然上限,不是修一版能解决的。

写在最后

工具本身可用可不用。Appium 生态成熟,团队的脚本资产都在那,没必要为了免一根线搬家。但思路值得学走。单源规格生成多端 SDK,省掉的是五端接口不一致的维护成本。手机主动外连加端到端加密,给远程控真机这件事立了一个安全上站得住的样板。把权限边界和做不到的事先写进 README,用户少踩坑,信任也来得快。

对测试开发来说,它最实际的价值有两个。真机回归的门槛降下来了,不插线不 root,短信验证码流程都能整条跑。MCP 一接,AI Agent 就能在真机上做探索性测试,这比在模拟器里点来点去接近真实得多。

项目地址:https://github.com/KnifeLemon/Droidline



↙↙↙阅读原文可查看相关链接,并与作者交流