adb 是 android 提供的一个二进制可运行的开发工具,位于 SDK 的 platform-tools 目录。 android 开发者不可或缺的工具,少了她,好比没有了番号。熟练使用,工作生活事半功倍。下面总结部分常用命令,详细可以直接终端 adb help。
adb 常用命令
熟练掌握下面面11个命令,放心大胆的行走 Android 江湖,不 care 任何刁钻疑难杂症。
1. adb shell
进入 android 设备 的 shell,adnroid 是类 linux 系统,此模式下可以使用 大部分 linux 命令,当然有些命令可能被阉割。
2. adb devices
查看当前电脑连接的设备,如果有多个设备链接,需要操作指定的设备执行命令,需要加参数 "-s 设备名"。
正确姿势:
adb -s F3D7N15B09012602 shell
3. adb kill-server
关闭 adb 连接。
windows 下经常会遇到 adb 冲突,各种管家、安全助手自带 adb 光环,adb kill-server 多试几次或许可以解救,但不一定哈。
在第一次命令行输入 adb shell 时,会有提示:
List of devices attached
* daemon not running. starting it now at tcp:5037 *
* daemon started successfully *
F3D7N15B09012602 device
它的过程:
- PC 端启动 adb 服务进程,开启 socket ,端口:5037
- 与设备中 adbd 守护进程,建立连接
- adb kill-server 即 关闭改 socket 连接
详细流程请参考下面原理。
4. adb connect
指定设备连接。
正确姿势:
adb connect 192.168.1.100
5. adb disconnect
断开连接。
正确姿势:
adb disconnect 192.168.1.100
6. adb install
安装 app,后面跟上 apk 路径。
正确姿势:
adb install 1.apk
7. adb uninstall
卸载 app,后面参数 app 包名。
正确姿势:
adb uninstall com.thearyong.test
8. adb push
发送 PC 文件到 android 设备上,注意部分目录权限问题。设备上的 /data/local/ 所有用户都可以写入。
正确姿势:
adb push 1.apk /system/app
上面 /system/app 需要 root 权限,很多厂商出厂 打包 apk 都放此目录下。
9. adb pull
从 android 设备上下载文件到 PC 上,比如拷贝 apk、log 等。也得注意权限,可以把文件拷贝到 /data/local/tmp 目录下,在 adb pull。
正确姿势:
adb pull /data/local/tmp/1.apk ./apk
后面可跟上指定路径,不指定为当前目录。
10. adb logcat
打印 log,现场支持人员经常需要用到。
正确姿势:
adb logcat > 1.log
logcat 其实执行的是 android 设备下的 logcat。
清理缓存区 log
adb logcat -c
包含时间的 log
超级有用,优化 app 流畅度必备。使用方式请看场景3。
过滤输出
11. adb forward
设置任意端口转发:将对特定主机端口的请求转发到模拟器/设备实例上的其他端口。
正确姿势:
adb forward tcp:6100 tcp:7100
6100 PC 主机端口,7100 设备端口
调试逆向很常用。
原理
源码 system/core/adb 目录,待补充。
TODO
场景
1. 查看已安装的 apk 包信息,包括包名、版本号、权限等
adb shell dumpsys package com.
2. 查看当前设备显示的 activity
adb shell dumpsys activity top
3. 包含时间的 log
adb logcat -v time > 1.log
4. 抓设备网络数据包
adb shell
cd data/local/tmp
tcpdump -w 1.pcap
抓好后,ctrl+c中断。adb pull 到 PC上,使用 WireShark 分析。
PS:如果只是抓 http 包,可以使用 Charles 或 fiddler。手机设置代理,即可实时监测接口请求数据。
5. 厂家修改 adb,调试专用
经常有厂家修改 adb,作为开发者就在那哭爹喊娘,非得用他们提供的 adb 工具才行,在电视行业尤甚。根据上面原理分析,只要修改对应源码即可。
6. 设备屏幕截图
正确姿势:
adb shell screencap -p /data/local/tmp/1.png
adb pull /data/local/tmp/1.png
网上有很多使用直接使用重定向到本机上,命令如下:
$adb shell screencap -p | sed 's/\r$//' > screen.png
但是实践后,并未成功过,大小0KB。不加 sed 去转换换行符,大小有1.5MB,图片打不开。
7. adb 连接不上
有时 adb connect ip 连不上,提示:
Connection refused
有可能是端口号问题,可尝试先用 usb 线连上:
adb tcpip 5555
再 adb connect ip。