一、ADB 简介
1. 什么是 ADB
ADB,即 Android Debug Bridge,它是一个客户端 - 服务器端程序,充当调试桥的角色。客户端通常是用于操作的电脑,而服务端则是 Android 设备。同时,ADB 也是 Android SDK 中的一个实用工具,可对 Android 模拟器或真实的 Android 设备进行直接操作和管理。
2. 为何使用 ADB
ADB 功能丰富,能帮助开发者和用户完成多种操作:
- 可运行设备的 shell(命令行)。
- 管理模拟器或设备的端口映射。
- 实现计算机和设备之间的文件上传与下载。
- 对设备上的应用进行卸载、安装等操作。
- 当 App 出现 ANR/Crash 等问题时,可通过 ADB 抓取日志。
简而言之,ADB 是连接 Android 手机与 PC 端的桥梁,也被称为安卓调试桥(仅适用于安卓系统,不适用于 iOS),借助它用户能在电脑上对手机进行全方位操作。
二、准备工具:单独安装 ADB(不安装 SDK)
1. 下载 ADB
Google 提供了 ADB 的 zip 包供下载,不同系统的下载路径如下:
- ADB(Windows、Mac、Linux)版本:点击下载
2. 配置环境变量
解压安装包后,需将解压路径添加到系统变量的 Path 中。具体配置方式可参考自身系统情况,例如个人的配置可作为参考。
3. 设备连接
可通过模拟器或数据线进行连接。使用数据线连接时,手机需进入“开发者选项”并打开“usb 调试”。不同品牌安卓机型首次打开“开发者选项”的方式有所不同,大多是双击手机版本号 3 - 5 次,屏幕会弹出“开发者模式已打开”的提示。若不清楚具体打开方式,可根据手机品牌进行百度查询。
4. 验证安装
在电脑上打开 cmd 窗口,输入“adb version”,若显示 adb 版本,则说明安装成功。
三、ADB 命令详解
1. 基本命令
adb version
:显示 adb 版本。adb help
:查看 adb 支持的所有命令。adb devices
:查看当前连接的设备。adb get - serialno
:查看设备号。
2. 权限命令
adb root
:获取 Android 管理员(root 用户)权限,一般测试机可使用,Android 9 以上版本商用机不支持,但可修改底层部分配置。adb shell
:登录设备 shell,登录后可使用 cd、ls、rm 等 Linux 命令。adb remount
:获取 System 分区可写权限,需先获取 root 权限。
3. 建立连接
adb -d
:当同时连接 usb 设备和开启模拟器时,连接当前唯一通过 usb 连接的安卓设备。adb -e shell
:指定连接当前电脑上唯一的模拟器。adb -s <设备号> shell
:当电脑连接多台手机或模拟器时,指定设备号进行连接。exit
:退出当前操作。adb kill - server
:杀死当前 adb 服务,若连接设备失败可尝试杀掉重启,但非必要情况不建议使用。adb start - server
:重启 adb 服务。adb -p 6666 start - server
:若 adb 默认端口 5037 被占用,可指定端口号启动服务。
4. APK 操作指令
adb shell pm list packages
:列出当前设备所有包名。adb shell pm list packages -f
:显示包和关联文件的安装路径。adb shell pm list packages -d
:显示禁用的包名。adb shell pm list packages -e
:显示启用的包名。adb shell pm list packages -s
:显示系统应用包名。adb shell pm list packages -3
:显示已安装第三方包名。adb shell pm list packages xxxx
:过滤指定包名,如“taobao”。adb install <文件路径\apk>
:将本地 apk 安装到设备,若手机外部安装需密码,要在手机上输入。adb install -r <文件路径\apk>
:覆盖安装。adb install -d <文件路径\apk>
:允许降级覆盖安装。adb install -g <文件路径\apk>
:安装时授予所有权限。adb uninstall <包名>
:卸载应用,安装用 apk,卸载用包名,可通过adb shell pm list packages
查看。adb shell pm uninstall -k <包名>
:卸载应用但保留数据和缓存。adb shell am force - stop <包名>
:强制退出应用。
5. 文件操作指令
adb push <本地路径\文件或文件夹> <手机端路径>
:将本地文件或文件夹复制到设备,注意 pc 机和 Android 机路径分隔符不同,复制失败可能是权限问题,可先使用adb root
和adb remount
命令。adb pull <手机端路径/文件或文件夹> <pc 机路径>
:将设备文件或文件夹复制到本地,注意事项同上。
6. 日志操作指令
adb shell logcat -c
:清理现有日志。adb shell logcat -v time
:在控制台输出日志。adb shell logcat -v time > <存放路径\log.txt>
:输出日志并保存到本地文件。Ctrl + C
:终止日志抓取。adb shell logcat -v time *:E > <存放路径\log.txt>
:打印级别为 Error 的信息。
日志等级包括 Verbse(明细)、Debug(调试)、Info(信息)、Warn(警告)、Error(错误)、Fatal(严重错误)。抓取日志步骤为:先输入命令启动日志,操作 App 复现 bug,按 Ctrl + C
停止日志,最后分析本地保存的文件。还可通过 adb shell pull /data/anr/traces.txt <存放路径>
拉取更详细的 Anr 日志。
7. 系统操作指令
adb shell getprop ro.product.model
:获取设备型号。adb shell getprop ro.build.version.release
:获取 Android 系统版本。adb get - serialno
:获取设备序列号。adb shell wm size
:获取设备屏幕分辨率。adb shell screencap -p /sdcard/mms.png
或adb shell screencap -p
/sdcard/screenshot.png
:屏幕截图。adb pull /sdcard/mms.png <存放的路径>
或adb pull /sdcard/screenshot.png <存放的路径>
:将截图导出到本地。adb shell dumpsys activity |find “mResumedActivity”
:查看前台应用包名,适用于 Android 8.0 以上系统,需先启动 app。adb shell cat /proc/meminfo
:获取手机内存信息。adb shell df
:获取手机存储信息。adb shell screenrecord <存放路径/xxx.mp4>
:录屏,文件名以.mp4 结尾。adb shell screenrecord --time - limit 10 <存放路径/xxx.mp4>
:录屏时间限制为 10 秒。