首页 > 其他分享 >ADB:移动端专项测试必备神器!!

ADB:移动端专项测试必备神器!!

时间:2024-07-25 20:18:03浏览次数:8  
标签:shell 必备 端口 神器 命令 adb 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

 

将文件复制到设备/从设备复制文件


您可以使用pullpush命令将文件复制到设备或从设备复制文件。与 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

 

 

标签:shell,必备,端口,神器,命令,adb,ADB,连接,设备
From: https://www.cnblogs.com/zhuuque23/p/18324069

相关文章

  • 开源照片管理神器 PhotoPrism 安装和使用教程
    如今我们每个人都积累了海量的照片和视频,做自媒体的UP主们积累的照片和视频数量可能更多。面对这么多的照片和视频,我们该如何管理呢?之前我一直用谷歌相册,因为它有很多优势,比如无限空间,支持智能整理(按时间线、地理位置、还支持人脸自动合并)。但去年Google开始对空间进行了......
  • eve-NG网络环境模拟神器
    一个看着很像计网实验的一个万能模拟工具。下载https://www.eve-ng.net/index.php/download/安装导入eve镜像之前需要安装一些软件。SecureCRT:用来连接telnet的MobaXterm:类似xshell的工具EVE-NG-Win-Client-Pack-2.0:主要是用于Wireshark抓包直接去官网下载即可https://e......
  • Linux 必备基础知识与常用命令大汇总
    这是我整理的关于Linux基础知识的笔记,主要为了方便在长期不用Linux的情况下,突然需要使用时可以快速查找。我最初有些犹豫是否应该写成文章,但我认为对于处于相似境遇的人来说,能够方便地复制和使用这些知识会很有帮助,所以决定将其分享出来。虽然MacOS不是Linux,而是BSD系系统,但我......
  • 用流程图武装你的思维:开发与运维高手的必备技巧
    在软件开发和运维过程中,流程图是一种不可或缺的工具。它通过图形化的方式,将复杂的业务逻辑和操作步骤以简单、直观的形式展现出来,为团队协作和项目管理提供了巨大的便利。作为一名程序员或开发运维专家,理解并掌握流程图的使用,不仅能提高工作效率,还能减少沟通误解,确保项目顺利......
  • 解锁Nginx日志的宝藏:GoAccess——你的实时、交互式Web日志分析神器!
    在当今数字化的时代,网站的流量和用户行为数据就像是一座蕴藏着无尽秘密的宝藏。而如何有效地挖掘和分析这些数据,成为了许多网站管理者和开发者头疼的问题。GoAccess,一款开源的实时Web日志分析工具,或许能为我们提供一扇窥探这些秘密的窗口。GoAccess:你的流量分析好帮手GoAccess......
  • 知识清单|Python入门必备基础知识点
    1.数据类型和变量1.1缩进和注释的规则Python使用缩进来表示代码块,通常使用四个空格或一个制表符。注释使用#开头。1.2基本数据类型Python支持多种基本数据类型,包括整数、浮点数、字符串、布尔值和空值。1.3变量的动态类型和赋值Python是动态类型语言,变量可......
  • 高效项目管理:必备的项目进度软件
    国内外主流的10款项目进度管理软件对比:PingCode、Worktile、Teambition、蓝凌EKP、飞书、华为云WeLink、Monday.com、Asana、Jira、ClickUp。在项目管理过程中,很多人都会遇到项目进度失控、任务分配混乱、团队沟通不畅等问题。这些痛点不仅会导致项目延误,还会影响整个团队的士......
  • VMware Tools 12.4.5 下载 - 客户机操作系统无缝交互必备组件
    VMwareTools12.4.5下载-客户机操作系统无缝交互必备组件VMware虚拟机必备组件(驱动和交互式服务)请访问原文链接:https://sysin.org/blog/vmware-tools-12/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgVMwareTools是一套安装在虚拟机的操作系统中的实用程......
  • 短视频创作者必备:矩阵管理系统让内容更出彩
    在短视频风起云涌的时代,每个创作者都渴望在这片蓝海中脱颖而出。然而,内容的创作、发布、管理以及数据分析等一系列繁琐工作,常常让创作者们头疼不已。今天,我们就来聊聊短视频创作者必备的一款神器——矩阵管理系统,看看它是如何助力创作者们让内容更出彩的。一、矩阵管理系统:短......
  • Linux 运维必备的13款实用工具
    1、查看进程占用带宽情况-NethogsNethogs是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽。下载:http://sourceforge.net/projects/nethogs/files/nethogs/0.8/nethogs-0.8.0.tar.gz/download[root@localhost~]#yum-yinstalllibpcap-develncurses-devel[ro......