1.5.1 常用工具之ADB介绍与快速入门
一、什么是ADB
ADB是Android-Sdk里的一个客户端-服务器端程序,其中客户端是我们操作的电脑, 服务器端是Android设备,它的全称为Android Debug Bridge,就是起到调试桥的作用。通过这个桥我们可以管理设备或手机模拟器的状态,还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。
简而言之,ADB就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作。
二、安装方法
电脑上需要安装客户端,客户端包含在sdk里,而服务端设备上不需要安装,只需要在手机上打开开发者选项并启用USB调试功能即可。
对于Linux用户有一个最简单的安装方法:在terminal下键入sudo apt-get install adb然后回车输入密码再回车,稍等片刻即可使用。
不过这样我们就没法知道adb具体的安装位置了,虽然这也没什么。对于好奇心爆棚的同学可以采用这样的方法安装:
1、将下载好的sdk解压后放在“~目录”或者其它任意目录,然后修改~/.bash_profile文件,设置运行环境指向sdk的tools目录。
2、具体是打开~/.bash_profile文件(如果没有此文件也可以自行添加),然后在里面加入一行 export PATH=${PATH}:<你的sdk目录>/tools,然后就可以使用adb命令了。
三、ADB常用命令
-
adb devices
这个命令是查看当前连接的设备, 连接到计算机的Android设备或者模拟器将会被显示出来。
-
adb install
用来安装软件,将指定的apk文件安装到设备上。
-
adb uninstall
用来卸载软件,将指定包名的apk文件从设备上卸载。
-
adb shell
通过上面的命令,就可以进入设备或模拟器的shell环境中,在这个Linux Shell中,你可以执行各种Linux的命令,另外如果只想执行一条shell命令,可以采用这种方式:adb shell [command],如:adb shell dmesg会打印出内核的调试信息。
-
adb push 本地路径 远程路径
用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)。
-
adb pull 远程路径 本地路径
用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑。
-
adb get-product
获取设备的ID号
-
adb get-serialno
获取设备的序列号
-
adb help
显示帮助信息(包括各种命令用法与含义)
四、push 和 Install 的不同
adb push和adb install是apk包安装的两种方法,用法如下:
1.adb push XXX.apk /你想推送的路径
2.adb install XXX.apk
显而易见,两者的区别是:
adb push可以自定义推送路径,adb install 只能安装在/data/app文件下。
其次,adb push 是将apk包复制到路径下面,重启后/system/app和/data/app下的apk包都会自动安装。
adb install是将apk安装到手机里,流程是:复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录(so文件也在./包名/lib下,或者/data/app-lib/包名)。
另外,install复制APK安装包到data/app目录下的过程中,会将apk名改为包名-1.apk,数字为android接收到的版本号。
其中对于/system文件夹比较容易碰到的问题是报read only file的错误,哪怕/system已经被你改成了777的权限,解决的方法是:1.adb shell 2.su 3.mount -o remount rw /system重新挂载一下/system文件系统
五、常用的抓取日志命令
捕获Logcat输出:
adb logcat -c && adb logcat -v time | tee logcat.txt | grep -i 7837
adb logcat -c && adb logcat -v time | tee logcat.txt | grep -E 'showImgWithUrl'
抓取崩溃日志:
logcat -s AndroidRuntime DEBUG
adb命令向设备复制导入、导出、删除文件等
//导入文件复制文件
adb push 文件 目标文件路径
adb push lo.log storage/sdcard0
//导出文件 mac默认是你的$home文件查看home文件方法 echo $HOME
adb pull storage/sdcard0/wifi_config.log
获取序列号:
adb get-serialno
查看连接计算机的设备: adb devices
重启机器: adb reboot
重启到bootloader,即刷机模式: adb reboot bootloader
重启到recovery,即恢复模式: adb reboot recovery
查看log: adb logcat
终止adb服务进程: adb kill-server
重启adb服务进程: adb start-server
获取机器MAC地址: adb shell cat /sys/class/net/wlan0/address
获取CPU序列号:adb shell cat /proc/cpuinfo
安装APK:adb install <apkfile> //比如:adb install baidu.apk
保留数据和缓存文件,重新安装apk:adb install -r <apkfile>
//比如:adb install -r baidu.apk
安装apk到sd卡:adb install -s <apkfile>
// 比如:adb install -s baidu.apk
卸载APK:adb uninstall <package>
//比如:adb uninstall com.baidu.search
卸载app但保留数据和缓存文件:adb uninstall -k <package>
//比如:adb uninstall -k com.baidu.search
启动应用:adb shell am start -n <package_name>/.<activity_class_name>
查看设备cpu和内存占用情况:adb shell top
查看占用内存前6的app:adb shell top -m 6
刷新一次内存信息,然后返回:adb shell top -n 1
查询各进程内存使用情况:adb shell procrank
杀死一个进程:adb shell kill [pid]
查看进程列表:adb shell ps
查看指定进程状态:adb shell ps -x [PID]
查看后台services信息:adb shell service list
查看当前内存占用:adb shell cat /proc/meminfo
查看IO内存分区:adb shell cat /proc/iomem
将system分区重新挂载为可读写分区:adb remount
从本地复制文件到设备:adb push <local> <remote>
从设备复制文件到本地:adb pull <remote> <local>
列出目录下的文件和文件夹,等同于dos中的dir命令:adb shell ls
//进入文件夹,等同于dos中的cd 命令:
adb shell cd <folder>
重命名文件:adb shell rename path/oldfilename path/newfilename
删除system/avi.apk:adb shell rm /system/avi.apk
删除文件夹及其下面所有文件:adb shell rm -r <folder>
移动文件:adb shell mv path/file newpath/file
设置文件权限:
adb shell chmod 777 /system/fonts/DroidSansFallback.ttf
新建文件夹:adb shell mkdir path/foldelname
查看文件内容:adb shell cat <file>
查看wifi密码:adb shell cat /data/misc/wifi/*.conf
清除log缓存:adb logcat -c
查看bug报告:adb bugreport
获取设备名称:adb shell cat /system/build.prop
查看ADB帮助:adb help
跑monkey:adb shell monkey -v -p your.package.name 500
感谢优秀的你跋山涉水看到了这里,不如关注下让我们永远在一起!