adb即Android Debug Bridge,是Android开发中必不可少的调试工具。
安装和卸载apk
/** 安装APK文件:此命令需要先卸载apk再执行,否则执行失败。 */
adb install <apk文件路径>
/** 安装APK文件:如果已经安装了此APP,会进行替换安装操作(APP数据仍然存在), 否则直接进行安装*/
adb install -r <apk文件路径>
/** 卸载apk */
adb uninstall <包名>
搬运文件
/** 将电脑中的文件复制到Android设备 */
/** 设备路径:sdcard,比如我要copy文件到Download目录:sdcard/Download */
adb push <本地文件路径> <设备路径>
/** 将Android设备中的文件复制到电脑 */
adb pull <设备路径> <本地文件路径>
启动/停止APP
/**运行指定APP,例子:adb shell am start me.hp.test.demo/me.hp.test.demo.MainActivity */
adb shell am start 包名/activity名
/** 停止指定APP */
adb shell am force-stop 包名
查看已连接的设备
adb devices
查看设备的分辨率
//查出的结果类似 1280x720
adb shell wm size
查看设备的密度(dpi)
adb shell wm density //查出类似 480
重启设备
adb reboot
删除设备中的文件或者文件夹
$ adb shell su
$ remount
$ cd /sdcard/ //进入系统内指定文件夹
$ ls //列表显示当前文件夹内容
$ rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件
$ rm xxx //删除文件xxx
$ rmdir xxx //删除xxx的文件夹
adb抓取设备日志
adb logcat -v time > Documents/test.log
然后操作设备,日志都会被记录进test.log文件中,不过在这之前最好清空一下设备的日志,这样记录的日志就是你操作设备这段时间的。
adb清除日志
adb logcat -c
程序ANR崩溃,获取traces.txt日志文件
出现Application Not Responding的提示后,系统会将日志LOG写到data\anr\traces.txt文件
$ adb pull /data/anr/traces.txt
adb抓取dmesg信息
dmesg信息是Linux内核启动信息,常用于分析定位android系统相关问题,抓取dmesg信息指令如下:
adb shell dmesg > <文件保存路径>
比如:adb shell dmesg > dmesg.log
,那么信息就会保存进入dmesg.log
文件。
查看android版本号以及SDK版本号
$ adb shell getprop ro.build.version.release //android版本号
$ adb shell getprop ro.build.version.sdk //android sdk版本号
抓取设备的网络包
$ adb shell su
$ tcpdump -i any -p -s 0 -w /sdcard/capture.pcap
$ exit
$ adb pull /sdcard/capture.pcap <自己电脑路径>
从设备本身发起网络请求
$ adb shell
$ curl http://ip:port/xxx.jsp
获取内存泄漏hprof文件
//生成文件
adb shell am dumpheap cn.gd.snm.snmcm /data/data/cn.gd.snm.snmcm/2.hprof
//将文件提取到电脑
adb pull /data/data/cn.gd.snm.snmcm/2.hprof
手动设置设备的时间
$ adb shell su
$ cat /data/property/persist.sys.timezone
//上面语句回车后,如果看到GMT在前面,则下面这句话不用执行
$ setprop persist.sys.timezone GMT
$ date -s "20180716.185630" //设置时间
$ date //查看当前时间
获取设备root权限(不一定成功)
$ adb root adb remount
$ adb shell
$ mount -o rw,remount /system
$ exit
//获取设备root权限后可删除系统应用
$ adb shell
$ cd system/app
$ rm -r <相关APP>
$ cd data/data
$ rm -r <相关APP>
获取设备的WIFI Mac地址
$ adb shell
$ cat /sys/class/net/wlan0/address
查看设备CPU使用率
$ adb shell
$ su
$ top
查看设备CPU信息(内核数)
$ adb shell
$ cat /proc/cpuinfo
$ /sys/devices/system/cpu
查看设备CPU架构
adb shell
//查看CPU架构执行状态
cat /proc/cpuinfo
//支持的架构
getprop|grep arm
比如我连接的设备支持的CPU架构如下:
ro.product.cpu.abilist
的值表明当前系统所支持的所有的ABI类型。
ro.product.cpu.abilist32 / ro.product.cpu.abilist64
的值表明当前系统所支持的32位和64位的ABI类型。
查看设备连接了哪些USB设备
$ adb shell
$ cat /proc/bus/input/devices 即可查看
$ lsusb 可以查看设备的vid 和 pid
用adb录制设备屏幕 / 截取屏幕图片
adb shell screenrecord /sdcard/demo.mp4
录制手机屏幕,视频格式为mp4,存放到手机sd卡里,默认录制时间为180s
adb shell screenrecord --bit-rate 6000000 /sdcard/demo.mp4
指定视频的比特率为6Mbps,如果不指定,默认为4Mbps
adb shell screenrecord --size 1280*720 /sdcard/demo.mp4
录制视频,分辨率为1280*720,如果不指定默认使用手机的分辨率
adb shell screenrecord --time-limit 10 /sdcard/demo.mp4
限制视频录制时间为10s,如果不限制,默认180s
adb shell screenrecord --time-limit 10 --verbose /sdcard/demo.mp4
限制视频录制时间为10s,且在命令行显示相关log信息
adb pull /sdcard/demo.mp4 D:/
导出视频到D盘
adb shell screencap -p /sdcard/test.png 截取手机当前屏幕,并命名test.png,然后存放到手机sd卡里
adb pull /sdcard/test.png 导出图片到PC当前操作路径(目录)
查看app的activity任务栈信息
//必须加grep筛选条件,否则打印的信息太多难以定位问题
adb shell dumpsys activity activities | grep <app包名>