BOSh
文章240
标签344
分类83
315晚会 36氪 80后 ADB AI AI Agent AI PC AI 代理 AI 助手 AI 网关 AI 评测 AI助手 AI大模型 AI安全 AI应用 AI智能体 AI网关 API API 集成 Agent Agentic AI AionUi Android Automation Bosh C++ CLI CLI Proxy API CLIProxyAPI CRM Chrome 插件 Claude Opus 4.6 ConnectBot Debian DeepSeek DenchClaw DevOps Docker Elon Musk GEO GPL GPS GPU Gemini Gemini 3.1 Pro GitHub Gmail Gog Google Google AI Pro Google API Google Gemini Google Pixel HKUDS Hermes Hermes Agent Hexo Hugo IPV6 Jetpack Compose Kimi-K2.5 Kotlin LINUX LaTeX Linux Markdow Markdown MemU Bot MiniMax NAT64 NIX NODE NVIDIA Build NanoClaw Netcatty Newsletter Open WebUI OpenAI OpenAI 兼容接口 OpenCLI OpenClaw PDF 编译 PicoClaw Pixel Prismer QClaw QQ机器人 RAG Reddit Rust SFTP SSH Skills Subagent SuperCall Telegram Bot Tensor WeChat WebSSH Windows WorkBuddy X XChat X热榜 YouTube ZeroClaw arXiv arch c++ git hugo iMessage iOS n8n nanobot node js ntfs pacman podman zz.ac 东海 两性关系 个人助理 中东 中东冲突 中东局势 中关村论坛 中南大学 中国 中美 习惯养成 云同步 亚洲 代理 代金券 以色列 任务管理 伊朗 伊朗危机 伊朗战争 伦理 体育 保护主义 信息流 信息管理 停火 健康管理 光通信 免费试用 共和党 养老金 内容工厂 内容生产 内容筛选 军事冲突 军事动态 军民融合 农村 分享 创业 办公自动化 加密 加密货币 加沙 北斗 医学生 半导体 华为 博客 博客助手 博客发布 博客部署成功 卫星 原生 JS 反重力 台海局势 台湾 命令 命令行 喷嚏网 国产 国产化 国产替代 国际 国际关系 国际局势 国际新闻 图卦 图说 地缘政治 基础设施 多代理 多模态AI 大学分析 大模型 孙少平 学习 安全 实时监控 家庭助理 家庭服务器 家装设计 工作总结 工作效率 工作流编排 工具链 平凡的世界 平台责任 开发 开发实录 开源 开源项目 张雪峰 微信 心理健康 情感 战争 手机 技术分享 投资工具 指标看板 提示词工程 播客 收件箱清理 效率 效率工具 教程 教育制度 数据分析 数据投毒 文件管理 文献管理 新能源汽车 新闻汇总 日历聚合 时事 时事总结 显卡 晨报 智能体 智能体生态 朝鲜 架构 架构实践 核协议 核武器 桌面Cowork 模型接入 模型配置 每日图说 比亚迪 油价 活动运营 浏览器自动化 消息通道 消费者权益 渔船 游戏开发 湘雅医院 热点新闻 版本更新 特朗普 生态系统 生活 生活自动化 生物识别 用例 甲骨文云 电池技术 症状追踪 白山云 皮皮虾 监管 目标管理 知识库 社交媒体 社会保障 社会公平 社会百态 社会观察 科技 科研助手 笔记 第一财经 算法推荐 纽森 经济 经济观察 经验分享 编程 网关 网络 网络安全 美伊冲突 美伊谈判 美国 美国大选 美国政治 能源安全 腾讯 腾讯,龙虾,OpenClaw 腾讯云 自动化 自动化创作 自动化协作 自动化提醒 自动化流水线 自动化运维 自律教练 自由软件 芯片 行为改变 视频摘要 计算摄影 记录 许可证 论文写作 论文阅读 语义搜索 语音代理 读书 读书笔记 读后感 财报季 路遥 迁移 运维 远程运维 邀请确认 部署指南 量子计算 销售自动化 阅读感悟 随笔 隐私 霍尔木兹 霍尔木兹海峡 项目管理 飞书 高中生活 高考 高考志愿 黎巴嫩 龙虾

一言

文章归档

ADB文件管理实战:用命令行驯服你的安卓手机

ADB文件管理实战:用命令行驯服你的安卓手机

搞安卓开发或者折腾手机的人,迟早都要跟ADB打交道。GUI工具用着用着就卡,传个大文件MTP协议各种断连,批量操作更是噩梦。ADB才是正道,快、稳、可控。

这篇讲的就是怎么用ADB命令行管理安卓手机上的文件,从基础操作到进阶技巧,一次讲透。

环境准备

装好Android SDK Platform Tools就行,不需要完整的Android Studio。

1
2
3
4
5
6
7
8
# Ubuntu/Debian
sudo apt install adb

# macOS
brew install android-platform-tools

# Windows
# 去 https://developer.android.com/studio/releases/platform-tools 下载解压,加到PATH

手机端开启USB调试:设置 → 关于手机 → 连续点击版本号7次激活开发者选项 → 开发者选项 → USB调试打开。

用USB线连上电脑,终端输入:

1
adb devices

如果看到设备ID后面跟着device,说明连接成功。如果显示unauthorized,看手机上有没有弹出授权对话框,勾上"始终允许"点确定。

无线连接也行,前提是手机和电脑在同一局域网:

1
2
3
# 先用USB连一次
adb tcpip 5555
adb connect 192.168.1.100:5555

拔掉USB线,后续操作走WiFi。延迟比USB高,传大文件不推荐,但日常操作够用。

基础文件操作

推送文件到手机

1
adb push ~/photos/vacation.zip /sdcard/Pictures/

这个命令把本地的vacation.zip推送到手机的/sdcard/Pictures/目录。注意安卓的/sdcard不是真正的SD卡,是内部存储的符号链接,大多数手机只有这一个用户可见存储区。

推送整个目录也行:

1
adb push ~/music/ /sdcard/Music/

末尾的斜杠不能少,否则adb会把整个目录作为子目录推过去,路径变成/sdcard/Music/music/,多套一层。

从手机拉取文件

1
adb pull /sdcard/DCIM/Camera/ ~/backup/photos/

拉取单个文件或整个目录都支持。拉取目录时本地目标路径如果不存在会自动创建。

一个实用场景:备份应用数据。前提是应用数据在可访问路径下:

1
adb pull /sdcard/Android/data/com.example.app/ ~/backup/app_data/

查看文件列表

1
adb shell ls -la /sdcard/Download/

adb shell后面跟的是标准的Linux shell命令。ls -la显示详细列表含隐藏文件。安卓底层是Linux,大部分常用命令都能用。

删除文件

1
2
adb shell rm /sdcard/Download/temp.apk
adb shell rm -r /sdcard/Download/cache_folder/

rm -r删目录,没有确认提示,删了就是删了。建议先ls确认路径再动手。

进阶技巧

批量清理截图

手机截图攒了几百张,手动删要命:

1
adb shell rm /sdcard/Pictures/Screenshots/*.png

或者只删7天前的:

1
adb shell find /sdcard/Pictures/Screenshots/ -name "*.png" -mtime +7 -delete

find命令在安卓上可用,-mtime +7匹配修改时间超过7天的文件。

按扩展名找文件

1
adb shell find /sdcard/ -name "*.apk" -type f

找所有APK文件。-type f限定只匹配文件,跳过目录。

查看磁盘占用

1
2
adb shell df -h /sdcard/
adb shell du -sh /sdcard/DCIM/

df -h看整体容量,du -sh看特定目录占用。手机存储空间不够的时候,这两个命令比去设置里翻快多了。

文件权限问题

有时候push过去的文件在手机上打不开,十有八九是权限问题:

1
adb shell chmod 644 /sdcard/Download/config.json

644 = 拥有者读写,组和其他人只读。安卓的/sdcard目录用的是FUSE文件系统,chmod可能不生效,这种情况需要把文件先推到/data/local/tmp/,改完权限再移过去。

大文件断点续传

ADB本身不支持断点续传,但可以拆分文件:

1
2
3
4
5
6
7
8
9
# 电脑端拆分
split -b 100M large_file.zip large_file_part_

# 逐个推送
adb push large_file_part_aa /sdcard/Download/
adb push large_file_part_ab /sdcard/Download/

# 手机端合并
adb shell cat /sdcard/Download/large_file_part_* > /sdcard/Download/large_file.zip

这种土办法在MTP频繁断连的场景下比GUI工具靠谱得多。

应用管理相关文件操作

导出已安装APK

想备份某个应用或者分享给没网的环境:

1
2
3
4
5
6
# 先找包名对应的安装路径
adb shell pm path com.example.app
# 输出类似:package:/data/app/~~random_hash==/com.example.app-random_hash==/base.apk

# 拉取
adb pull /data/app/~~random_hash==/com.example.app-random_hash==/base.apk ~/backup/app.apk

pm path输出的路径每次安装都不一样,别硬编码。

清除应用缓存

1
adb shell pm clear com.example.app

注意这会清除所有应用数据,等于恢复出厂设置里单个应用的清除数据。缓存大了占空间但又不想卸载重装的时候用。

列出所有已安装包

1
adb shell pm list packages -3

-3只显示第三方应用,不显示系统应用。要全看就去掉-3

多设备操作

如果同时连了多台设备,adb devices列出后需要指定目标:

1
2
adb -s emulator-5554 push file.txt /sdcard/
adb -s 192.168.1.100:5555 pull /sdcard/log.txt ./

-s后面跟设备序列号。序列号从adb devices的输出里抄。

常见坑

MTP和ADB同时连会冲突。 电脑文件管理器通过MTP访问手机存储时,adb push/pull可能报错。关掉电脑端的MTP文件管理器窗口再试。

/sdcard路径不统一。 有的手机是/sdcard,有的要用/storage/emulated/0,本质是同一个地方,符号链接指向不同。用adb shell echo $EXTERNAL_STORAGE查看当前设备的标准路径。

Android 11+的Scoped Storage限制。 从安卓11开始,应用只能访问自己目录下的文件。adb shell是以shell用户运行的,权限比普通应用高,大部分目录还是能访问,但/sdcard/Android/data/下的内容在shell里也可能受限。遇到Permission Denied先adb root试试,不行的话说明厂商锁了SELinux策略,普通用户只能认栽。

中文字符乱码。 adb shell里中文文件名可能显示为问号。这是终端编码问题,不是文件坏了。设置终端编码为UTF-8,或者用adb shell ls -1 > filelist.txt把列表导出再看。

速查表

操作 命令
推送文件 adb push 本地路径 手机路径
拉取文件 adb pull 手机路径 本地路径
列出文件 adb shell ls -la 路径
删除文件 adb shell rm 文件路径
删除目录 adb shell rm -r 目录路径
查找文件 adb shell find 路径 -name "*.ext"
磁盘占用 adb shell du -sh 路径
改权限 adb shell chmod 644 文件路径
查APK路径 adb shell pm path 包名
清应用数据 adb shell pm clear 包名

ADB文件管理这活,熟练了比任何GUI工具都快。命令行不骗你,出错了信息明明白白摆在那,比MTP突然断连让你怀疑人生强一万倍。


本文由 BOSH 的博客助手 HerMes 整理 🐧

本文作者:BOSh
本文链接:http://bosh.zz.ac/posts/278121017.html
版权声明:本文由BoSh发布,部分内容来源于网络。