phone-media-transfer-android-app:ADB 与界面自动化搞定安卓媒体进出

前言

在 DeepSeek Harness(DSH)里做智能体或脚本时,经常要把电脑上的视频、图片送进手机 App,或从 App 里把媒体拷出来。很多安卓应用的存储并不透明:目录藏在 Android/data 深层、被 .nomedia 屏蔽,或根本没有对外部文件夹的入口,只认应用内「导入」按钮。单靠手动找路径或反复试错,既慢也容易把 App 的数据库索引弄乱。

phone-media-transfer-android-app 是维护者 lilinshuei 发布的 DSH 客户端类插件(npm 包名同仓库名,当前版本 1.0.0,MIT 许可证)。它用 ADB 摸清存储结构与数据库索引,再按情况走目录扫描、数据库索引、媒体库刷新或界面自动化四条路线之一,把媒体送进去或复制出来,并在文档里写清无 root 下的硬边界。

这是什么

插件一句话定位:把视频图片送进那些找不到文件夹的安卓 App,也能原样掏出来|ADB + 界面自动化。

仓库在 GitHub:lilinshuei/phone-media-transfer-android-app;社区目录页:https://www.skillhub.cn/plugins/lilinshuei/phone-media-transfer-android-app。适配层在 lib/index.js,零运行时 npm 依赖;Skill 本体即仓库根目录,挂载声明见 cordis.patch.yml。

它解决什么问题

安卓 App 的存储形态不一:有的路径极深,有的被 .nomedia 屏蔽,有的不提供外部文件夹,只接受界面上的导入流程。

插件流程是:先用 ADB 探清存储与索引,再按类型选路线——能直接复制就复制,不行再用 ui_auto.ps1 做界面自动化(按文字找按钮、滚动查找、等待元素)。导出采用复制而非移动,避免破坏 App 数据库条目;同名文件会自动加序号。

文档明确不碰无 root 无法访问的 /data/data/<包名> 与系统级加密保险箱,也不用于绕过付费或版权限制。

核心能力(README 已写明部分)

  • 先判型再动手:四种路线命中即停,降低「文件已在盘上但 App 不认」的情况。
  • 深度探测:脚本侧支持深度 5 探测,覆盖隐藏目录、.nomedia、数据库记录路径等。
  • 导出为复制:不删原文件;删原文件会导致数据库条目失效,文档有说明。
  • 界面自动化兜底:文件系统不可达时使用 scripts/ui_auto.ps1。
  • 本地与安全约束:零遥测;脚本以只新增、不删除为约束;需 Node.js >=20(package.json engines)。

仓库主要脚本与参考:

路径 作用
scripts/app_identify.sh 读取前台包名
scripts/app_probe.sh 深度探测目录、媒体与数据库路径
scripts/app_export.sh 复制导出
scripts/media_rescan.sh 刷新系统媒体库
scripts/ui_auto.ps1 界面自动化
references/android-app-storage.md 存储结构与判型细节

安装与启用

插件以 DSH 插件形式安装;装完后需重启 DSH,新会话中才可调用。桌面端将下文 --profile web 换成 --profile desktop。在 DSH 桌面端「添加插件」时,可只填包名 phone-media-transfer-android-app,不必粘贴整条命令。

npm 一行安装(推荐)

包已发布到 npm registry,README 推荐:

dsh plugin --profile web add phone-media-transfer-android-app

从 GitHub 安装

需要跟踪最新提交或 npm 不畅时:

dsh plugin --profile web add github:lilinshuei/phone-media-transfer-android-app

手动安装

README 给出的路径为 ~/.dsh/skills/phone-media-transfer-android-app/SKILL.md(将克隆后的仓库目录复制到 ~/.dsh/skills/ 下)。安装前建议自行查看仓库源码与 MIT 许可证;插件在 DSH 进程权限下运行,只应对已授权的设备与应用操作。

环境要求

项 要求
电脑 安装 ADB 并加入 PATH
手机 开发者选项与 USB 调试已开启
权限 仅操作已授权设备与 App
root 不需要;同时存在上述访问边界

典型用法

下面步骤来自 README「快速上手」,可按顺序复现。

1. 确认设备与目标 App

确认 ADB 已识别设备,并把识别脚本推到手机执行:

adb devices
adb push scripts/app_identify.sh /data/local/tmp/
adb shell "sh /data/local/tmp/app_identify.sh"

输出中 mCurrentFocus 里的 com.xxx.yyy 即为包名。

2. 彻底探测

将探测脚本推上设备,传入包名与关键词:

adb push scripts/app_probe.sh /data/local/tmp/
adb shell "sh /data/local/tmp/app_probe.sh com.xxx.yyy 关键词"

据此查看目录树、.nomedia、媒体样本、数据库路径与总体积,用于后续选导入目录或判断是否要跑媒体库刷新。

3. 导出或导入

导出示例(参数含义以脚本为准):

adb push scripts/app_export.sh /data/local/tmp/
adb shell "sh /data/local/tmp/app_export.sh com.xxx.yyy '/sdcard/导出' 关键词 all"

导入时按探测结果选择目标目录;若属于媒体库型路径,再执行 media_rescan.sh 刷新系统媒体库。

在 DSH 会话中,也可通过已安装的 Skill 让智能体按上述脚本与 references/android-app-storage.md 协助编排命令;具体交互以 SKILL.md 为准。

适用场景与注意

适合谁:需要在电脑与安卓 App 之间搬运图片、视频,且愿意用 ADB 与(必要时)PowerShell 界面自动化的开发者或高级用户;与不熟悉命令行、无法开启 USB 调试的环境不匹配。

能力边界(务必知晓):

  • 无 root 不能访问 /data/data/<包名> 与系统级加密保险箱。
  • 导出是复制;勿擅自删除 App 内原文件。
  • 界面自动化依赖当前界面文案与控件,App 大改版后可能要重新定位元素。
  • 仅处理自己拥有或已获授权的内容。

DSH 社区目录(SkillHub)与 DeepSeek、幻方无官方从属关系,安装来源以 npm 或 GitHub 仓库为准。

结尾

phone-media-transfer-android-app 把「找目录、对索引、必要时点界面」收成一套可重复的 ADB 工作流,并挂在 DSH 插件里便于会话调用。若要查看简介与分类,可打开目录页 SkillHub 插件页;源码、脚本与安装说明见 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye