概述
adb(Android debug bridge),用于管理模拟器或真机。包括三个部分:adb客户端(PC上),adb服务器(PC上),adbd(模拟器或真机上)。网上看到下图,贴上来
运行adb客户端时,会检测adb服务器进程时候运行,如果没有运行,启动服务器。当服务器启动时,会绑定到本地的TCP5037端口。并且监听从adb客户端发来的命令。
说明:可以通过 adb start-server启动服务,通过adb kill-server停止服务。
adb服务器与所有正在运行的模拟器和真机连接。它通过扫描5555—5585之间的奇数端口来搜索模拟器或真机,一旦发现adb守护进程,就通过此端口进行连接。需要说明的是,每一个模拟器或真机使用一对端口,奇数端口用于adb连接,偶数端口用于控制台连接。
如果模拟器与adb在5555端口连接,则控制台的连接端口将是5554.
Android 命令
使用Android命令的前提条件,一定要将sdk ools目录放到环境变量中。
使用android -h获取帮助信息。android list device和adb devices输出的内容不一致,应该是android输出的并不是已经运行的设备,而是其能创建虚拟机的设备列表,使用eclipse创建虚拟机的时候,可以选择的那个列表。另外android命令执行的时间比较长。android命令没有特别去操作,只是在网上看到很多人写的博客中都有android命令,但是自己用的时候却提示不是内部或外部命令。所以将使用android命令的前提写出来。
android包含很多子命令。可以通过以下方式查看子命令的帮助信息:
例如查看创建模拟器子命令的帮助信息:android -h create avd
在sdk ools目录中,不止有android命令。还有ddms等命令,可以操作一下试试。
ADB常用命令
adb version 查看adb版本
adb install [-lrtsdg] <file> 安装app
adb install-multiple [-lrtsdpg] <file … >
adb uninstall [-k] <pakage> 卸载app
adb push <local> <remote> 从PC拷贝东西到设备上
adb pull <remote> <local> 从设备拷贝东西到PC上
adb logcat 设备的日志
adb bugreport 查看bug报告
adb jdwp
adb sync [<directory>]
adb shell 进入设备的shell命令
adb emu
adb backup [-f <file>] [-apk|-noapk] [-obb|-noobb] [-shared|-noshared] [-all] [-system|-nosystem] [<packages … >]
adb restore
adb disable-verity
adb enable-verity
adb keygen <file>
adb forward <local> <remote> 将特定端口上的请求转发到模拟器或手机的指定端口上。
adb forward –no-rebind <local> <remote>
adb forward –list
adb forward –remove <local>
adb forward –remove-all
adb reverse <remote> <local>
adb reverse –norebind <remote> <local>
adb reverse –list
adb reverse –remove <remote>
adb reverse –remove-all
连接设备相关:
adb -a 命令针对所有的设备,需要与命令一起使用,例如 adb -a push <local> <remote>
adb -d 命令针对真机,需要与命令一起使用。如果有多个模拟器或手机,当使用adb命令的时候就需要指定目标设备。
adb -e 命令针对虚拟机,需要与命令一起使用。如果有多个模拟器或手机,当使用adb命令的时候就需要指定目标设备。
adb -s <specific device> 命令针对指定设备,需要与命令一起使用。如果有多个模拟器或手机,当使用adb命令的时候就需要指定目标设备。
adb -p <product name or path>
adb -H 访问其他机器上的adb service
adb -P 访问其他机器上的adb service
adb devices [-l] 列出所有的设备,实际列出的就是设备的serialnumber,可以通过-s指定列出的serialNumber找到对应的设备
adb connect <host>[:<port>]
adb disconnect[<host>[:<port>]]
scripting :
adb wait-for-device
adb start-server 启动adb server
adb kill-server 停止adb server
adb get-state 列出设备状态: offline | bootloader | device
adb get-serialno 列出设备的serial number
adb get-devpath
adb remount 从新挂载系统分区,使其可写(system、vendor、oem目录)
adb reboot [bootloader|recovery]
adb reboot sideload
adb reboot sideload-auto-reboot
adb sideload <file>
adb root 重启adbd并获得root权限
adb unroot 重启adbd并释放root权限
adb usb
adb tcpip <port>
Android系统对应的命令(部分为linux命令)
adb shell am start -n <package_name>/.<activity_class_name> // 启动应用
adb shell top // 查看设备cpu和内存占用情况
adb shell top -m 6 // 查看占用内存前6的app
adb shell top -n 1 // 刷新一次内存信息,然后返回
adb shell procrank // 查询各进程内存使用情况
adb shell kill [pid] // 杀死一个进程
adb shell ps // 查看进程列表
adb shell ps -x [PID] // 查看指定进程状态
adb shell service list // 查看后台services信息
emulator命令
可以使用emulator命令启动模拟器。
emulator -avd <avd名称>
emulator -data 镜像文件名称
连接真机的两种方式
可以通过两种方式连接真机,通过usb连接,也可以通过局域网连接,如下图所示。通过局域网连接的方式需要使用命令adb connect <host>[:<port>],断开连接的方式 adb disconnect[<host>[:<port>]]