AB
AiBoss
project

Droidline - 用代码或 AI 代理操控真实 Android 手机

Droidline 是一个 MIT 许可的开源项目,让你用 Python、Node.js、C#、命令行或 HTTP 操控真实 Android 手机,无需 ADB、USB 调试或 root。手机主动连出,可跨网络使用,也提供 MCP 入口供 AI 代理调用。本文依据仓库事实与项目自述,梳理其维护状态、主要能力、使用入口与已知限制。

Droidline 是一个用于自动化真实 Android 手机的开源工具。按项目自述,它面向几类场景:在真机上测试自己的应用、让一批手机每天跑同一套例行流程、把手机交给 AI 代理操作,以及做一些小型的个人自动化。它同时提供 Python、Node.js、C#、命令行与 HTTP 接口,并可作为 MCP 工具接入 AI 代理。项目强调不需要 ADB、不需要 USB 线、也不需要 root。

维护者与状态

仓库由 KnifeLemon 维护,地址为 github.com/KnifeLemon/Droidline,采用 MIT 许可证。仓库创建于 2026-10-07,最后一次提交在 2026-11-03,最新正式版本为 v0.1.13,发布于 2026-11-03。截至 2026-11-04 读取数据时,仓库获得 457 个星标。项目另有官网 droidline.dev。

从时间线看,这是一个相当年轻的项目:创建到最新版本不足一个月,版本号仍处于 0.1.x 阶段。使用者应把它当作早期工具来评估,接口与行为在后续版本中可能调整。

主要能力

以下能力均据项目 README 自述整理,未经独立验证。

  • 按元素而非坐标操作。 据项目说明,dump() 会把当前屏幕返回为一棵元素树,每个元素带有 text、id 和 desc;命令以字段加值的形式定位元素,例如 touch("id", "login")。当元素本身拒绝点击时,Droidline 会自行改点其父元素或边界中心。
  • 内置等待与条件判断。 README 称 touch、input 和 wait 会等待目标元素出现,默认 10 秒;而 exists、checked、which 这类条件立即返回,元素不存在时不会抛错。
  • 结构化错误。 每次失败都带错误码、英文/韩文/中文消息,以及一个表示重试是否有帮助的标志,例如 NOT_FOUND 并附带当前所在界面信息。
  • 多机管理。 一台 PC 可以驱动多台手机;发往同一台手机的命令按顺序执行,不同手机之间并行,每台手机可自行命名。
  • 按应用代理。 项目自述可通过本地 VPN 把指定应用流量转发到 socks5 或 http 上游,每台手机一个上游,且不需要 root。
  • 通知与手机数据。 可在 PC 上等待、响应、回复、打开或关闭通知,也可转发到签名 webhook;在手机上授权后,还能读写短信、读取通话记录与联系人、拨打电话、复制文件和读取位置。
  • 断网续跑。 带 cuts_network 的 batch 会在手机离线期间继续在设备上执行;掉线的手机恢复后从断点继续,飞行中的命令由手机缓存应答而非重复执行。
  • 可选工具。 droidline inspect 可查看屏幕与元素、给出选择器建议并录制脚本;droidline webdriver 允许 Appium 客户端驱动手机;此外还有 pytest 插件、脚本间共享手机的租约机制,以及面向无元素界面的图像与文本匹配。
  • 多语言界面。 应用、错误消息与文档提供英文、韩文和简体中文。

使用入口

源码与发布包位于 KnifeLemon/Droidline,项目介绍与在线演示位于 droidline.dev。

据项目说明,首次使用需要一台 PC(Windows、macOS 或 Linux)和一台 Android 9 或更高版本的手机,首次尝试时两者处于同一 Wi-Fi。大致流程是:在 PC 上运行服务端,在手机上安装配套应用并开启无障碍服务、Droidline 键盘、通知与不受限的电池使用,然后通过二维码或 6 位数字码配对,最后发送命令。

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

各语言客户端均连接本机 localhost:8780 上的服务端,命令名一致。Python 通过 pip install droidline 安装(要求 Python 3.9+),Node.js 通过 npm install droidline(Node.js 18+),C# 通过 dotnet add package Droidline(.NET 8+ 或 .NET Framework 4.6.2+)。HTTP 接口可直接用 curl 调用。AI 代理方面,README 给出了 MCP 配置示例,命令为 droidline、参数为 mcp,并可通过 --tools 或 --read-only 限制代理可用的工具范围。没有实体手机时,发布包中附带的 droidline-fakephone 可模拟一台设备。

许可与限制

项目采用 MIT 许可证。

据项目自述,Droidline 只使用普通应用可获得的权限,因此存在明确的能力边界:它无法打开其他应用未导出的界面(launch 只会打开起始页);无法解锁 PIN、图案或密码锁屏;也没有单条命令用于强制停止应用、清除应用数据或切换网络——由于设置界面因厂商、Android 版本和语言而异,项目改用逐步点击的配方来实现,使用者可能需要自行调整。

网络方面,手机始终主动向外建立连接,因此无需开放端口。项目列出同 Wi-Fi、端口转发、隧道和自建中继四种路径,并称握手之后每条连接均以仅由 PC 与手机持有的密钥加密(P-256 与 AES-256-GCM),隧道或中继只承载密文。这些均为项目自述,部署前建议对照仓库文档核实。