adb相关命令使用
1.什么是adb?
ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具。
2.adb的相关使用
adb 命令的基本语法如下:
adb [-d|-e|-s <serialNumber>] <command>
如果只有一个设备/模拟器连接时,可以省略掉 [-d|-e|-s <serialNumber>]
这一部分,直接使用 adb <command>
。
如果有多个命令设备/模拟器连接,则***需要为命令指定目标设备***。
参数 | 含义 |
---|---|
-d | 指定当前唯一通过 USB 连接的 Android 设备为命令目标 |
-e | 指定当前唯一运行的模拟器为命令目标 |
-s | 指定相应 serialNumber 号的设备/模拟器为命令目标 |
命令 | 释义 |
---|---|
adb devices | 查询已连接设备/模拟器 |
adb version | 查看adb版本 |
adb start-server | 启动adb server命令 |
adb kill-server | 停止adb server命令 |
adb -P start-server | 指定 adb server 的网络端口,默认端口为5037 |
adb remount | 重新挂载文件系统 |
adb reboot | 重启手机 |
adb shell ifconfig | grep Mask | 获取设备的 IP 地址 |
查看应用列表的基本命令格式是
adb shell pm list packages [-f|-d|-e|-s|-3|-i|-u] [--user USER_ID] [FILTER]
即在 adb shell pm list packages
的基础上可以加一些参数进行过滤查看不同的列表,支持的过滤参数如下:
参数 | 显示列表 |
---|---|
无 | 所有应用 |
-f | 显示应用关联的apk文件 |
-d | 只显示disabled的应用 |
-e | 只显示enabled的应用 |
-3 | 只显示第三方应用 |
-i | 显示应用的installer |
-u | 包含已卸载应用 |
[FILTER] | 包名包含[FILTER]字符串 |
-s | 只显示系统应用 |
应用相关adb命令:
adb shell dumpsys package | 查看应用详细信息 |
---|---|
adb shell pm path | 查看应用安装路径 |
adb shell am force-stop | 强制停止应用 |
命令格式:
adb install [-l|-r|-t|-s|-d|-g] <path_to_apk>
adb install
后面可以跟一些可选参数来控制安装 APK 的行为,可用参数及含义如下:
参数 | 含义 |
---|---|
-l | 将应用安装到保护目录 /mnt/asec |
-r | 允许覆盖安装 |
-d | 允许降级覆盖安装 |
-s | 将应用安装到 sdcard |
-t | 允许安装 AndroidManifest.xml 里 application 指定 android:testOnly="true" 的应用 |
-g | 授予所有运行时权限 |
命令:
adb uninstall [-k] <packagename>
<packagename>
表示应用的包名,-k
参数可选,表示卸载应用但保留数据和缓存目录。
命令:
adb shell pm clear <packagename>
<packagename>
表示应用名包,这条命令的效果相当于在设置里的应用信息界面点击了「清除缓存」和「清除数据」。
复制设备里的文件到电脑
命令:
adb pull <设备里的文件路径> [电脑上的目录]
eg:
adb pull /sdcard/dog.mp4 ~/tmp/
**tips:**设备上的文件路径可能需要 root 权限才能访问
复制电脑里的文件到设备
命令:
adb push <电脑上的文件路径> <设备里的目录>
eg:
adb push ~/dog.mp4 /sdcard/
Android 系统的日志分为两部分,底层的 Linux 内核日志输出到 /proc/kmsg,Android 的日志输出到 /dev/log。
清空日志
adb logcat -c
将log信息输入到指定的文件中
adb logcat > <FileName>.log
内核日志
adb shell dmesg
adb shell
su
此时命令行提示符是 $
则表示没有 root 权限,是 #
则表示已 root。
adb shell dumpsys activity activities | grep mResumedActivity
adb shell dumpsys activity services [<packagename>]
<packagename>
参数不是必须的,指定 <packagename>
表示查看与某个包名相关的 Services,不指定表示查看所有 Services。