ADB:移动端专项测试必备神器!!
01 Android调试桥 (adb)
Android调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。
adb命令可用于执行各种设备操作(例如安装和调试应用),并提供对Unix shell(可用来在设备上运行各种命令)的访问权限。
它是一种客户端-服务器程序,包括以下三个组件:
- 客户端:用于发送命令。
客户端在开发计算机上运行。您可以通过发出adb命令来从命令行终端调用客户端。
- 守护进程 (adbd):在设备上运行命令。
守护进程在每个设备上作为后台进程运行。
- 服务器:管理客户端和守护进程之间的通信。
服务器在开发机器上作为后台进程运行
adb的工作原理
当您启动某个adb客户端时,客户端会先检查是否有adb服务器进程正在运行。如果没有,它将启动服务器进程。
服务器在启动后会与本地TCP端口5037绑定,并监听adb客户端发出的命令 - 所有adb客户端均通过端口5037与adb服务器通信。
然后,服务器会与所有正在运行的设备建立连接。它通过扫描5555 到5585之间(该范围供前16个模拟器使用)的奇数号端口查找模拟器。
服务器一旦发现adb守护进程 (adbd),便会与相应的端口建立连接。请注意,每个模拟器都使用一对按顺序排列的端口 - 用于控制台连接的偶数号端口和用于adb连接的奇数号端口。
例如:
模拟器 1,控制台:5554
模拟器 1,adb:5555
模拟器 2,控制台:5556
模拟器 2,adb:5557
依此类推
如上所示,在端口5555处与adb连接的模拟器与控制台监听端口为 5554的模拟器是同一个。
服务器与所有设备均建立连接后,您便可以使用adb命令访问这些设备。由于服务器管理与设备的连接,并处理来自多个adb客户端的命令,因此您可以从任意客户端(或从某个脚本)控制任意设备。
在设备上启用adb调试
要在通过USB连接的设备上使用adb,您必须在设备的系统设置中启用USB调试(位于开发者选项下)
在搭载Android 4.2及更高版本的设备上,“开发者选项”屏幕默认情况下处于隐藏状态。如需将其显示出来,请依次转到设置 > 关于手机,然后点按版本号七次。返回上一屏幕,在底部可以找到开发者选项。
在某些设备上,“开发者选项”屏幕所在的位置或命名方式可能有所不同
现在,您已经可以通USB的连接设备。您可以通过从 android_sdk/platform-tools/ 目录执行adb devices来验证设备是否已连接。如果已连接,您将看到设备名称以“设备”形式列出
通过WLAN连接到设备
一般情况下,adb通过USB与设备进行通信,但您也可以在通过 USB完成一些初始设置后通过WLAN使用adb,如下所述。
- 将Android设备和adb主机连接到这两者都可以访问的同一 WLAN网络。请注意,并非所有接入点都适用;您可能需要使用防火墙已正确配置为支持adb的接入点。
- 如果您要连接到Wear OS设备,请关闭与该设备配对的手机上的蓝牙。
- 使用USB数据线将设备连接到主机。
- 设置目标设备以监听端口5555上的TCP/IP连接。
adb tcpip 5555
- 拔掉连接目标设备的USB数据线。
- 找到Android设备的IP地址。
例如,对于Nexus设备,您可以在设置 > 关于平板电脑(或关于手机)> 状态 > IP地址下找到IP地址。或者,对Wear OS设备,您可以在设置 > WLAN设置 > 高级 > IP地址下找到IP地址。
- 通过 IP 地址连接到设备。
adbconnect device_ip_address
- 确认主机已连接到目标设备:
adb devices
现在,您可以开始操作了!
如果adb连接断开:
- 确保主机仍与Android设备连接到同一个WLAN网络。
- 通过再次执行adb connect步骤重新连接。
- 如果上述操作未解决问题,重置adb主机:
adb kill-server
然后,从头开始操作。
查询设备
在发出adb命令之前,了解哪些设备实例已连接到adb服务器会很有帮助。您可以使用 devices 命令生成已连接设备的列表
adb devices -l
作为响应,adb 会针对每个设备输出以下状态信息:
序列号:由adb创建的字符串,用于通过端口号唯一标识设备。下面是一个序列号示例:emulator-5554
状态:设备的连接状态可以是以下几项之一:
- offline:
设备未连接到adb或没有响应
- device:
设备现已连接到adb服务器。请注意,此状态并不表示Android系统已完全启动并可正常运行,因为在设备连接到adb时系统仍在启 动。不过,在启动后,这是设备的正常运行状态。
- no device:
未连接任何设备。
说明:如果包含 -l 选项,则devices命令会告知您设备是什么。当您连接了多个设备时,此信息很有用,可帮助您将它们区分开来。
以下示例展示了devices命令及其输出。有三个设备正在运行。列表中的前两行表示模拟器,第三行表示连接到计算机的硬件设备。
将命令发送至特定设备
如果有多个设备正在运行,则当您发出adb命令时,必须指定目标设备。为此,请使用devices命令获取目标设备的序列号。获得序列号后,请结合使用-s选项与adb命令来指定序列号
在以下示例中,先获得了已连接设备的列表,然后使用其中一个设备的序列号在该设备上安装了helloWorld.apk
安装应用
您可以使用adb的install命令在模拟器或连接的设备上安装APK:
adb install path_to_apk
如果设备上已安装该应用,覆盖安装则需加-r参数,如下
adb install -r path_to_apk
设置端口转发
您可以使用forward命令设置任意端口转发,将对特定主机端口上的请求转发到设备上的其他端口。以下示例设置了主机端口6100到设备端口7100的转发:
adb forward tcp:6100 tcp:7100
以下示例设置了主机端口6100到local:logd的转发:
adb forward tcp:6100 local:logd
将文件复制到设备/从设备复制文件
您可以使用pull和push命令将文件复制到设备或从设备复制文件。与 install命令(仅将 APK 文件复制到特定位置)不同,pull和push命令可让您将任意目录和文件复制到设备中的任何位置
要从设备复制文件或目录及其子目录,请使用以下命令:
adb pull remote local
例如:
adb pull /data/local/tmp/1.txt C:\Users\Lxg\Desktop
要将文件或目录及其子目录复制到设备,请使用以下命令:
adb push local remote
例如:
adb push C:\Users\Lxg\Desktop\1.text /data/local/tmp
发出shell命令
您可以使用shell命令通过adb发出设备命令,也可以启动交互式 shell。要发出单个命令,请使用shell命令,如下所示:
adb [-d |-e | -s serial_number] shell shell_command
要在设备上启动交互式shell,请使用shell命令,如下所示:
adb [-d | -e | -s serial_number] shell
要退出交互式shell,请按Ctrl + D键或输入exit
Android提供了大多数常见的Unix命令行工具。如需查看可用工具的列表,请使用以下命令:
adb shell ls /system/bin
调用Activity管理器 (am)
在adb shell中,您可以使用Activity管理器 (am) 工具发出命令以执行各种系统操作,如启动Activity、强行停止进程、广播intent、修改设备屏幕属性,等等。在shell中,语法如下:
am command
您也可以直接从adb发出Activity管理器命令,无需进入远程shell。例如:
adb shell am start -a android.intent.action.VIEW
ADB:移动端专项测试必备神器!!的更多相关文章
- 剑指Offer——求职必备神器
剑指Offer--求职必备神器 前言 不管是公司网申.银行招聘.面试等等,"谈谈你的职业规划"."以往工作中遇到了哪些棘手问题?你是如何解决的?".&quo ...
- 移动App专项测试
移动App测试实战—专项测试 转自:http://www.51testing.com/html/58/n-3713758.html 我们在进行了手工的功能测试之后,也开发了一些自动化测试用例,并且做了 ...
- 工欲善其事,必先利其器 软件工具开发关键词 protractor自动化测试工具 RegexBuddy正则 CodeSmith,LightSwitch:代码生成 CheatEngine:玩游戏修改内存值必备神器 ApkIDE:Android反编译工具 Reflector:反编译dll动态链接库
工欲善其事,必先利其器 本文版权归翟士丹(Stan Zhai)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利. 原文地址:http ...
- 9.2专项测试-Android性能测试黑盒分析-1
1. 专项测试 业务测试:面向新需求 回归测试:面向已交付需求 专项测试:面向非功能需求的各类质量唯独特征 表现 用户维度 技术维度 崩溃 crash,弱网 检测崩溃1.某个页面,因为研发处理不合适, ...
- sublime text3 --前端工程师必备神器
sublime text3 --前端工程师必备神器 导读目录: 下载与Emmet插件安装 sublime text3 中cssrem安装与使用 sublime Text 3的中文文件名显示为方框的问题 ...
- 【转载】Android端手机测试体系
1.冒烟测试 跟web端 的测试流程一样,你拿到一个你们开发做出来的apk首先得去冒烟,也就是保证他的稳定性,指定时间内不会崩溃.这款原生sdk自带的monkey可以当做 我们的测试工具.就跟我之前博 ...
- Android端手机测试体系
1.冒烟测试 跟web端的测试流程一样,你拿到一个你们开发做出来的apk首先得去冒烟,也就是保证他的稳定性,指定时间内不会崩溃.这款原生sdk自带的monkey可以当做我们的测试工具.就跟我之前博客所 ...
- app专项测试自动化测试方法思路与实现
秉着个人意愿打算把python+rf接口自动进行彻底结束再做些其它方面的输出~但事与愿违,但领导目前注重先把专项测试方面完成,借此,先暂停python+rf(主要是与Jenkins集成+导入DB+微信 ...
- 移动App测试实战—专项测试
我们在进行了手工的功能测试之后,也开发了一些自动化测试用例,并且做了性能测试之后,测试工作看似比较完整了.但是当我们的App在大量的用户那里被安装和使用的时候,还是会有很多我们之前没有预料的问题 ...
- app专项测试
本节为大家讲述app的专项测试——客户端性能测试.这个我也做了蛮久的了.在这里修改了一下本篇随笔. 首先我们了解一下什么是客户端的性能测试.性能测试相比大家都已经耳熟能详了,这个app的客户端性能测试 ...
随机推荐
- k8s集群下node节点使用kubectl命令
问题描述:The connection to the server localhost:8080 was refused - did you specify the right host or por ...
- TensorRT环境配置(VS+opencv4.5)
1 TensorRT下载 下载与TensorRT相匹配的CUDA和cuDNN版本:https://docs.nvidia.com/deeplearning/tensorrt/archives/tens ...
- containerd 源码分析:创建 container(一)
0. 前言 Kubernetes:kubelet 源码分析之 pod 创建流程 介绍了 kubelet 创建 pod 的流程,containerd 源码分析:kubelet 和 containerd ...
- 通过Webpack搭建react
安装解析react的相关babel和插件 nmp i -D babel-loader @babel/core @babel/preset-react @babel/preset-env 进行loade ...
- CF Round 881 (Div. 3)
CF Round 881 (Div. 3) Div. 3 果然简单,虽然但是,我还是有 1 道题没有想出来. A.Sasha and Array Coloring 排序双指针向内即可. https:/ ...
- Django路由层、视图层及模板层
Django路由层 URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表; 你就是以这种方式告诉Django,对于客户端发来的某个UR ...
- mysql8新版本安装注意事项及解决本地系统账户Strart the server和SQLyog客户端连接报 plugin caching_sha2_password could not be loaded
mysql 安装包一路next安装, 到Apply Configuration,卡住在Start the server,原因是mysql8新版本的登录身份不对,需要进入服务,找到mysql80,然后属 ...
- Sqlite windows11 安装与使用
首先进入Sqlite官方网址: https://www.sqlite.org/download.html 然后下载下面框起来的两个压缩文件 下载完成后解压 接下来去配置环境变量,右键此电脑->属 ...
- WPF 自定义泛型用户控件后跨程序集继承用户控件的解决方案
自定义泛型用户控件: <UserControl x:Class="ClassLibrary1.UcEumCmb" xmlns="http://schemas.mic ...
- R 语言入门学习笔记:软件安装踩坑记录——删除所有包以及彻底解决库包被安装到 C 盘用户目录下的问题,以及一些其他需要注意的点
目录 R 语言入门学习笔记:软件安装踩坑记录--删除所有包以及彻底解决库包被安装到 C 盘用户目录下的问题,以及一些其他需要注意的点 软件版本及环境 遇到的问题描述 问题的分析和探究 最终的解决方案 ...