一、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

android 打开命令行窗口大小 android命令行工具_重启

 

三、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:\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:\
  • 或者重命名:adb pull sdcard/pull.txt d:\rename.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
  • 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:/ $    //进入真机环境