Android ADB 的使用
什么是adb?
adb,全称Android Debug Brige。是一个很强大的命令行工具,通过它你能用各种命令操作你的android设备。该程序包含以下三个部分:

- adb client
client运行在PC端,每当发起一个adb命令的时候,就会开启一个client程序,开启后,会自动检查adb server有没有运行,若没有,则先开启adb server,此后通过5037端口与adb-server进行通信。 - adb server
同样运行在PC端,管理多个client进程并和adb deamon之间进行通信。开启后会自动检测并绑定5037端口,通过这个端口与client进行通信。而和adb deamon的通信通过5555-5585之间的端口进行,当一个设备连接到PC端,会为这个设备分配两个连续的端口号,其中奇数端口号用来与设备中的adb deamon进程通信,偶数端口允许与设备进行交互,让server直接从设备中读取数据。 - adb deamon
一般简称adbd,运行在设备端(模拟器或者Android真机)。当一个设备连接到PC端,就会开启这样一个后台进程得到adb server分配的端口号后进行与PC端的通信。
adb安装
在Ubuntu系统下,通过命令sudo apt-get install android-tools-adb即可安装,当然如果你的电脑里已经安装了Android SDK的话就不需要再安装了,切换到SDK目录的platform-tools目录里就可以运行adb命令:./adb。
以下为一些实用的、常见的adb命令
列出已经连接的设备
adb devices
执行后将会看到每一个已经连接的设备。如果此时已经连接了多台设备,比如同时开了两个模拟器,再连接了一个真机。然后需要操作其中一个设备时,adb命令需要用”-s“参数指定要操作的设备,使用如下:
adb -s <serialNumber> <command>
其中
进入设备的shell模式
adb shell
执行后可以在shell模式下操作设备。
获取root身份
adb root
该命令重启adbd程序,并让adbd程序拥有root权限,便于文件等其他需要权限的操作。
文件操作
- 将PC端文件复制到设备
adb push /home/user/document/a.txt /data/local/上述命令的作用是将/home/user/document文件夹下的a.txt文件复制到手机的/data/local文件夹下。
- 将手机上的文件复制到PC端
adb pull /sdcard/b.txt document/上述命令的作用是将手机sdcard文件夹下的b.txt文件复制到PC的document文件夹下。
特别说明:该操作需要root权限,所以在执行该命令前,先执行adb root命令。而执行该命令需要先root手机,如果你不想root手机,还有一种办法是先进入shell模式,然后执行su命令获取管理员身份,再对需要操作的文件赋予other用户能读写的权限。当然,这种办法不是每个手机都能用,有的手机没有root的话是没有su程序的,也就不能执行su命令。比如我的魅蓝2,很是坑爹:得先进入“设置——我的Flyme——个人中心——系统权限”开发系统权限,网上有的说法是在开启系统权限后手机会重启,重启后手机就已经root了。但是我的手机重启后运行adb root还是不行,但是现在可以执行su命令了,但执行su命令后,似乎并不起作用,比如我用chmod命令修改我要操作的文件夹的权限,但是修改后的权限和修改前的一样,而且很多文件还是不能访问,就和shell模式下一样的感觉,无奈只能再下一个root程序把手机给root了。(我root成功的软件是__KingRoot__)按理说手机已经root了,应该可以执行adb root命令了,但我的魅蓝手机似乎还是不能执行,报错如下:
adbd cannot run as root in production builds
这是因为手机虽然已经root,但是adbd程序并没有以root身份运行,所以电脑无法通过adb root命令获取root权限。google一番后的解决办法是重新安装一个adbd程序:adb insecure,中文版叫超级adb。(点击下载)该程序能让adbd在已经root的手机上以root模式运行。下载后,用相应的adb命令(下面会有介绍)安装到手机,打开软件并启用超级abdb,然后再重新连接到电脑,现在在执行adb root命令就没有问题了。
安装、御卸手机应用
adb install chaoji_16172.apk
该命令将chaoji_1672.apk程序安装到手机,该程序就是上面提到的超级adb程序。
adb uninstall chaoji_1672.apk
御卸chaoji_1672.apk。
这两个命令都有可选的参数可以使用,可以通过adb --help命令查看。