4、ADB基础命令(上):adb devices、adb shell、adb install、adb uninstall、adb reboot
好,咱们正式开始啃ADB命令这块硬骨头。
说实话,ADB命令看着多,但真正天天用的也就那么十几个。今天这五个,是基础中的基础——你连设备都连不上,后面那些花活根本玩不转。
我刚开始带项目那会儿,有个同事死活装不上APK,折腾了一下午。最后我过去一看,adb devices 列表里压根没他的设备。嗯,USB调试没开。这种坑,踩过一次就记住了。
本章核心脉络:设备连接 → 进入系统 → 安装/卸载应用 → 重启设备。这五个命令串起来,就是一次完整的ADB操作闭环。
4.1 adb devices —— 先看看设备在不在
这命令我一天能敲几十遍。说白了,它就是ADB的"握手"动作。
adb devices
执行后,你会看到类似这样的输出:
List of devices attached
0123456789ABCDEF device
状态栏有几种可能:
| 状态 | 含义 | 怎么办 |
|---|---|---|
device |
正常连接,可以操作 | 直接干活 |
unauthorized |
设备未授权 | 看设备屏幕,点"允许USB调试" |
offline |
设备离线或ADB服务异常 | 重新插拔USB,或 adb kill-server 重启服务 |
no device |
没检测到设备 | 检查驱动、USB线、调试开关 |
我的小习惯:每次开始调试前,先敲一遍
adb devices 确认状态。尤其是换了USB口或者线之后,这一步能省掉后面90%的"连不上"问题。
4.2 adb shell —— 钻进设备肚子里
adb shell 就是给你一把钥匙,直接进到Android系统的Linux内核里。你想想看,能在手机上敲Linux命令,多爽。
adb shell
执行后,提示符会变成 shell@device:/ $,这时候你就可以:
- 查看文件:
ls -l /data/data/ - 查看进程:
ps -A | grep com.example - 查看日志:
logcat -c(清空缓存) - 查看系统属性:
getprop ro.build.version.sdk
也可以不进入交互模式,直接执行单条命令:
adb shell dumpsys battery
adb shell pm list packages
我个人更喜欢这种用法——执行完就退出来,干净利落。
注意:
adb shell 进去之后,你拥有的是 shell 用户权限,不是 root。有些系统目录你读不了,有些操作你做不了。别慌,这是正常的。需要root权限的话,得先给设备root。
4.3 adb install —— 装APK,就这么简单
装应用,最直接的方式:
adb install app-release.apk
成功的话,你会看到 Success。失败的话……嗯,常见错误我列一下:
| 错误信息 | 原因 | 解决 |
|---|---|---|
INSTALL_FAILED_ALREADY_EXISTS |
应用已存在 | 加 -r 参数覆盖安装 |
INSTALL_FAILED_VERSION_DOWNGRADE |
版本号比已安装的低 | 加 -d 允许降级 |
INSTALL_FAILED_INSUFFICIENT_STORAGE |
存储空间不足 | 清理设备空间 |
INSTALL_FAILED_USER_RESTRICTED |
用户限制安装 | 检查"允许安装未知来源应用" |
常用参数组合:
adb install -r -d app-release.apk # 覆盖安装 + 允许降级
我曾经遇到过一个问题:测试包版本号写错了,比线上版本低,直接装不上。加个 -d 搞定。这种小坑,遇到了就知道参数的重要性。
4.4 adb uninstall —— 卸得干干净净
卸载命令更简单:
adb uninstall com.example.myapp
注意,这里用的是包名,不是应用名称。怎么查包名?
adb shell pm list packages | grep 关键词
比如我想卸载微信:
adb shell pm list packages | grep weixin
# 输出:package:com.tencent.mm
adb uninstall com.tencent.mm
避坑指南:加
-k 参数可以保留应用数据目录不删除。但说实话,我很少用这个——既然要卸载,就卸干净,留着数据干嘛?
4.5 adb reboot —— 重启大法好
重启设备,一句话的事:
adb reboot
但ADB的重启不止这么简单。它支持三种模式:
| 命令 | 模式 | 用途 |
|---|---|---|
adb reboot |
正常重启 | 系统重启,日常使用 |
adb reboot bootloader |
引导加载模式 | 刷机、解锁Bootloader |
adb reboot recovery |
恢复模式 | 双清、刷入OTA包 |
我印象最深的一次:某款设备系统卡死了,屏幕黑着,但ADB还能连上。远程敲了个 adb reboot,设备活了。你想想看,这比扣电池优雅多了。
重要提醒:
adb reboot bootloader 和 adb reboot recovery 会中断ADB连接。重启后设备进入特殊模式,ADB服务会断开。想继续用ADB,得等设备完全进入系统才行。
4.6 实战组合拳:一条命令搞定安装+启动
最后分享一个我常用的组合:
adb install -r app.apk && adb shell am start -n com.example/.MainActivity
这条命令干了三件事:
- 安装(或覆盖安装)APK
- 安装成功后,自动启动应用的主Activity
- 省掉你手动点图标的步骤
做自动化测试的时候,这个组合拳能省不少时间。嗯,今天就先到这,这五个命令够你练一阵子了。