一.adb的工作原理

1.1 adb的概念

adb 全名 Android Debug Bridge,是一个调试工具。

开发安卓应用的程序员必须要掌握
测试工程师在做安卓应用测试时,会使用到

1.2 adb的构成和工作原理

adb 包含三个部分:
1. Client端:运行在开发机器中,即你的开发电脑,用来发送adb命令;
2. Daemon 守护进程:运行在调试设备中,手机或模拟器,用来接收并执行adb命令;
3. Server端:同样运行在开发机器中,用来管理Client端和手机Daemon之间的通信。


adb 工具可以在电脑通过终端命令操作安卓手机/模拟器。

android adb 自带计算器 adb计算器在线_应用场景

 

 

 

android adb 自带计算器 adb计算器在线_应用场景_02

android adb 自带计算器 adb计算器在线_App_03

adb 工作原理
1. client端将命令发送给server端
2. server端会将命令发送给daemon端
3. daemon端进行执行
4. 将执行结果,返回给server端
5. server端将结果再返回给client端

adb 工作原理

 

2、获取包名和界面名

2.1、获取包名和界面名

包名和界面名的概念
获取包名和界面名

2. 2、包名和界面名的概念

包名(package):决定程序的唯一性(不是应用的名字),手机中app的身份的唯一标识
拿计算器举例,一个手机上,可以安装各种版本的计算器,它们都叫计算器。这时候,如何让手机打开我们想要的计算器呢?这里就需要用到包名了

 界面名(activity) – app中页面的名字,一个页面对应一个界面名

有了包名和类名后,才可以通过adb 代码打开一个指定的app

2.3、 获取包名和界面名

应用场景
自动化测试需要通过代码的形式告诉手机测试哪个应用程序的哪一个界面,所以需要通过这个命令进行获取。
使用步骤:
.打开需要测试的应用程序
  2.输入adb 命令

命令:

  windows
adb shell dumpsys window windows | findstr mFocusedApp
# mFocusedApp=AppWindowToken{10480e98 token=Token{2a22f07b ActivityRecord{11e4700a u0 com.android.settings/.Settings t153}}}
# 包名: com.android.settings
# 界面名: .Settings
  mac/linux
adb shell dumpsys window windows | grep mFocusedApp

注意

过滤的单词mFocusedApp可以写成usedApp
界面名在其他场景,被称作启动名

使用场景

  • 辅助自动代码,打开哪一个app的哪一个页面,获取包名和界面名

 

3.文件传输

发送文件到手机

从手机中拉取文件

 

3.1 发送文件到手机

应用场景

  • 将手机需要的数据(数据库文件)在电脑上调整好,直接发送给手机

命令

adb push 电脑中文件的路径 手机中文件夹的路径

示例

adb push   C:\Users\15443\Desktop\wind.txt  /sdcard/iruance.txt

将桌面的wind.txt发送到手机SD卡

 

3.2 从手机上拉取文件

应用场景

  • 将手机产生的文件(数据库文件,日志文件)拉取到电脑中

示例

adb pull   /sdcard/wind.txt  C:\Users\15443\Desktop

将手机SD卡wind.txt发送到桌面

4.获取APP的启动时间

应用场景

  • 如果企业对应用程序的启动速度有要求,则需要使用这个命令进行测试
  • 测试标准:参考同类软件,启动时间不能超出一倍即可

命令

adb shell am start -W 包名/启动名

示例

  • 首先,把我的模拟器退回到桌面,用命令打开软件
adb shell am start -W com.android.settings/.Settings

 

结果时间(毫秒)

  • ThisTime:当前页面消耗的时间
  • TotalTime:ThisTime+app资源加载时间(公共资源)
  • WaitTime:TotalTime+系统消耗时间

 

 

5.获取手机日志

应用场景

  • 程序出现崩溃,程序无响应,把手机运行日志发给开发人员,辅助其定位bug

获取日志步骤

1.打开被测应用程序
2.找到触发bug的位置
3.输入adb logcat 获取日志的命令
4.触发bug
5.获取日志

命令

adb logcat

 

6.adb的其他命令

重启

adb reboot

 

 

安装APP
给电脑上的android模拟器/夜神模拟器安装APP,这里还是以我们之前的京东APP,终端输入:

adb install app APP路径地址

# 示例, 安装京东apk
C:\Users\Anthony>adb install C:\Users\Anthony\Desktop\JDMALL-PC2.apk
[100%] /data/local/tmp/JDMALL-PC2.apk
        pkg: /data/local/tmp/JDMALL-PC2.apk
Success

C:\Users\Anthony>

再来学习一个命令:

abd install -r JDMALL-PC2.apk

安装apk到sd卡。

卸载APP
首先要知道APP的包名,当然,不是APP的名字,而是使用aapt查看出来的包名com.jingdong.app.mall

C:\Users\Anthony>adb uninstall com.jingdong.app.mall
Success

下面的命令是卸载APP但保留数据和缓存文件:

adb uninstall -k com.jingdong.app.mall

启动/停止Server
一般来说,下面两个命令基本不会用到,因为只要设备连接正确,会自动启动 adb server 的,不过大家也需要知道这俩命令:

# 启动
adb start-server
# 停止
adb kill-server

列出手机中装的所有APP的包名

adb shell pm list packages

列出系统应用的所有包名

adb shell pm list packages -s

列出第三方应用包名(排除系统应用的)

adb shell pm list packages -3

清除应用数据及缓存

adb shell pm clear <package name>
# 示例
C:\Users\Anthony>adb shell pm clear com.jd.app.reader
Success

 

幻想毫无价值,计划渺如尘埃,目标不可能达到。这一切的一切毫无意义——除非我们付诸行动。