adb(Android Debug Bridge)是android sdk里的一个工具,就是起到调试桥的作用,用这个工具可以直接操作管理android模拟器或者真实的andriod设备(手机),通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具。adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自动运行。
adb作用
- 运行设备的shell(命令行)
- 管理模拟器或设备的端口映射
- 计算机和设备之间上传/下载文件
- 将本地apk软件安装至模拟器或android设备
- 通过ADB命令查看wifi密码、MAC地址、设备信息、操作文件、查看文件、日志信息、卸载、启动和安装APK等
adb安装
ADB是一个客户端-服务器端程序,其中客户端是你用来操作的电脑,服务器端是android设备。先说安装方法,电脑上需要安装客户端。客户端包含在SDK里。设备上不需要安装,只需要在手机上打开选项-设置-应用程序-USB调试(4.0+:设备-开发人员选项)。adb有各个系统的版本:Liunx,Mac,Windows,根据你自己的操作系统来选择要下载的Android SDK就可以使用adb命令了。
adb命令使用格式
adb [-d|-e|-s <serialNumber>] <command>
adb是必须的,接下来方括号[]里面的内容不是必须的,最后才是我们需要执行的命令操作,例如 adb -s emulator-5554 install qq.apk (这是安装QQ的意思)
下面先介绍下,前面几个参数的含义吧:
-d: 让唯一连接到该PC端的真实安卓设备执行命令,如果发现USB中连接有多部设备,将会报错
-e: 让唯一连接到该PC端的模拟器执行命令,如果发现开启了多个模拟器,将会报错
-s:通过设备的序列号进行指定设备执行命令
如果设备只连接有一个设备或者一个模拟器的时候,可以不用声明这三个参数,adb默认会让这部唯一连接到的设备进行命令执行。
adb常用命令
1) 查看当前PC端连接有多少设备:
adb devices
返回:
> adb devices List of devices attached emulator-5554 device 127.0.0.1:5555 offline 127.0.0.1:5561 device
我们看到了设备有的两种状态,其实执行该命令,可能返回的状态有三种:
1. device 设备已经成功连接到了adb-server
2. offline 设备并没有连接到adb或者没有响应
3. no device 并没有设备/模拟器连接
2) 查看adb的版本
adb version
返回:
> adb version
Android Debug Bridge version 1.0.31
3)重启机器
adb reboot
4)重启到bootloader,即刷机模式
adb reboot bootloader
5)重启到recovery,即恢复模式
adb reboot recovery
重启有三种方式:
直接重启设备回到使用界面adb reboot即可
重启设备到bootloader引导模式:adb reboot-bootloader或adb reboot bootloader
重启到recovery刷机模式:adb reboot recovery
6)查看log
adb logcat
7)终止adb服务进程
adb kill-server
这样可以关闭adb服务进程,有时正在使用adb,然后想删除adb,那这时你得先关闭进程才了删除,就要用到它了。
8)重启adb服务进程
adb start-server
使用adb devices命令时就已经自动开启了。
9)显示帮助信息
adb help
10)获取设备的连接状态
adb -s <serialNumber> get-state
返回设备状态,有三种结果:关机,引导模式,设备在线
11)获取连接到的手机的序列号
adb get-serialno
返回设备序列号SN值
12)获取设备的ROOT权限
adb remount
通过这个命令就可以获取设备的ROOT权限,可以通过adb操作/system等系统目录,如
adb push xx.app /system/app
即可将app应用直接放入系统目录。这个操作必须机子已解锁并ROOT过。
13)给指定设备安装apk
adb install [-r] [-s] 这个命令将指定的apk文件安装到设备上. -r 强制安装(在某些情况下可以已有些应用程序在运行或不可写,可加上此参数强制安装) -s 将apk文件安装在SD-Card
adb -s <serialNumber> install <path-to-apk> eg: adb -s emulator-5554 install D://511yj.apk
除了上面这种方法,我们还有另外一个命令:
adb -s <serialNumber> shell pm install [options] <PATH>
其中[options]中最常用的选项是-r,代表着本次安装是重新安装,会保留用户数据。
14)卸载设备中已经安装的软件apk
adb uninstall [-k] <软件名>
如果加 -k 参数,为卸载软件但是保留配置和缓存文件.
adb -s <serialNumber> uninstall <pkg_name> eg: adb -s 99eb07a9 uninstall cn.uc.511yj
除了上面这种方法,我们还有另外一个命令:
adb -s <serialNumber> uninstall [options] <PACKAGE>
这里的options是-k,加上该参数表明卸载软件后依旧保留用户数据
15)电脑上的文件或文件夹传到模拟器里面
adb push <本地路径> <远程路径> adb -s <serialNumber>push <local> <remote>
用push命令可以把本机电脑上的文件或者文件夹复制到模拟设备或手机
adb -s emulator-5554 push d:/511yj.avi /mnt/
把本地D盘根目录下的511yj.avi 复制到 模拟设备/mnt/
16)模拟器里面的文件或文件夹传到电脑上
adb pull <远程路径> <本地路径> adb -s <serialNumber>pull <remote> <local> adb -s emulator-5554 push /sdcard/511yj-ls D://
执行后我们发现本地D盘根目录下有了511yj-ls文件
17)等待设备连接成功
adb wait-for-device
该命令将会阻塞一直到默认连接的那部机器状态变为device,也就是连接成功。