组合 rmi 时间 multicast 多台 输出 指定 android-s
针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命令将会用于自动化测试的脚本当中。
adb 其实就是
, Android 调试桥的缩写,adb 是一个 C/S 架构的命令行工具,主要由 3 部分组成:
- Android Debug Bridge
Eclipse 中的 ADT、SDK Tools 目录下的 DDMS、Monitor 等工具,都是同样地用到了 adb 的功能来与 Android 设备进行交互。
PC 端的手机助手,诸如 360 手机助手、豌豆荚、应用宝等,其除了安装第三方应用方便,其他的功能,基本上都可以通过 adb 命令去完成,这里建议尽量不要在电脑上安装这类手机助手,因为其自带的 adb 程序可能会与 Android SDK 下的 adb 程序产生冲突,
- 测试人员
端口被占用,导致使用 adb 命令时无法连接到设备
- 5037
adb 服务启动后,Windows 可以在任务管理器中找到 adb.exe 这个进程
执行,可以找到该后台进程,windows 请使用
- adb shell ps | grep adbd
替代 grep
- findstr
这里注意一个地方,就是 adb 使用的端口号,
- [xuxu: ~] $ adb shell ps | grep adbd root 23227 1 6672 832 ffffffff 00019bb4 S / sbin / adbd
,有必要记一下接下来我将 adb 命令分为三部分进行介绍,
- 5037
、
- adb 命令
、
- adb shell 命令
- linux 命令
在开发或者测试的过程中,我们可以通过 adb 来管理多台设备,其一般的格式为:
adb [-e | -d | -s < 设备序列号>] <子命令>
在配好环境变量的前提下,在命令窗口当中输入 adb help 或者直接输入 adb ,将会列出所有的选项说明及子命令。
这里介绍一些里面常用的命令:
- [xuxu: ~] $ adb devices List of devices attached 44c826a0 device
- [xuxu: ~] $ adb get - state device
设备的状态有 3 钟,,
- device
,
- offline
device:设备正常连接 offline:连接出现异常,设备无响应 unknown:没有连接设备
- unknown
一般在连接出现异常,使用 adb devices 未正常列出设备, 设备状态异常时使用 kill-server,然后运行 start-server 进行重启服务
输出比较多,建议重定向到一个文件中
- adb bugreport > d: \bugreport.log
windows 下如果需要安装含有中文名的 apk ,需要对 adb 进行修改,百度可以找到做出修改的 adb , 支持中文命令的 apk,请自行搜索
,请区别于
- 应用的包名
- apk 文件名
'-k' means keep the data and cache directories , -k 选项,卸载时保存数据和缓存目录
- adb pull sdcard / pull.txt d: \
如果需要重命名为 rename.txt:
- adb pull sdcard / pull.txt d: \rename.txt
注意权限,复制系统权限的目录下的文件,需要 root ,并且一般的 Android 机 root 之后并不能使用命令去复制,而需要在手机上使用类似于 RE 的文件浏览器,先对系统的文件系统进行挂载为可读写后,才能在手机上复制移动系统文件,这里推荐使用小米手机的开发版本,IUNI 也是不错滴~~
- adb push d: \push.txt sdcard /
sdcard 后面的斜杠不能少,否则会出现下面的错误:
- [xuxu: ~] $ adb push push.txt sdcard failed to copy'push.txt'to'sdcard': Is a directory
权限问题同 pull 命令
bootloader , 重启设备,进入 fastboot 模式,同 adb reboot-bootloader 命令
recovery , 重启设备,进入 recovery 模式,经常刷机的同学比较熟悉这个模式
执行该命令后所有发往宿主机 1314 端口的消息、数据都会转发到 Android 设备的 8888 端口上,因此可以通过远程的方式控制 Android 设备。
- adb forward tcp: 1314 tcp: 8888
手机、PC 处于相同的网络下,手机 root ,安装应用 adbWireless ,启动应用后点击界面中间的按钮: 接着运行, 即可通过无线的方式连接手机,缺点是速度比较慢
- adb connect 192.168.1.102
有人问过我,为什么会知道这么多的命令,答案就是我比较爱折腾,这里大家先要了解我为什么要区分 adb 命令和 adb shell 命令 。
简单点讲,adb 命令是 adb 这个程序自带的一些命令,而 adb shell 则是调用的 Android 系统中的命令,这些 Android 特有的命令都放在了 Android 设备的 system/bin 目录下,例如我再命令行中敲这样一个命令:
- [xuxu: ~] $ adb shell hehe / system / bin / sh: hehe: not found
很明显,在 bin 目录下并不存在这个命令。
自己爱折腾,想看看有哪些命令,也不想去找文档,于是就启动模拟器,将整个
目录复制了出来,然后一个一个的去试。。囧~~
- system/bin
- #Script to start "monkey"on the device,
- which has a very rudimentary#shell.#base = /system
- export CLASSPATH=$base/framework / monkey.jar trap ""HUP exec app_process $base / bin com.android.commands.monkey.Monkey $ *
再比如打开 am:
- # ! /system/bin / sh##Script to start "am"on the device,
- which has a very rudimentary#shell.#base = /system
- export CLASSPATH=$base/framework / am.jar exec app_process $base / bin com.android.commands.am.Am "$@"
还有 SDK sources/android-20/com/android/commands 目录下:
- [xuxu: ...oid - 20 / com / android / commands] $ pwd / Users / xuxu / utils / android / android - sdk - macosx / sources / android - 20 / com / android / commands[xuxu: ...oid - 20 / com / android / commands] $ ll total 0 drwxr - xr - x 3 xuxu staff 102B 4 2 10 : 57 am drwxr - xr - x 3 xuxu staff 102B 4 2 10 : 57 bmgr drwxr - xr - x 3 xuxu staff 102B 4 2 10 : 57 bu drwxr - xr - x 3 xuxu staff 102B 4 2 10 : 57 content drwxr - xr - x 3 xuxu staff 102B 4 2 10 : 57 ime drwxr - xr - x 3 xuxu staff 102B 4 2 10 : 57 input drwxr - xr - x 3 xuxu staff 102B 4 2 10 : 57 media drwxr - xr - x 3 xuxu staff 102B 4 2 10 : 57 pm drwxr - xr - x 3 xuxu staff 102B 4 2 10 : 57 requestsync drwxr - xr - x 3 xuxu staff 102B 4 2 10 : 57 settings drwxr - xr - x 7 xuxu staff 238B 4 2 10 : 57 svc drwxr - xr - x 6 xuxu staff 204B 4 2 10 : 57 uiautomator drwxr - xr - x 3 xuxu staff 102B 4 2 10 : 57 wm
有没有熟悉的命令? am 、pm、uiautomator ...
下面介绍一些常用的 adb shell 命令 (其中 pm、am 命令比较庞大,使用四级标题)
Package Manager , 可以用获取到一些安装在 Android 设备上得应用信息
pm 的源码 Pm.java , 直接运行 adb shell pm 可以获取到该命令的帮助信息
不带任何选项:列出所有的应用的包名(不知道怎么找应用的包名的同学看这里)
- adb shell pm list package
-s:列出系统应用
- adb shell pm list package - s
-3:列出第三方应用
- adb shell pm list package - 3
-f:列出应用包名及对应的 apk 名及存放位置
- adb shell pm list package - f
-i:列出应用包名及其安装来源,结果显示例子:
- package:com.zhihu.android installer=com.xiaomi.market
- adb shell pm list package - i
命令最后增加 FILTER:过滤关键字,可以很方便地查找自己想要的应用参数组合使用,例如,查找三方应用中
- 知乎
来源: http://www.bubuko.com/infodetail-2166616.html