其实大部分的PC开发机与Android设备的操作都是通过adb(android debug bridge)技术完成的,这是一个C/S架构的命令行工具,主要由三个部分组成
子命令 | 说明 |
---|---|
devices | 列出所有运行的Android设备 |
logcat | 答应Android系统的日志 |
bugreport | 打印dumpsys、dumpstate和logcat的输出,用在错误报告上作为附件辅助开发人员事后分析 |
install | 把一个.apk 文件安装到指定的设备 |
uninstall | 从指定的设备上卸载一个应用 |
pull | 将Android设备上的文件复制到本地开发机 |
push | 将本地开发机上的文件复制到Android设备 |
forward | 将本地套接字连接转发到指定设备的端口,可以是套接字端口,也可以是其他端口 |
ppp | 通过USB执行ppp |
get-serialno | 打印设备的序列号 |
get-state | 打印设备的状态 |
wait-for-device | 在设备可用之后再执行命令 |
start-server | 启动adb服务器进程 |
kill-server | 结束adb服务器进程 |
shell | 打开指定Android设备的shell,以执行shell命令 |
adb devices
List of devices attached
7f324a28 device
其中7f324a28是序列号,是adb生成的用来唯一标识一个模拟器实例或Android设备的字符串
device是状态,表示设备已经链接到adb服务器了。
还有其他的状态,如offline,表示设备没有链接到adb服务器,或者因为某种原因没有响应;no device,表示当前没有连接任何设备
安装应用
adb install test.apk
卸装应用
adb uninstall com.test
安装的参数是需要安装的.apk 文件的绝对路径,而卸载时,参数是应用的包名
从PC上传文件到Android
adb push ~/dumpstate.txt /sdcard/
上面表示将pc上dumpstate.txt上传到Android的sdcard目录
从Android下载到PC
adb pull /sdcard/dumpstate.txt ~/Desktop/
将Android中sdcard的dumpstate.txt下载到PC的桌面
Android是基于Linux系统开发的,因此其也提供了一个Linuxshell以便于程序员运行常见的Linux命令,这些命令都保存在Android系统中的“/system/bin” 文件夹中,可以通过adb启动远程Android系统的shell,或者是直接执行某个shell命令.
Android shell命令中包括了很多常见的Linux shell命令(如 ls,cat,ps,kill)等,下面介绍几个Android附带的重要命令进行介绍
adb shell df
显示Android系统中各个分区的空间
Filesystem Size Used Free Blksize
/dev 1011.4M 164.0K 1011.2M 4096
/mnt/secure 1011.4M 0.0K 1011.4M 4096
/mnt/asec 1011.4M 0.0K 1011.4M 4096
/mnt/obb 1011.4M 0.0K 1011.4M 4096
/system 1009.3M 413.5M 595.8M 4096
/cache 252.1M 4.3M 247.8M 4096
/data 4.9G 186.4M 4.7G 4096
/mnt/shell/emulated 16.0G 29.2M 16.0G 32768
输出Android系统当前的状态,如果不附带任何参数,则其将输出打印到屏幕。因为输出的内容非常多,一般来说都是使用其 “-o”选项输出到Android设备的一个文件中,有时为了节省空间,也可以使用 “-z”选项告诉dumpstate 已gzip格式将内容压缩到输出文件中。
adb shell dumpstate -o /sdcard/dumpstate -z
adb pull /sdcard/dumpstate.txt.gz ~/Desktop
gunzip ~/Desktop/dumpstate.txt.gz
Android系统默认运行了很多系统服务,如监控电池信息的battery 服务等。
可以通过一个小技巧列出所有dumpsys子命令
adb shell dumpsys | grep DUMP