adb shell 命令(手把手讲解)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观
前言
在移动开发领域,adb shell 命令如同一把万能钥匙,能够打开设备的“后台控制台”,让开发者直接与 Android 设备进行交互。无论是调试应用、查看系统信息,还是执行自动化操作,adb shell 命令都扮演着不可或缺的角色。对于编程初学者而言,掌握这些命令可以快速提升开发效率;而对中级开发者来说,深入理解其原理和技巧,能进一步优化调试和测试流程。本文将从基础到进阶,通过案例和比喻,系统性地讲解这一工具的强大功能。
ADB Shell 命令基础
环境准备:搭建开发桥梁
使用 adb shell 命令前,需确保设备已连接电脑并开启 USB 调试模式:
- 安装 Android SDK:通过 Android Studio 安装包获取 ADB 工具。
- 连接设备:通过 USB 线连接手机,或使用 Wi-Fi 调试(需在开发者选项中启用)。
- 验证连接:在终端执行
adb devices
,若显示设备序列号,则连接成功。
基础命令示例:探索设备后台
以下命令是 adb shell 命令的“入门套餐”,适合快速熟悉设备环境:
-
查看当前目录:
adb shell pwd
输出示例:/
比喻:如同打开手机的“文件管理器”,展示当前所在路径。 -
列出目录内容:
adb shell ls
输出示例:data/ dev/ etc/
类比:就像在电脑上执行dir
命令,查看文件和文件夹列表。 -
切换目录:
adb shell cd /data/local/tmp
功能:进入指定路径,后续操作均基于该目录。 -
查看系统属性:
adb shell getprop
输出示例:[ro.build.version.sdk]: [30]
解释:可获取设备的 Android 版本、制造商等信息。
核心功能与应用场景
1. 应用管理:设备的“应用目录管理员”
adb shell 命令能直接操控设备上的应用,常用命令包括:
列出已安装应用
adb shell pm list packages
输出示例:
package:com.example.app
package:com.android.systemui
**pm(Package Manager)**如同设备的“应用目录管理员”,可查询、安装或卸载应用。
安装应用
adb install app-release.apk
此命令会将本地的 APK 文件安装到设备上,常用于测试新版本应用。
卸载应用
adb shell pm uninstall --user 0 com.example.app
注意:需指定用户 ID(--user 0
)以避免卸载系统应用。
2. 文件操作:设备的“远程文件浏览器”
adb shell 命令支持对设备文件的增删改查,常用命令如下:
复制文件到设备
adb push local_file.txt /sdcard/remote_file.txt
类比:将本地文件“拖拽”到手机存储中。
复制设备文件到本地
adb pull /sdcard/remote_file.txt local_file.txt
功能:将手机中的文件“拉回”电脑进行分析。
删除文件
adb shell rm /sdcard/old_file.txt
注意:需谨慎操作,删除后文件无法恢复。
3. 系统信息查询:设备的“体检报告生成器”
通过 adb shell 命令可快速获取设备状态,例如:
查看内存使用情况
adb shell dumpsys meminfo
输出示例:
Total RAM: 3.8G
Free RAM: 1.2G
dumpsys命令如同设备的“体检医生”,能诊断内存、电池、网络等状态。
查看存储空间
adb shell df -h
输出示例:
Filesystem Size Used Avail Use%
/data 15G 5G 10G 33%
此命令可监控设备存储空间的使用情况。
进阶技巧与最佳实践
1. 输入模拟:设备的“远程遥控器”
adb shell input命令可模拟用户操作,常用于自动化测试:
模拟点击坐标
adb shell input tap 500 1000
功能:在屏幕坐标(500,1000)处模拟点击,可自动化测试按钮交互。
模拟键盘输入
adb shell input text "Hello World"
效果:在当前焦点输入框中输入“Hello World”。
2. 日志调试:开发者的“故障诊断工具”
logcat是调试的“核心武器”,可实时查看系统日志:
过滤特定应用日志
adb logcat -s "MyApp"
功能:仅显示包含“MyApp”标签的日志,快速定位问题。
保存日志到文件
adb logcat -d > app_logs.txt
参数 -d
表示仅保存当前日志,适合问题复现后分析。
3. 脚本自动化:命令的“智能组合体”
通过编写 Shell 脚本,可批量执行复杂操作。例如:
#!/bin/bash
adb shell pm uninstall --user 0 com.example.app
adb install app-release.apk
adb shell am start -n com.example.app/.MainActivity
此脚本依次完成卸载旧版本、安装新版本、启动应用的操作。
常见问题与解决方案
问题1:设备未被识别
现象:执行 adb devices
时,设备未显示。
解决方法:
- 检查 USB 调试模式是否启用。
- 安装设备厂商的 USB 驱动(如三星、华为)。
- 重启 ADB 服务:
adb kill-server && adb start-server
问题2:权限不足
现象:执行 adb shell rm
时提示“拒绝访问”。
解决方法:
- 确认命令路径是否正确(如
/data
目录需 root 权限)。 - 若设备已 root,可通过
su
获取超级用户权限:adb shell su -c "rm /data/xxx"
问题3:命令执行失败
现象:输入命令后返回“not found”。
原因:可能命令拼写错误,或路径不正确。
建议:
- 使用
adb shell
进入交互模式后逐步执行命令。 - 检查命令是否存在拼写错误(如
pm
与pd
)。
结论
adb shell 命令是 Android 开发者的“后台瑞士军刀”,从基础的文件操作到高级的日志调试,其功能覆盖开发全流程。通过本文的讲解,读者不仅能掌握常用命令的使用方法,还能理解其背后的逻辑与应用场景。建议读者结合实际项目进行实践,例如通过模拟点击自动化测试 UI 流程,或通过日志分析定位崩溃问题。随着经验积累,adb shell 命令将成为提升开发效率、优化问题诊断能力的重要工具。
未来,随着 Android 系统的演进,adb shell 命令的功能也将持续扩展。开发者可定期查阅官方文档(如 Android 开发者官网),探索新特性,进一步提升开发技能。