adb命令
因为前段时间在做手机app的灵敏度测试,而测试工具是基于adb的,所以就顺便简单学习一下adb
下面把adb help的命令列出来~橙色部分是目前常用的
使用命令
连接设备
-d -连接到唯一的USB设备,当有多个设备时会返回错误
-e -连接到唯一的正在运行的仿真器,当有多个仿真器时返回错误
-s <specific device> -连接到指定序列号的设备或仿真器,会重写环境变量ANDROID_SERIAL
-p <product name or path> -简单的产品名称如'sooner', 或一个app输出目录的绝对/相对路径。如果-p没有指定,那么使用环境变量值ANDROID_PRODUCT_OUT,它是一个绝对路径
[-d][-e][-s][-p]几个后面再跟其它命令即可
adb devices [-l] -列出所有连接的设备
adb connect <host>[:<port>] -通过TCP/IP连接一个设备。默认使用5555端口
adb disconnect [<host>[:<port>]] -断开用TCP/IP连接的设备,默认使用5555端口。如果没有加host/port任何参数,它会断开所有TCP/IP连接的设备
控制设备
adb push <local> <remote> -把文件/目录拷贝到设备上
adb pull <remote> [<local>] -从设备把文件/目录拷贝到本地, remote是远程绝对路径,local是本地路径
adb sync [ <directory> ] -copy host->device only if changed (-l means list but don't copy) (see 'adb help all')
adb shell -运行远程shell交互,这样就可以直接在在设备上执行命令
adb shell <command> -运行远程shell命令
adb emu <command> -运行仿真器控制台命令
adb logcat [ <filter-spec> ] -查看设备日志,日志是不断实时更新的
adb forward <local> <remote> -forward socket connections
forward specs are one of:
tcp:<port>
localabstract:<unix domain socket name>
localreserved:<unix domain socket name>
localfilesystem:<unix domain socket name>
dev:<character device name>
jdwp:<process pid> (remote only)
adb jdwp -列出进程的pid,这些进程host JDWP(JPDA:Java Platform Debugger Architecture) 是 Java 平台调试体系结构的缩写 JDWP 协议:Java Debug Wire Protocol Transport Interface)
adb install [-l] [-r] [-s] [--algo <algorithm name> --key <hex-encoded key> --iv <hex-encoded iv>] <file> -把安装包推送到设备上且进行安装
('-l' means forward-lock the app)
('-r' 重装app,保存数据)
('-s' 装在SD卡上而不是内存)
('--algo', '--key', and '--iv' 说明文件已经被加密)
adb uninstall [-k] <package> -从设备上移除app包('-k' 保留数据和缓存目录)
adb bugreport -返回设备的所有应该被包含在bug报告中的数据
adb backup [-f <file>] [-apk|-noapk] [-shared|-noshared] [-all] [-system|-nosystem] [<packages...>]
-把设备数据档案写到<file>文件中。如果-f没有提供,则写在当前目录的backup.ab文件
(-apk|-noapk 允许/不允许备份.apks,默认不允许)
(-shared|-noshared 允许/不允许共享内存/SD card内容的备份,默认不允许)
(-all 备份所有安装的应用)
(-system|-nosystem -all命令包含/不包含系统应用,默认包含)
(<packages...> 列出要备份的应用。如果-all或-shared已经给出,那么这个列表是可选的)
adb restore <file> -从备份档案<file>中恢复设备数据
adb help -显示帮助页信息
adb version -显示版本号
执行脚本
adb wait-for-device -阻塞直到设备连接
adb start-server -保证有一个服务正在运行
adb kill-server -杀死服务
adb get-state -打印信息: offline | bootloader | device
adb get-serialno -打印: <serial-number>
adb get-devpath -打印: <device-path>
adb status-window -持续打印一个特定设备的状态
adb remount -把/system重新挂载到设备上read-write
adb reboot [bootloader|recovery] -重启设备,选择进入bootloader或recovery program
adb reboot-bootloader -重启设备,进入bootloader
adb root -以root权限重启adbd守护进程
adb usb -重启adbd守护进行并监听USB
adb tcpip <port> -重启adbd守护进行并在特定的端口监听TCP
网络命令
adb ppp <tty> [parameters] -通过USB运行PPP
注:不应该自动启动一个PPP连接
<tty> PPP流的tty,比如 dev:/dev/omap_csmi_tty1
[parameters] - Eg. defaultroute debug dump local notty usepeerdns
adb sync [ <directory> ] -如果<directory>没有给出,好么/system和/data分区都会被更新;如果<localdir>是"system"或"data",那么只有对应分区会被更新
环境变量
ADB_TRACE -打印debug信息。格式为(中间用,格开):1 or all, adb, sockets, packets, rwx, usb, sync, sysdeps, transport, jdwp
ANDROID_SERIAL -要连接的序列号(-s优先级更高)
ANDROID_LOG_TAGS -当使用logcat选项,那么只有这些debug标签会被打印
遇到的问题
- error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 (10048)
1. 安装了多个adb,要删除一个
which adb可以查看默认的adb位于哪里
2. netstat -nao | findstr “5307”
查看哪些进程占用5307端口
3. 任务管理器
查看——PID——第二步查到的pid
4. 遇到是360占用的问题
右键——打开文件位置——想办法把对应的exe删除掉(使用360解除占用)