APP软件测试之adb命令

APP软件测试之adb命令

abd安装配置

adb介绍
  • adb(Android Debug Bridge)安卓调试桥梁,是Android-SDK里面的一个客户端-服务端程序
  • 这里的客户端指的是我们操作的电脑
  • 服务端指的是Android设备或者模拟器
  • adb命令简单的来说就是我们在电脑端使用手机的桥梁,可以让我们在电脑上面对手机进行各种各样的操作
  • 官方文档:https://developer.android.com/studio/command-line/adb#top_of_page
aapt2
  • 和adb类似,但是没有adb强大,有些命令不一样,但是大部分aapt命令都可以使用adb来完成
  • 由于aapt现在的版本要使用Android Studio进行安装
  • 如果使用Android Studio进行安装的话,可以在系统配置中找到Android SDK中选择一下两种然后点击OK,等待右下角安装完成
  • 此处我们只讲解aapt
    • 如果面试中涉及到,可以回答说以前接触过和adb命令基本差不多,aapt上很多命令通过adb都可以实现
    • 如果工作中涉及到,基本大部分我们都可以使用adb代替,但是有些特殊性可能会涉及到的话,可以在百度搜索下,获取去官网查看官方文档:https://developer.android.com/studio/command-line/aapt2
## 包含adb
Android SDK Platform-Tools
## 包含aapt
Android SDK Tools

image-20191218183707914

adb命令的使用范畴
  • 在Android设备上运行shell命令
  • 管理Android设备和模拟器
  • 在电脑和设备之间上传、下载文件
  • 安装apk软件包到设备或者Android模拟器
adb的组成
  • 客户端:用于发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
  • 守护进程 (adbd):在设备上运行命令。守护进程在每个设备上作为后台进程运行。
  • 服务器:管理客户端和守护进程之间的通信。服务器在开发计算机上作为后台进程运行。
adb安装
  • 安装包下载路径:https://developer.android.com/studio/releases/platform-tools.html
  • 下载系统对应的版本
    image-20191218183744995
  • Windows安装
    • 下载对应自己电脑的安装包
    • 配置系统环境变量依次打开–>此电脑–>在空白地方右键属性–>高级系统设置–>环境变量–>系统环境变量
    • 在系统环境变量中查找path环境变量,并在其值处添加以下变量值
解压后的软件目录位置;

image-20191218183817257

  • 配置完成后点击确定保存,并重新打开cmd窗口验证是否安装成功
adb version

image-20191218183845250

  • Mac安装
    • 通过命令行安装adb程序
    • 通过 Homebrew 安装
brew cask install android-platform-tools
  • 测试是否正常安装
adb devices
  • 下载软件包配置环境变量安装adb程序
  • 下载上面的压缩包,并解压到电脑任意位置(以后不能轻易改变,否则adb环境变量失效)
  • 使用命令行工具进入当前用户根目录
cd ~
  • 打开命令行工具修改.bash_profile配置文件
vim .bash_profile
  • 保存并退出,按ESC,输入wq,回车键保存
  • 更新配置文件让配置生效
source .bash_profile
  • 测试adb配置是否成功
adb version
   
## 如果成功则会出现类似以下字样,提示adb的安装版本信息等
Android Debug Bridge version 1.0.41
Version 29.0.4-5871666
Installed as /usr/local/bin/adb

## 如果失败,则出现adb命令不存在

image-20191218183859672

模拟器安装

  • 没有安卓手机可以下载安装夜神模拟器进行测试使用
  • 百度夜神模拟器或者打开夜神模拟器官网:https://www.yeshen.com/下载夜神模拟器
  • 安装,并打开夜神模拟器软件,Mac系统可能要求输入两次电脑密码

adb使用方法以及以及常见命令

adb常用命令
查看adb帮助手册
adb --help

image-20191218183912449

  • 监测链接到电脑的安卓设备,我们常用的检测命令
## 首先我们的手机或者模拟器要开启开发者模式
## List of devices attached (连接的设备清单)
adb devices
  • 如果是通过无线或者USB连接的手机,则可能会出现连接的手机型号等
  • 重置 adb 主机
## 如果我们在使用adb命令的时候出现部分连接失败等异常信息,可以通过重置adb主机进行恢复
adb kill-server
  • 查询设备列表信息
adb devices -l
  • 将命令发送至特定设别
## 如果有多个设备同时连接,则在发出命令的时候可以指定发给某个设备
## adb -s 设备的序列号 命令
adb -s emulator-5555 install helloWorld.apk

注意:如果您在多台设备可用时发出命令但未指定目标设备,则 adb 会生成错误。

  • 如果电脑是Mac系统可能会出现连接不到的情况,使用以下命令后在使用检测,就可以检测到了
## 因为我们的夜神模拟器是运行在本机62001端口,我们可以使用以下命令进行连接
adb connect 127.0.0.1:62001

image-20191218183940607

打印日志命令(作为测试人员的必备命令)
adb logcat
## 停止我们可以按Ctrl+c(Mac下可以使用Control(^)+c)组合键
## 一般我们dos(shell)窗口打印的日志很多,我们可以使用以下命令进行日志输出
adb logcat > 目录/文件名
## 导出命令因adb logcat命令是实时监控日志增长,所以日志是自动生成,并且自动导出,如需要停止,则可以Ctrl+c强制停止,然后我们可以在对应目录查询到我们需要的日志

image-20191218183949039

  • 日志内容重定向
## 将日志文件重定向输出到本机D盘根目录的logcat.log文件中
adb logcat > D:\logcat.log
  • 日志文件添加时间参数
## 对日志文件中新增时间参数
adb logcat -v time
  • Android log输出量巨大,特别是通讯系统的log,因此,Android把log输出到不同的缓冲区
## 目前定义了四个缓冲区
1、Radio		输出通讯系统的日志(包含WiFi还有蓝牙等日志信息)
2、System	输出系统组件的日志(包括系统服务等信息)
3、Events	输出event模块的日志(安卓手机运行事件日志输出到log中,启动关闭软件等事件)
4、Main		输出Java层的日志(不属于上面三层的log)
## 如果想输出通讯系统的log
adb logcat -b radio
## 默认log输出(不指定缓冲区的情况下)是输出system和main缓冲区的日志
  • logcat日志分析
11-04 12:26:28.965 W/ActivityManager(  486): 	at com.android.server.am.ActivityManagerService.handleAppDiedLocked(ActivityManagerService.java:3606)

## 上述日志又6部分组成
1、日志生成的时间,比如上面的11-04 12:26:28.965
2、日志的级别,也叫优先级,在Android日志中日志等级从低到高分为以下几种
  	V--verbose	啰嗦,最低级别,开发调试中的一些相关详细信息,仅在开发调试中使用,不可再线上产品中输出
  	D--Bebug		调试,用于调试的信息,可以在线上产品中关闭,比较常见
  	I--Info			信息,一般提示性日志信息
  	W--Waring		警告,提示性的警告日志,不会影响系统正常运行,仅仅是告警提示
  	E--Error		错误,已经可以影响系统或者软件的正常运行,比如应用crash(崩溃)时输出的日志
3、标签(tag),表明日志的发起者和方便日志的过滤筛选,如上面的日志中的ActivityManager
4、PID,进程ID,此条日志软件的进程ID
5、日志正文,日志的主体信息
  • logcat过滤器
## logcat中信息太多,为了减少不想要看到的日志,可以建立一个过滤器
tag:priority (标签:优先级)
## 例如以下,表示过滤优标签为ActivityManager,优先级为W以下的日志以下的日志
ActivityManager:W  
## 如果想过滤所有标签可以使用*代替:*:W  例如下面的
adb logcat *:E -v time ## 表示打印error级别的日志信息

## 实际使用中尽量避免使用过滤器,通畅我们Linux命令也是可以使用的比如
adb logcat -v time | grep "包名"
adb logcat -v time | grep "com.google.android"
  • 此处我们略微提及下Mac系统和Windows系统的键位对应,以后将不再对Mac电脑和Windows电脑的键位做解释
  • (⇧)Shift------------->Shift
  • (⌃)Control---------->Ctrl
  • (⌥)Option---------->Alt
  • (⌘)Command----->Win
    image-20191218184006239
登录设备shell命令页面
  • 使用shell命令登录后ll、ls命令都可以用,相当于进入简单的远程Linux命令窗口
adb shell
## 如果切进去不在root权限下可以使用 su 切换到root用户下
  • 使用命令登录到手机shell命令页面
  • 使用exit可以退出shell页面
  • 可以使用ll命令打印当前目录下所有文件和目录
  • 可以使用pwd命令打印当前路径
  • 以下连接介绍安卓手机根目录几个主要目录目录的用途
    https://www.frostysun.cn/archives/21.html
从本地推送信息到手机
adb push <本机路径> <手机路径> 
## 比如我们从电脑端D盘根目录的一个致爱丽丝.mp3的文件复制到/sdcard/目录就可以直接使用下面命令
adb push D:/致爱丽丝.mp3 /sdcard/
  • 电脑文件路径最好直接使用鼠标拖拽,建议文件或者路径中不要包含特殊字符以及空格等等
  • 这边有个小问题,Windows上面的路径都使用\Mac以及Linux系统的目录使用/
  • 同理,安卓的系统shell使用的是基于Linux的底层内核,我们在安卓上面的路径都必须使用/
从手机拉取文件到本地目录
adb pull <手机路径> <本机路径>
## 比如我们从手机端复制一个sd卡下的一个致爱丽丝.mp3的文件到D盘下面的test目录就可以直接使用下面命令
adb pull /sdcard/致爱丽丝.mp3 D:/test/
登录设备shell命令页面,ll、ls命令都可以用,相当于进入简单的远程Linux命令窗口
adb shell
## 如果切进去不在root权限下可以使用 su 切换到root用户下
通过命令安装apk软件
adb install xxx.apk
## 我们可以直接安装电脑本机的apk包,也可以安装我们上传到手机的apk包
## 如果直接安装电脑本机的直接拖拽文件到命令窗口进行安装
## 出现Success则表示安装成功

image-20191218184023018

查询已安装的软件包名
adb shell pm list packages
## 当然我们也可以使用管道符进行过滤关键字,一些通用的关键字等
## Linux
adb shell pm list packages | grep qq
## Windows 
adb shell pm list packages | findstr qq
## 这里的关键字,我们要使用安装包中的一些关键字,但是我们手机中安装的软件同城非常之多,我们可以使用下面的命令查看前台运行的软件包名,进行查询

image-20191218184031656

查看前台正在运行的应用包名
## Linux
adb shell dumpsys activity | grep "mFocusedActivity"
## Windows 
adb shell dumpsys activity | findstr "mFocusedActivity"
## 涉及现在新款手机分屏,我们的手机焦点只有一个软件在前台

## 在Android 8.0+的版本中mFocusedActivity已经失效,可以使用以下的命令获取
## Linux
adb shell dumpsys activity | grep "mResumedActivity"
## Windows 
adb shell dumpsys activity | findstr "mResumedActivity"

image-20191218184059151

通过命令卸载已经安装的软件,卸载的软件要写软件的包名
adb uninstall com.xxx.xxx
## 如果出现success则表示卸载成功

image-20191218184106959

通过WiFi调试手机
adb connect/disconnect
## 我们现在使用的模拟器,IP地址默认是127.0.0.1,但是我们本地127.0.0.1是电脑,不属于手机,我们可以增加夜神模拟器的默认端口号进行区分
## 使用的IP地址是我们的手机端的局域网IP地址,并不是手机百度搜索IP出现的IP地址,那个是公网地址
## 也可以使用以下命令设置端口号,5555为默认端口号,也可以设置其它端口号,端口号为需要为4位数
## 没有特殊需求,尽量不要修改默认端口号
adb tcpip 8888 
## 如果没有修改默认5555端口号即可无需添加端口号即可
adb connect 127.0.0.1:62001
## 如果需要测试我们电脑到手机端的网络是否通畅,可以使用以下命令
ping 192.168.3.101

image-20191218184116186

Android设备目录结构

image-20191218184202364

  • system分区
    • Android系统的系统关键文件目录,用于存放系统文件,类似于Windows的C盘中Windows目录
    • 修改system目录的文件可能会导致系统升级失败,每次升级Android系统会对system目录下的文件进行hash码校验
      image-20191218184212393
  • data分区
    • 用户安装的软件,照片,下载的文件,软件的缓存,用户大部分信息文件都保存在此目录下
    • 需要有root权限才可以进入到data目录下
    • 软件APP目录下目录详解
app_webview 	目录下存放的事APP的界面文件
cache		APP缓存目录
databases	数据库文件
files		APP存储的用户文件
lib		软件的库文件以.so后缀的
shared_prefs	APP的配置文件

image-20191218184252057

  • sdcard分区
    • 内置存储卡,也就是系统磁盘,我们手机出厂的时候会说128G内存,这个sdcard就是这个128G的内置存储卡
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值