一、adb概述
adb(Android Debug Bridge),安卓平台调试桥,是连接Android手机与PC端的桥梁,通过adb可以管理、操作模拟器和设备,如安装软件、查看设备软硬件参数、系统升级、运行shell命令等。
针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命令将会用于自动化测试的脚本当中。
主要功能有:
- 运行设备的shell(命令行)
- 管理模拟器或设备的端口映射
- 计算机和设备之间上传/下载文件
- 将本地apk软件安装至模拟器或android设备
adb是一个C/S架构的命令行工具,主要由三部分组成:
- 运行在 PC 端的 Client(ADB-client) : 可以通过它对 Android 应用进行安装、卸载及调试
- Eclipse 中的 ADT、SDK Tools 目录下的 DDMS、Monitor 等工具,都是同样地用到了 adb 的功能来与 Android 设备进行交互。
- PC 端的手机助手,诸如 360 手机助手、豌豆荚、应用宝等,其除了安装第三方应用方便,其他的功能,基本上都可以通过 adb 命令去完成,这里建议
测试人员
尽量不要在电脑上安装这类手机助手,因为其自带的 adb 程序可能会与 Android SDK 下的 adb 程序产生冲突,5037
端口被占用,导致使用 adb 命令时无法连接到设备
- 运行在 PC 端的 Service(ADB-server) : 是一个始终在后台运行的进程,作为与手机端交互的唯一接口。ADB-server处理ADB-client的请求,一部分请求无须与设备交互,直接在PC本地完成;剩下的请求需要与设备端的adbd交互,ADB-server起到一个swicher的作用。
- adb 服务启动后,Windows 可以在任务管理器中找到 adb.exe 这个进程
- 运行在 Android 设备上的 adb 后台进程(adbd)
- 执行
adb shell ps | grep adbd
,可以找到该后台进程,windows 请使用findstr
替代 grep - adb使用端口:5037
- 执行
下载adb kit,包括adb和驱动: 官网下载
二、adb安装
环境准备:mac
1、安装homebrew(省略)
2、安装adb
brew cask install android-platform-tools
反之,brew cask uninstall android-paltform-tools 卸载adb
3、运行adb
输入adb,此时会出现adb的帮助信息,说明adb安装成功
adb 或 adb help
三、adb命令简介
在开发或者测试的过程中,我们可以通过 adb 来管理多台设备,其一般的格式为:
adb [-e | -d | -s <设备序列号>] <子命令>
这里介绍一些常用命令:
- adb devices 获取设备列表及设备状态
- adb get-state 获取设备的状态
- 设备状态有三种
- device:设备正常连接
- offline:连接出现异常,设备无响应
- unknown:没有连接设备
- 设备状态有三种
- adb kill-server,adb start-server 结束adb服务,启动adb服务,通常两个命令一起使用
- 一般在连接出现异常,使用adb devices未正常列出设备,设备状态异常时使用kill-server,然后云心start-server进行重启服务
- adb logcat 打印Android的系统日志,这个可以单独拿出来讲,参考资料
- adb bugreport 打印dumpsys、dumpstate、logcat的输出,也是用于分析错误
- 输出内容较多,建议重定向到一个文件中
- adb bugreport > d:ugreport.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:
- 或者重命名:adb pull sdcard/pull.txt d:
ename.txt
- 注意需要root权限
- adb push 推送本地文件至Android设备
- 例如推送D盘下的push.txt至sdcard
- adb push d:push.txt sdcard/
- sdcard后面的斜杠不能少,否则会出现如下错误
- failed to copy 'push.txt' to 'sdcard':Is a directory
- 例如推送D盘下的push.txt至sdcard
- 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 connect 远程连接Android设备
- 手机、pc处于相同网络下,手机root,安装应用adbWireless,启用应用后点击界面中间的按钮
- 接着运行
adb connect 192.168.1.102
, 即可通过无线的方式连接手机,缺点是速度比较慢
四、遇到的问题
- 连接手机模拟器常用命令:
- 逍遥模拟器:adb connect 127.0.0.1:21503
-
夜神模拟器:adb connect 127.0.0.1:62001
- mumu模拟器:adb connect 127.0.0.1:7555
- 当PC端连接多个设备时需要指定一个机器进行测试
- adb devices //List of devices attached
- adb -s [SERIAL] shell
-
shell@Coolpad9190_T00:/ $ //进入真机环境