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

更详细的ADB命令指南

感谢优秀的你跋山涉水看到了这里,不如关注下让我们永远在一起!

推荐阅读更多精彩内容

  • 获取编译时间cat /proc/version 内核崩溃cat /proc/last_kmsg 获取硬件信息adb...
    三江渔者阅读 2,658评论 0 15
  • 随着新工艺技术的发展,现在茶叶的种类真是多的令人叹为观止,白茶,红茶,乌龙茶,绿茶、黑茶...那么白茶原产地福鼎生...
    愛月1986阅读 2,023评论 0 0
  • 英国首相丘吉尔就备受冬季抑郁之苦。他把自己的抑郁称为“黑狗”,而每到冬天,这只“黑狗”便会更加张狂,让丘吉尔痛不欲...
    陌上于归阅读 129评论 0 4
  • 你看过以下这些经典的书吗?读书可以体现一个人从内而外的气质和修养,下面让我们一起来走进书本,领略一下书本里面的文化...
    飝哥阅读 19评论 1 1
  • 焦虑是一种病,会周期性发病。 焦虑来自于哪里?四面八方 病燥在哪里?心里。 有药呢...
    潜水的鱼儿阅读 33评论 0 0