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 调试模式:

  1. 安装 Android SDK:通过 Android Studio 安装包获取 ADB 工具。
  2. 连接设备:通过 USB 线连接手机,或使用 Wi-Fi 调试(需在开发者选项中启用)。
  3. 验证连接:在终端执行 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 时,设备未显示。
解决方法

  1. 检查 USB 调试模式是否启用。
  2. 安装设备厂商的 USB 驱动(如三星、华为)。
  3. 重启 ADB 服务:
    adb kill-server && adb start-server  
    

问题2:权限不足

现象:执行 adb shell rm 时提示“拒绝访问”。
解决方法

  1. 确认命令路径是否正确(如 /data 目录需 root 权限)。
  2. 若设备已 root,可通过 su 获取超级用户权限:
    adb shell su -c "rm /data/xxx"  
    

问题3:命令执行失败

现象:输入命令后返回“not found”。
原因:可能命令拼写错误,或路径不正确。
建议

  • 使用 adb shell 进入交互模式后逐步执行命令。
  • 检查命令是否存在拼写错误(如 pmpd)。

结论

adb shell 命令是 Android 开发者的“后台瑞士军刀”,从基础的文件操作到高级的日志调试,其功能覆盖开发全流程。通过本文的讲解,读者不仅能掌握常用命令的使用方法,还能理解其背后的逻辑与应用场景。建议读者结合实际项目进行实践,例如通过模拟点击自动化测试 UI 流程,或通过日志分析定位崩溃问题。随着经验积累,adb shell 命令将成为提升开发效率、优化问题诊断能力的重要工具。

未来,随着 Android 系统的演进,adb shell 命令的功能也将持续扩展。开发者可定期查阅官方文档(如 Android 开发者官网),探索新特性,进一步提升开发技能。

最新发布