1、简介
adb全称(Android Debug Bridge),它是一个通用命令行工具,它可以做为Android与PC端连接的一个桥梁,所以adb又称为Android调试桥,用户可以通过adb在电脑上对Android设备进行全面操作,比如安装和调试应用,操作文件的传输等。
2、主要功能
- 在设备上运行shell
- 管理模拟器或设备的端口映射
- 在计算机与设备之间拷贝推送文件
- 安装、卸载apk,查看设备信息
3、运行架构
- adb client(客户端):client实际上就是shell控制台,通过Client发送命令给server。发送命令时,首先检测PC上有没有启动Server,如果没有Server,则自动启动一个Server,然后将命令发送到Server,并不关心命令发送过去以后会怎样。
- adb server(服务器):server是运行在主机上的一个后台进程,作用是检测USB端口何时连接或者移除设备,server还将adb client的请求通过USB或者TCP的发送发送到adbd上。
- adb demon(守护进程):运行在Android设备上的一个进程,作用是通过USB或者TCP连接到adb server,并且为运行在主机上的adb client提供一些服务。
4、工作原理
首先用户启动一个adb客户端时,此客户端先检查是否存在已运行的adb服务器进程。如果没有,它将启动一个服务器进程,当服务器进程启动时,adb服务器就会绑定本地的TCP端口5037并监听adb客户端发来的命令,使用的adb客户端都使用端口5037与adb服务器进行对话的。接着服务器将所有运行中的模拟器或设备实例进行连接。它通过扫描所有5555到5585范围内的奇数端口来定位所有的模拟器或设备。一旦服务器找到了adb守护程序,将建立一个到该端口的连接。
客户端发送的命令分为三种:
- 不需要经过server处理就能成功的,如:adb version、adb help。
- 需要和server进行通讯,但不需要和demo通讯的命令,如:adb devices。
- 需要和demo进行处理的命令。
5、设备连接管理
5.1、查询已连接设备/模拟器
adb devices
输出状态:
- offline:表示设备未连接成功或无响应。
- device:设备已连接,
- no device:没有设备/模拟器连接
6、adb常用命令
6.1、服务命令
adb version --查看adb版本
adb nodaemon server --查看adb占用的端口号
adb root --以root权限运行adb服务
adb kill-server --关闭adb服务
adb start-server --开启adb服务
adb -P 端口 adb-server --指定adb-server运行端口(默认端口5037)
6.2、应用管理命令
6.2.1、安装应用
adb install apk包名
常用参数:
-r 覆盖安装(保留数据)
-d 降级覆盖安装
-g 赋予所有运行时权限
-l 将应用安装到保护目录/mnt/asec
-s 将应用安装到sdcard目录
adb install安装原理过程:
- push apk文件到/data/local/tmp
- 调用pm install安装
- 删除/data/local/tmp下的对应apk
6.2.2、卸载应用
adb uninstall apk包名
常用参数:
-k 卸载应用时保留数据和缓存目录
6.2.3、查看设备中已安装apk包
adb shell pm list apk包名
常用参数:
-f 查看关联文件
-3 查看第三方应用
-s 查看系统应用
-d 查看disabled package
-e 查看enable package
-i 查看package对应的安装者
-u 查看被卸载过的package
6.2.4、其他命令
adb shell pm clear apk包名 --清除应用数据和缓存
adb shell dumpsys window | findstr mCurrentFocus --获取当前正在运行的activity
adb shell dumpsys activity services --查看正在运行的services
adb shell am force-stop 包名 --强制关闭应用
6.3、文件操作命令
adb pull <设备文件路径> [电脑存储路径] --导出设备文件到电脑
adb push <电脑文件路径> [设备存储路径] --导入电脑文件到设备
6.4、日志管理命令
Android系统的日志分为两部分:底层的Linux内核日志输出到/proc/kmsg, Android日志输出到/dev/log。Android的Log等级通常有六类,按照日志级别由低到高分别是:Verbose、Debug、Info、Warning、Error、Assert。
adb logcat --查看日志
常用参数:
参数 日志格式
-v brief
-v process
-v tag
-v raw
-v time
-v threadtime
-v long
示例:adb logcat -v time > [电脑文件路径]
adb logcat -c --清空日志
adb shell dmesg --查看内核日志
6.5、其他常用命令
adb shell getprop ro.product.model --查看设备型号
adb shell getprop ro.build.version.release --查看Android版本
adb shell top --查看实时资源占用
adb shell dumpsys cpuinfo --查看CPU信息
adb shell dumpsys gfxinfo apk包 --查看GPU绘制分析
adb shell dumpsys meminfo apk包 --查看某应用内存占用
adb shell dumpsys battery --查看电池信息
adb shell ps --查看设备进程(可配合findstr使用)
adb shell wm size --查看屏幕分辨率
adb shell wm density --查看屏幕密度
6.5 Keyevent 键值
adb shell input <参数>
参数 | 说明 |
---|---|
tap x y | 点击屏幕 |
keyevent 3 | HOME键 |
keyevent 4 | 返回键 |
keyevent 5 | 打开拨号应用 |
keyevent 24 | 增加音量 |
keyevent 25 | 降低音量 |
keyevent 26 | 电源键 |
keyevent 27 | 拍照(需要在相机应用里) |
keyevent 64 | 打开浏览器 |
keyevent 82 | 菜单键 |
keyevent 85 | 播放/暂停键 |
keyevent 86 | 停止播放 |
keyevent 87 | 播放下一首 |
keyevent 88 | 播放上一首 |
keyevent 122 | 移动光标到行首或列表顶部 |
keyevent 123 | 移动光标到行末或列表底部 |
keyevent 126 | 恢复播放 |
keyevent 127 | 暂停播放 |
keyevent 164 | 静音 |
keyevent 176 | 打开系统设置 |
keyevent 187 | 切换应用 |
keyevent 207 | 打开联系人 |
keyevent 208 | 打开日历 |
keyevent 209 | 打开音乐 |
keyevent 210 | 打开计算器 |
keyevent 220 | 降低屏幕亮度 |
keyevent 221 | 提高屏幕亮度 |
keyevent 223 | 系统休眠 |
keyevent 224 | 点亮屏幕 |
keyevent 231 | 打开语音助手 |
text <content> | 输入文本 |
网友评论