当前位置:首页>安卓APP>一个 APK 让 AI 直接操控安卓手机

一个 APK 让 AI 直接操控安卓手机

  • 2026-10-11 05:29:28
一个 APK 让 AI 直接操控安卓手机
数据来源:GitHub 官方仓库 danielealbano/android-remote-control-mcp(MIT 协议,v1.11.1,2026-08 更新)。文中工具数量、延迟、对比数据均来自该仓库文档。 

前两天我朋友甩我一句:"你说 AI 能不能替我把手机刷了?"我第一反应是他在整活。但还真有这么个东西——android-remote-control-mcp,一个直接跑在你安卓手机上的 MCP Server。装上之后,Claude 之类的 Agent 就能像人一样看屏幕、点按钮、打字、滑页面,甚至开相机、读通知、管文件。最离谱的是它不靠 ADB、不连电脑,动作延迟能压到 10 到 100 毫秒。我研究了一圈,今天把这玩意儿扒清楚讲给你听。

一、先说咱们以前是怎么让 AI 碰手机的

基本就两条路:要么 ADB 命令,要么截图丢给多模态模型做 OCR。但这两货都有硬伤,我踩过,你大概率也踩过。

第一,ADB 要线、要电脑。手机得用 USB 或者同一局域网连着一台跑 ADB 的主机,等于你桌上永远得杵台电脑。出个差、换张床,链路就断了。想远程?门都没有。

第二,延迟肉。市面上的 ADB 类 MCP,动作延迟普遍 1 到 4 秒。AI 点一下等两三秒,做个十几步的流程能把人急死,而且每一步都在烧 token。

第三,token 烧钱。ADB 工具返回的是原始 uiautomator XML 转储,动辄几千上万行节点,喂给模型就是一堆上下文。一次"看屏幕"就可能吃掉大几千 token,对话多走几轮直接爆。

第四,能力天花板低。多数 ADB 方案就十来个工具,点坐标、按返回、装 APK,再深的交互——比如"找到设置里那个开关并打开"——基本做不到,因为根本没有语义化的 UI 树,只有坐标。

这四点叠起来,ADB 那套只能算"能用",谈不上"好用"。

二、它怎么破局的:三个认知点

android-remote-control-mcp 的思路直接换了个底层:Server 跑在手机里,靠 Android 的无障碍服务(Accessibility Service)拿到完整 UI 树,再用 HTTP 暴露成 MCP 协议。三个认知帮你理解它强在哪。

认知一:它生在手机上,不在电脑上。整个 MCP Server 是用 Ktor + Netty 在 Android 里起了个 HTTP 服务,挂在 /mcp 端点,JSON 传输、不带 SSE。所以手机就是服务端,Agent 是客户端。你不用在电脑上装任何东西,只要手机能联网,Agent 就能连。

认知二:UI 树是语义化的,不是 XML dump。无障碍服务给的是带节点 ID、类型、可见性的结构化 UI 信息,项目还专门做了"token 高效屏幕状态"——返回精简过的节点列表,外加一张带包围盒和节点 ID 标注的缩略截图。同样是看一眼屏幕,它给模型的 token 量比原始 XML 少一个数量级。这也是它敢说延迟 10–100ms、还能跑多步自动化的底气。

认知三:认证和网络边界是分开管的。每个请求走 Bearer Token,或者设备上自签 OAuth 2.1 让 Claude.ai / Claude Desktop 自定义连接器扫码授权。绑定可以选 127.0.0.1 只本机,或者 0.0.0.0 走网络。想远程?它内置 Cloudflare Quick Tunnel 和 ngrok,一键给你一个公网 HTTPS 地址。换句话说,你在公司也能操控家里那台安卓。

三、56 个工具、13 大类,到底能干什么

工具量是真多。项目目前 56 个 MCP 工具,分 13 大类:屏幕感知、系统动作、触摸、手势、节点操作、文本输入、工具类、文件、应用管理、相机、意图、通知、定位。工具名默认 android_ 前缀,比如 android_tap;你配了设备别名(比如 pixel7),前缀就变成 android_pixel7_tap,多设备也不乱。

从我实用角度看,最能打的是这几组:

• 节点操作类:android_find_nodes 按条件找元素,android_click_node 直接点语义节点,不用算坐标。做"打开某 App → 进设置 → 关某个开关"这种流程,稳得一批。

•文本输入类:android_type_replace_text、android_type_clear_text,走 InputConnection,比往坐标里塞字符靠谱得多。

• 文件与相机类:android_read_file、android_take_camera_photo,直接在手机上读写文件、拍照存图;文件工具走 Storage Access Framework,权限可控。

• 通知类:android_notification_list 把通知拉出来,android_notification_reply 直接回复,等于 Agent 能替你处理消息。

四、四步跑起来(实操)

别被 56 个工具吓到,跑通核心链路就四步:

1. 装 APK。Android 13+ 设备,项目提供两个 Release:无 GMS 依赖的 FOSS 版(约 176MB,适合第三方 ROM)和带 GMS 的版(约 177MB,标准设备)。核对文件大小防下错。

2. 开无障碍服务。这是核心权限,没有它什么都干不了。弹窗会说明它要读取并操作 UI,高权限,看清楚再给。

3. 在 Agent 端填三件套:host + port + token。Claude Desktop / Claude Code 自定义连接器里配上就行。

4. LAN 先小范围验证。同网段连上,先跑"读屏幕 → 点一下 → 回显"这种最小闭环,确认 UI 树正常、Token 生效,再考虑扩大到跨网络。

为什么强调先小范围?因为无障碍服务已经是屏幕级高权限入口,跨网络之前你得先确认:系统版本 ≥ Android 13、Token 认证正常、Agent 侧能看到完整 UI 树。验证过了再放开边界,才稳。

五、两个最香的真实用处

说人话,这东西俩场景最香。

一是移动端自动化测试。以前测安卓 UI 要写 Instrumentation 或者挂 UIAutomator 脚本,现在直接让 Agent 用自然语言跑流程:"打开 App、登录、下单、断言结果",它自己感知屏幕、自己纠错。中小团队省的不是一点半点。

二是跨设备操作流和数据采集。比如你有一堆安卓设备要批量改配置、批量收日志,或者做移动端数据采集,Agent 接管后一条指令铺开。配合隧道,设备不在手边也能干。

但咱得把话说回来——它不是万能钥匙。你只是想传个文件、跑条 ADB 命令、或者投屏控制,它反而是重方案,杀鸡用牛刀。

六、风险边界,三点绷根弦

无障碍服务等于把屏幕级控制权交出去了,三点必须记住:

• 权限最小化。Accessibility 是必须的,Camera、Mic、Location、通知、存储这些按需开,用不到就别授权。

• Token 即控制密钥。泄露 Token 等于任何人能操控你设备,别写进截图、日志、Git 仓库。

• 网络边界。LAN 内同网段验证没问题,但别把 0.0.0.0 的端口直接裸奔到公网,要走 Tunnel 且带 Token。

收尾

项目在 GitHub 上 danielealbano/android-remote-control-mcp,MIT 协议,当前 v1.11.1,Android 13+ 设备装两个 APK 之一就能玩。想试,记住顺序:装 → 开无障碍 → 填三件套 → LAN 先验证,再扩大边界。

我是阿俊,一个写代码的。AI 操控手机这事,从"能演示"到"能落地",这个项目算是把门槛压下来了。你要是也在折腾 Agent + 移动端,咱们评论区聊聊你踩过的坑。

 — 完 —阿俊 · 写代码、聊 AI、做能跑的东西 

最新文章

随机文章