android adb 工具
来源:互联网 发布:免费 php cms 编辑:程序博客网 时间:2024/05/16 02:06
adb(Android Debug Bridge)是Android 提供的一个通用的调试工具,借助这个工具,可以管理设备模拟器的状态 。还可以进行以下的操作:
1、快速更新设备或手机模拟器中的代码,如应用或Android系统升级;
2、在设备上运行shell命令;
3、管理设备或手机模拟器上的预定端口;
4、在设备或手机模拟器上上传下载文件
Android的linux shell做了大量精简,很多linux常用指令都不支持
1.adb shell
通过上面的命令,就可以进入设备或模拟器的shell环境中,在这个Linux Shell中,你可以执行各种Linux 的命令,如果只想执行一条命令,可以输入adb shell cmd
eg:adb shell dmesg会打印出内核的调试信息
adb shell logcat v会打印出log信息
adb shell ls列出设备的目录列表
2.上传文件: adb push <PC文件> </tmp/...>
下载文件: adb pull </tmp/...> <PC文件>
/tmp/...指的是在设备linux环境中要操作文件的路径
eg: adb push key data/app 就是将key文件上传到用户目录中
3.安装程序: adb install <*.apk>
卸载软件: adb unistallapk(注意卸载的时候和安装的时候的文件名是不一样的,例如安装的时候adb shellGPSStatus2b2.apk,这个apk文件就被安装在data/app目录下,但是使用uninstall的时候,首先要到、data/app目录下查看安装的apk文件在linux目录下的文件名,发现是com.eclipsim.gpsstatus.apk,使用adb uninstallcom.eclipsim.gpsstatus.注意不要加apk后缀。返回success结果证明文件卸载成功)。
补充一点,通过adb安装的软件(*.apk)都在"/data/app/"目录下,所以安装时不必制定路径。
卸载的时候当然也可以直接到目录下使用rm命令也可。
4.显示android模拟器状态:
adb devices 列出所有连接的设备
adb get-serialno 打印设备序列号
adb version 列出ADB的版本号
adb get-state 打印出的结果一般是offline | bootloader | device
5.等待正在运行的设备: adb wait-for-device
6.adb start-server
adb kill-server 一般在键入adb shell命令后显示device offline或者是显示有多个设备的情况下使用
7.adb remount 重新挂载系统分区,就是将系统分区重新挂载为可写。
8. adb root使用管理员权限
9. adb bugreport打印除所有的bug信息
10.adb shell logcat -b radio 记录无线通讯日志: 一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:
11.adb emu
12.端口转发: adb forward adb forward tcp:5555 tcp:1234
(将默认端口TCP 5555转发到1234端口上)
补充一下adb的构架:
adb是一个客户端—服务器程序,它包括三个组件:
1.client:
whichruns on your development machine. You can invoke a client from a shell byissuing an adb command. Other Android tools such as the ADT plugin and DDMSalso create adb clients.
感性的认识,也就是右边这张图片:
2. server:
which runs as a background process on yourdevelopment machine. The server manages communication between the client andthe adb daemon running on an emulator or device.
这里值得一提的是,这里的client和server应该都只是线程的,而不是像我之前所理解的是两个进程。因为在ProcessExplorer中,我只找到了一个adb进程。在打开模拟器之前,该进程共有两个线程;而打开了模拟器之后,一共有四个线程,见下面两张图。再次把Eclipse关闭,发现这个adb进程还在:线程为两个,说明这两个应该就是服务器端。
3.daemon(守护进程):
which runs as a background process on eachemulator or device instance.
client与server的连接(当开启adb命令行时):
客户端检查下服务进程是否存在?如果不存在的话,就启动服务进程。然后服务进程绑定到5037端口开始监听客户端的请求。
server与daemon的连接:
server通过扫描5555到5585的奇数端口来定位模拟器实例,一旦在这些端口中找到模拟器中的daemon,就和这个端口建立连接。
server工作的单一性:
虽然server在两端能连接多个client和模拟器,但是一次只能把commands传送给一个模拟器。也就是说,你要操作另外一个模拟器了,你必须用下面的命令来切换(Directing Commands to a Specific Emulator/Device Instance):
adb -s <serialNumber> <command>
结语:
因为觉得adb整个架构还蛮好玩的(从来没写过这种架构的完整程序,以后可以看下adb的源码,应该是开源的吧!),所以就写下了这篇文章,不知道是不是做了一件无聊的事(⊙o⊙)?
- Android ADB工具使用
- android调试工具adb
- android adb 工具
- Android ADB 工具使用
- ANDROID ADB工具使用
- Android的adb工具
- Android ADB 工具使用
- android调试工具adb
- Android的adb工具
- android调试工具adb
- Android ADB 工具使用
- Android调试工具 adb
- Android ADB工具
- Android工具---adb简述
- Android 工具:adb
- Android ADB工具详解
- Android 工具-adb
- Android adb工具基础
- 纵表变横表的小方法
- 使用jQuery的getJson跨域解决方案
- 9月27日 传说中的BlackBerry黑板发布了!BlackBerry PlayBook
- CentOS单网卡绑定多IP,添加新IP的方法
- Oracle归档模式与非归档模式设置
- android adb 工具
- Java数据结构,单链表的建立
- 编译OGRE SDK例子
- Oracle国际认证OCA/OCP/OCM目前的含金量及就业形势
- 女程序员随想:编程之路何去何从
- 配置虚拟目录
- ioncube_loader_win_5.2.dll to be installed
- ListCtrl
- 使用SHGetFolderPath 获取系统文件夹路径