什么是adb命令行?

什么是adb命令行?,第1张

ADB(Android Debug Bridge)是Android

提供的一个通用的调试工具,借助这个工具,我们可以很好的调试开发的程序,adb.exe在你安装的android的sdk开发包platform-tools目录下。

ADB是一个C/S架构的应用程序,由三部分组成:

1)adb client, 运行在PC上(为DDMS,即IDE工作)

2)adb daemon(守护进程),运行于Emulator(为与Emulator中的VM交互工作);

3)adb server(服务进程),运行在PC(任务管理器上有),管理着adb client和adb

daemon的通信。

server与client通信的端口是是5037,adb

server会与emulator交互的,使用的端口有两个,一个是5554专门用于与Emulator实例的连接,那么数据可以从Emulator转发给IDE控制台了,另一个则是5555,专门与adb

daemon连接为后面调试使用。

adb使用方法:

adb [-d|-e|-s ]

当你发出一个命令,系统启用Android客户端。客户端并不与模拟器实例相关,所以如果双服务器/设备是运行中的,你需要用-d选项去为应被控制的命令确定目标实例。关于使用这个选项的更多信息,可以查看模拟器/设备实例术语控制命令。

1、查询模拟器/设备实例

在发布adb命令之前,有必要知道什么样的模拟器/设备实例与adb服务器是相连的。可以通过使用 devices

命令来得到一系列相关联的模拟器/设备

adbdevices

2、安装应用到模拟器/设备:

你可以使用adb从你的开发电脑上复制一个应用程序,并且将其安装在一个模拟器/设备实例。

像这样做,使用install命令。这个install命令要求你必须指定你所要安装的.apk文件的路径:

adbinstall

例如:Weibo_4.1.1.apk是在我的C盘中,

C:\>adbinstallweibo_4.1.1-apk

3、卸载应用程序:

adbuninstall

注意:卸载软件时,卸载的是包名,后面跟的是包的名字,而不是.APK.

4、从模拟器/设备中拷入或拷出文件:

可以使用adbpull、push命令将文件从模拟器/设备中拷贝出来或从电脑拷入。

adbpull

用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑

adbpush

用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)

5、启动Linux命令界面shell

adbshell

Android本来就是一个linux *** 作系统,通过上面的命令,就可以进入设备或模拟器的shell环境中,所以大部分都是linux的命令,如mkdir,ls,netstat,mount

等。

主要介绍几个Android特有的。

Getprop:返回Android的所有系统属性。

Getevent:打印所有的键盘和触摸事件

Logcat:输出日志

LS:用于显示目录内容

6、查看bug报告:

adb bugreport

7、记录无线通讯日志:

一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:

adb shell

logcat -b radio

8、获取设备的ID和序列号:

adb get-product

adb get-serialno

ADB接口的作用主要是让电脑等其它设备控制安卓系统的,所以,称为“中间桥”;不是为安卓自已用的,自已可直接执行称为SHELL,这与ADB无关。所以安卓JAVA不一定有封装的ADB类。电脑上有ADB服务程序,端口5037,它是中间程序,与安卓系统上守护进程(Daemon)通讯。如果要在自已的手机上应该也能执行adb命令,应该直接跟守护进程(Daemon)通讯了。百度上可以搜到的方法并不满意。楼主用exec执行CMD命令,这已不是ADB接口了,这是系统的SHELL了!!!自已用socket/tcp直接发命令效果不知怎样,地址用127.0.0.1,安卓daemon进程的端口5555是奇数开始。。。。。至于ADB对话协议百度可以搜到,建议试一试。楼上其实要的是SHELL,并不是ADB,我搜到一篇文章,但我并没有试过,是否需要ROOT,不得而知,附上,你试一试,回个话。

Android 调试桥 (adb) 是一种功能多样的命令行工具。它可以让你与设备进行通信,adb 命令可用于执行各种设备 *** 作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限,它是一种C/S架构的程序,包括以下三个组件:

客户端: 主要用于发送命令,adb client在开发机器上运行,你可以通过发出 adb 命令从命令行终端调用客户端,它主要的工作是:解析像:push、shell、install等命令的参数,做必要预处理,然后转移为指令或数据,发送给adb server。

守护程序 (adbd): 是运行在Android设备(真机/模拟器)后台的一个进程,它是由init进程启动的,并且系统一开机就已经启动,它的主要作用是处理来自 adb server的命令行请求,然后获取对应Android设备的信息,再将结果返回给adb server。

服务器 (adb server): 是运行在PC上的一个后台进程,它有两个作用:

当启动某个 adb 客户端时,该客户端会先检查是否有 adb 服务器进程正在运行,如果没有,它会先启动服务器进程,服务器在启动后会与绑定和监听PC上的 TCP 端口 5037 ,并处理 adb 客户端发出的命令(所有 adb 客户端通信均通过与PC上端口 5037 建立TCP连接通信)如下图:

然后,adb server会与所有正在运行的设备建立连接,TCP连接方式下,它通过扫描 5555 到 5585 之间(该范围供前 16 个模拟器使用)的奇数号端口查找模拟器,服务器一旦发现 adb 守护程序 (adbd),便会与相应的端口建立连接,请注意,每个模拟器都使用一对按顺序排列的端口(用于控制台连接的偶数号端口和用于 adb 连接的奇数号端口)

通过查看端口,可以看到adb server已在 5037 端口监听 'LISTENING'

Client通过发送指令的方式,给到adb server端,adb server端进行判定,是否需要转发到adbd进行处理。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7748017.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存