前言
ADB的全称是 Android Debug Bridge,安卓调试桥的意思,PC端使用ADB工具包就可以对你的安卓设备进行管理、调试了,比如说,设备间上传和下载文件、应用软件的安装和卸载、抓取日志信息等。
使用adb工具包需要去熟悉 adb 指令,如果熟悉linux常用指令的,基本很快就能上手。
1. ADB工具包
1.1 adb工具包下载
打开网页,搜索“abd工具包”,随便找个地址就可以下载到(windows下安装);
工具包里主要包含的文件如下图1:
图1
1.2 环境变量设定
把图1中的四个文件统一放到一个文件夹下,然后把该文件夹的路径添加到系统环境变量里;
如果没有将adb工具包路径添加到环境变量里,我们要使用adb调试时,就要跳到该路径下才能执行adb指令,就不能任意位置下执行adb指令了。
图2
1.3 测试指令
按 win +r ,输入“cmd”进入命令行测试:输入命令“adb”,显示一大串的指令信息表示配置成功;
图3
图4
1.4 adb工作原理
它是一种以C/S为架构的程序,主要由三个组件组成:
adb client:客户端,运行在PC端,用于PC端发送 adb 命令,主要任务是命令的参数,然后转移为指令或数据,发送到adb server;
adb server:服务端,运行在PC端的一个后台进程,管理adb client 和 adb daemon的通信,将adb client的请求通过usb或者 tcp 的方式发送到对应的adbd上,检测USB端口,感知设备的连接和拔除,以及模拟器实例的启动或停止;
adb daemon(adbd):守护进程,运行在Android 系统上,当Android 系统启动时,由init 程序启动 adbd 服务,主要作用是处理来自 adb server的命令行请求,然后获取对应Android设备的信息,再将结果返回给adb server。
通信流程:adb client启动时,会先检查是否有 adb server进程正在运行,没有则会先启动server进程,启动后会绑定和监听PC上的 TCP 端口 ,然后再去处理 adb client发出的命令;当adb server发现 adbd 就会与相应的端口建立连接。
2. 连接Android设备
2.1 usb调试
首先,准备好一根usb数据线,连接上安卓设备,然后在安卓设备中要开启usb adb调试;
这里就拿安卓手机设备来模拟操作,通常需要先开启开发者选项,打开方法大多为多次按击手机版本号即可(不知道的自行百度),在开发者选项里打开usb调试,到这里准备工作就完成了。
接下来,在cmd命令行中输入“adb devices”,查看设备是否连接成功。如下图:
如果输入“adb devices”没有显示设备信息,那就先检查usb调试那些是否打开,确认硬件状态是否正常,检查没问题还是打不开的话,那也可能时adb软件的版本太低了(adb版本查询指令为"adb version"),不适配,重新下载个较新版本的工具包即可。
2.2 wifi调试
使用WiFi调试,PC端和安卓设备端需要连接同一个wifi热点,使其处于同一个网段下;
通过 adb tcpip 5555
然后获取安卓设备的 IP 地址;例如安卓设备 IP 地址为192.168.0.102 ;
在cmd命令行中输入指令连接:adb connect 192.168.0.102 (端口号选填)。
如果是安卓手机,使用wifi进行adb连接时,需要先使用usb数据线连接上设备,再进行wifi adb连接,否则wifi adb连接时连接不上设备。
3. adb指令集
3.1 服务启停
adb start-server :adb服务的开启,一般情况下不需要手动开启,执行adb指令时会自动开启;
adb -P <port> start-server:指定 adb 服务的网络端口;
adb kill-server :adb服务的关闭;
adb tcpip <port>:重新启动adbd守护进程,监听指定端口的TCP;
3.2 常用指令
adb version:查看adb版本信息;
adb help:查看adb支持的指令信息;
adb devices:查看当前已连接的设备信息;
adb shell netstat:查看网络信息;
3.3 设备断、连
adb connect 设备IP地址 [:端口号];通过设备的ip地址连接设备,默认端口为5555,可不填;
adb disconnect 设备IP地址:断开与设备的TCP连接;
adb usb:重新启动adbd守护进程,对USB进行监听;
3.4 权限相关
adb root:获取Android管理员权限;
adb shell:登录设备的shell,之后就可以对设备进行管理了;
adb remount:重新挂载设备上的/system和/vendor分区,adb root 后才能有可读可写权限;
3.5 文件操作
adb push <local> <remote>:把PC端的文件或文件夹推送到安卓设备;
adb pull <remote> [<local>]:把安卓设备的文件或文件夹拉取到PC端;不能直接pull到C盘根目录下,一定要建个文件夹,因为会报权限问题的错误 。
3.6 应用软件管理
adb install [-l r t s d] <file>:安装应用软件;
参数:
-l :将应用安装到保护目录 /mnt/asec;
-r :允许覆盖安装;
-t :允许安装测试包;
-s :将应用安装到sd卡;
-d :允许降级覆盖安装;
file :应用文件名;
返回:成功返回Success。
adb uninstall [-k] <package-name> :卸载应用软件;
参数:
-k :可选参数,表示卸载应用但保留数据和缓存目录;
adb shell pm list packages [-f d e s 3 i u] [--user USER_ID] [FILTER]:应用列表查看;
参数:
-f :显示应用关联的 apk 文件;
-d :只显示 disabled 的应用;
-e :只显示 enabled 的应用;
-s :只显示系统应用;
-3 :只显示第三方应用;
-i :显示应用的 installer;
-u :包含已卸载应用;
FILTER:包名包含
<
FILTER>
字符串。例子:
adb shell pm list packages:表示查看所有应用;
adb shell pm list packages -s:表示查看系统应用;
adb shell pm list packages tencent:表示查看包名带tencent字符串的应用列表。
adb shell pm path <package-name> :查看应用安装路径;
adb shell dumpsys package <package-name> :查看应用详细信息;
adb shell pm clear <package-name>:清除应用数据与缓存;
3.7 打印日志
adb logcat -v <format> :指定日志某种形式输出;
参数 显示格式
brief :<priority>/<tag>(<pid>): <message>
process : <priority>(<pid>) <message>
tag : <priority>/<tag>: <message>
raw : <message>
time : <datetime> <priority>/<tag>(<pid>): <message>
threadtime : <datetime> <pid> <tid> <priority> <tag>: <message>
long : [ <datetime> <pid>:<tid> <priority>/<tag> ] <message>
adb logcat -c:清空日志;
adb logcat > file-path:将日志输出到指定文件下;
3.8 模拟输入
adb shell input:内容过多,不展示,可在命令行输入“adb shell input”查看详情;
总结
adb在调试安卓设备时作用很大,远不止上述所展示的,有篇博文我觉得写的很好,这里给出链接