提供的一个通用的调试工具,借助这个工具,我们可以很好的调试开发的程序,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进行处理。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)