Android 常用 adb 命令总结
- 格式:docx
- 大小:109.18 KB
- 文档页数:20
Android 常用adb命令总结 针对移动端 Android 的测试,adb命令是很重要的一个点,必须将常用的adb命令熟记于心,将会为 Android 测试带来很大的方便,其中很多命令将会用于自动化测试的脚本当中。
Android Debug Bridge adb其实就是 Android Debug Bridge, Android 调试桥的缩写,
adb是一个 C/S 架构的命令行工具,主要由 3 部分组成: • • 运行在 PC 端的 Client : 可以通过它对 Android 应用进行安装、卸载及调试Eclipse 中的 ADT、SDK Tools 目录下的 DDMS、Monitor 等工具,都是同样地用到了adb的功能来与 Android 设备进行交互。 • • PC 端的手机助手,诸如 360 手机助手、豌豆荚、应用宝等,其除了安装第三方应用方便,其他的功能,基本上都可以通过adb命令去完成,这里建议测试人员尽量不要在电脑上安装这类手机助手,因为其自带的adb程序可能会与 Android SDK 下的adb程序产生冲突,5037 端口被占用,导致使用adb命令时无法连接到设备 • • 运行在 PC 端的 Service : 其管理客户端到 Android 设备上adb后台进程的连接adb服务启动后,Windows 可以在任务管理器中找到 adb.exe 这个进程 • • 运行在 Android 设备上的adb后台进程执行adb shell ps | grepadbd,可以找到该后台进程,windows 请使用findstr替代grep[xuxu:~]$ adb shell ps | grepadbdroot 23227 1 6672 832 ffffffff 00019bb4 S /sbin/adbd • 这里注意一个地方,就是adb使用的端口号,5037,有必要记一下 • • 接下来我将adb命令分为三部分进行介绍,adb命令、adb shell 命令、linux命令
adb命令 在开发或者测试的过程中,我们可以通过adb来管理多台设备,其一般的格式为: adb [-e | -d | -s ] 在配好环境变量的前提下,在命令窗口当中输入adb help 或者直接输入adb,将会列出所有的选项说明及子命令。 这里介绍一些里面常用的命令: • • adb devices , 获取设备列表及设备状态[xuxu:~]$ adbdevicesList of devices attached44c826a0 device • • adb get-state , 获取设备的状态[xuxu:~]$ adb get-statedevice设备的状态有 3 钟,device , offline , unknown • • device:设备正常连接 • • offline:连接出现异常,设备无响应 • • unknown:没有连接设备 • • adb kill-server , adb start-server , 结束adb服务,启动adb服务,通常两个命令一起用一般在连接出现异常,使用adb devices 未正常列出设备,设备状态异常时使用 kill-server,然后运行 start-server 进行重启服务 • • adblogcat , 打印 Android 的系统日志,这个可以单独拿出来讲 • • adbbugreport , 打印dumpsys、dumpstate、logcat的输出,也是用于分析错误输出比较多,建议重定向到一个文件中adbbugreport> d:\bugreport.log • • adb install , 安装应用,覆盖安装是使用 -r 选项windows 下如果需要安装含有中文名的apk,需要对adb进行修改,百度可以找到做出修改的adb , 支持中文命令的apk,请自行搜索 • • adb uninstall , 卸载应用,后面跟的参数是应用的包名,请区别于apk文件名'-k' means keep the data and cache directories , -k 选项,卸载时保存数据和缓存目录 • • adb pull , 将 Android 设备上的文件或者文件夹复制到本地 • • 例如复制Sdcard下的 pull.txt 文件到 D 盘:adb pull sdcard/pull.txt d:\如果需要重命名为 rename.txt:adb pull sdcard/pull.txt d:\rename.txt注意权限,复制系统权限的目录下的文件,需要 root ,并且一般的 Android 机 root 之后并不能使用命令去复制,而需要在手机上使用类似于 RE 的文件浏览器,先对系统的文件系统进行挂载为可读写后,才能在手机上复制移动系统文件,这里推荐使用小米手机的开发版本,IUNI 也是不错滴~~ • • adb push , 推送本地文件至 Android 设备 • • 例如推送 D 盘下的 push.txt 至Sdcard:adb push d:\push.txt sdcard/sdcard后面的斜杠不能少,否则会出现下面的错误:[xuxu:~]$ adb push push.txt sdcardfailed to copy 'push.txt' to 'sdcard': Is a directory权限问题同 pull 命令 • • adb root , adb remount, 只针对类似小米开发版的手机有用,可以直接已这两个命令获取 root 权限,并挂载系统文件系统为可读写状态 • • adb reboot , 重启 Android 设备bootloader , 重启设备,进入fastboot模式,同adb reboot-bootloader命令 • • recovery , 重启设备,进入 recovery 模式,经常刷机的同学比较熟悉这个模式 • • adb forward , 将宿主机上的某个端口重定向到设备的某个端口adb forward tcp:1314 tcp :8888 执行该命令后所有发往宿主机 1314 端口的消息、数据都会转发到 Android 设备的 8888 端口上,因此可以通过远程的方式控制 Android 设备。
adb shell 命令 有人问过我,为什么会知道这么多的命令,答案就是我比较爱折腾,这里大家先要了解我为什么要区分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 目录复制了出来,然后一个一个的去试。。囧~~
打开这些文件就可以发现,里面有些命令其实是一个 shell 脚本,例如打开 monkey 文件: # Script to start "monkey" on the device, which has a very rudimentary# shell.#base=/systemexport CLASSPATH=$base/framework/monkey.jartrap "" HUPexecapp_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=/systemexportCLASSPATH=$base/framework/am.jarexecapp_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]$ lltotal 0drwxr-xr-x 3 xuxu staff 102B 4 2 10:57 amdrwxr-xr-x 3 xuxu staff 102B 4 2 10:57 bmgrdrwxr-xr-x 3 xuxu staff 102B 4 2 10:57 budrwxr-xr-x 3 xuxu staff 102B 4 2 10:57 contentdrwxr-xr-x 3 xuxu staff 102B 4 2 10:57 imedrwxr-xr-x 3 xuxu staff 102B 4 2 10:57 inputdrwxr-xr-x 3 xuxu staff 102B 4 2 10:57 mediadrwxr-xr-x 3 xuxu staff 102B 4 2 10:57 pmdrwxr-xr-x 3