ADB调试Android设备

前言

        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 命令让设备在 5555 端口监听 TCP/IP 连接;

然后获取安卓设备的 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在调试安卓设备时作用很大,远不止上述所展示的,有篇博文我觉得写的很好,这里给出链接

猜你喜欢

转载自blog.csdn.net/weixin_49576307/article/details/128008227