adb常用命令学习记录

adb 是 android 提供的一个二进制可运行的开发工具,位于 SDK 的 platform-tools 目录。 android 开发者不可或缺的工具,少了她,好比没有了番号。熟练使用,工作生活事半功倍。下面总结部分常用命令,详细可以直接终端 adb help。

熟练掌握下面面11个命令,放心大胆的行走 Android 江湖,不 care 任何刁钻疑难杂症。

1. adb shell

进入 android 设备 的 shell,adnroid 是类 linux 系统,此模式下可以使用 大部分 linux 命令,当然有些命令可能被阉割。

2. adb devices

查看当前电脑连接的设备,如果有多个设备链接,需要操作指定的设备执行命令,需要加参数 “-s 设备名”。

正确姿势:

1
adb -s F3D7N15B09012602 shell

3. adb kill-server

关闭 adb 连接。

windows 下经常会遇到 adb 冲突,各种管家、安全助手自带 adb 光环,adb kill-server 多试几次或许可以解救,但不一定哈。

在第一次命令行输入 adb shell 时,会有提示:

1
2
3
4
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

指定设备连接。

正确姿势:

1
adb connect 192.168.1.100

5. adb disconnect

断开连接。

正确姿势:

1
adb disconnect 192.168.1.100

6. adb install

安装 app,后面跟上 apk 路径。

正确姿势:

1
adb install 1.apk

7. adb uninstall

卸载 app,后面参数 app 包名。

正确姿势:

1
adb uninstall com.thearyong.test

8. adb push

发送 PC 文件到 android 设备上,注意部分目录权限问题。设备上的 /data/local/ 所有用户都可以写入。

正确姿势:

1
adb push 1.apk /system/app

上面 /system/app 需要 root 权限,很多厂商出厂 打包 apk 都放此目录下。

9. adb pull

从 android 设备上下载文件到 PC 上,比如拷贝 apk、log 等。也得注意权限,可以把文件拷贝到 /data/local/tmp 目录下,在 adb pull。

正确姿势:

1
adb pull /data/local/tmp/1.apk ./apk

后面可跟上指定路径,不指定为当前目录。

10. adb logcat

打印 log,现场支持人员经常需要用到。

正确姿势:

1
adb logcat > 1.log

logcat 其实执行的是 android 设备下的 logcat。

清理缓存区 log

1
adb logcat -c

包含时间的 log

超级有用,优化 app 流畅度必备。使用方式请看场景3

过滤输出

其他详细使用请查看 android 官网说明.

11. adb forward

设置任意端口转发:将对特定主机端口的请求转发到模拟器/设备实例上的其他端口。

正确姿势:

1
adb forward tcp:6100 tcp:7100

6100 PC 主机端口,7100 设备端口

调试逆向很常用。

原理

源码 system/core/adb 目录,待补充。

##TODO

场景

1. 查看已安装的 apk 包信息,包括包名、版本号、权限等

1
adb shell dumpsys package com.

2. 查看当前设备显示的 activity

1
adb shell dumpsys activity top

3. 包含时间的 log

1
adb logcat -v time > 1.log

4. 抓设备网络数据包

1
2
3
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. 设备屏幕截图

正确姿势:

1
2
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 线连上:

1
adb tcpip 5555

再 adb connect ip。