导航:首页 > 程序命令 > 命令行工具ADB

命令行工具ADB

发布时间:2022-12-12 05:53:32

‘壹’ 干货|做App测试,那些必知必会的Adb常用命令

> 本文节选自霍格沃兹测试学院内部教材

为了让大家更好的学习Adb常用命令,我们先从安装android环境搭建开始讲解哦。

安装jdk  

###  **  

**

 **  

**

### 因为 Android SDK 是依赖于 java 环境的,所以需要先把 java 的环境搭建好。Java

环境可以参考搭建帖子:https://ceshiren.com/t/topic/4001

安装Android SDK  

###  

###  

### adb 包含在 Android SDK 平台工具软件包中。具体的 Android SDK

环境搭建步骤请参考帖子:https://ceshiren.com/t/topic/4001

adb简介  

adb 全称为 Android Debug Bridge(Android 调试桥),是 Android SDK 中提供的用于管理 Android

模拟器或真机的工具。

adb 是一种功能强大的命令行工具,可让 PC 端与 Android 设备进行通信。adb 命令可执行各种设备操作,例如安装和调试应用。

adb组成  

采用了客户端-服务器(C/S)模型,包括三个部分:

  * adb client

  * adb server

  * adb daemon

ADB client:运行在电脑上,可以在命令行中运行 adb 命令来调用该客户端。Client 本质上就是 Shell,用来发送命令给

Server。发送命令时,首先检测 PC 上有没有启动 Server,如果没有 Server,则会自动启动一个,然后将命令发送到 Server。

ADB server:是运行在电脑上的后台进程,用于管理客户端与运行在模拟器或真机的守护进程通信。

ADB Daemon:守护进程作为一个后台进程在 Android 设备或模拟器系统中运行。它的作用是连接 adb 服务端,并且为运行在主机上的 adb

客户端提供一些服务。

adb工作原理  

当 adb 客户端启动时,客户端会先检查 adb 服务端是否启动。如果没有,会先启动服务端进程。adb 服务端在启动后,会与 5037 端口绑定,并监听

adb 客户端发出的命令。

然后,服务端会与所有正在运行的 Android 设备建立连接。它通过扫描 5555 到 5585 之间的奇数号端口查找 Android 设备。服务端一旦发现

Android 设备上的 adb 守护进程在运行,便会与相应的端口建立连接。每个 Android 设备都使用一对端口,偶数端口用于控制台连接,奇数端口用于

adb 连接。

例如:服务端与所有 Android 设备建立连接后,就可以使用 adb 命令来访问这些设备了。服务端会管理已经建立的连接,并处理来自 adb 客户端的命令。

启动adb调试  

### Android 真机可以通过 USB 连接到 adb,连接时需要在设备的系统设置中启用 USB 调试(位于开发者选项下),启动 USB

调试后,设备上的 adb 守护进程就会被启动,adb 服务端才可以和设备建立连接。除了用 USB 的方式连接之外,也可以通过 WLAN

的方式连接,这种方式不做赘述。

  1. 模拟器:不需要手动设置 USB 调试开关,默认是打开的

  2. 真机通过 USB 连接

    * 安装 Android 手机驱动

    * 设备启用 USB 调试

adb命令格式  

  * 

    adb [-d|-e|-s <serialNumber>] <command>

  * -d:指定当前唯一通过 USB 连接的 Android 设备为命令目标

  * -e:指定当前唯一运行的模拟器为命令目标

  * -s:指定相应 serialNumber 号的设备/模拟器为命令目标

方括号中的内容是可选的,尖括号内容的是必填的。方括号中参数可以指定设备,关于设备的指定有三个参数可以使用。-d、-e 和 -s,其中使用最多的是 -s

参数,在连接多台设备的时候,一般都是使用 -s 加上设备的序列号这种方式去指定具体设备。

adb 可以同时连接多台设备,但是一次只能对一台设备执行命令。所有连接多台设备的时候,是必须要制定设备,命令才可以执行成功的。

查询设备  

把 Android 设备连接到 adb 服务端后,需要确认设备的连接状态。这时可以使用查询命令进行查询。

 **连接模拟器** (以 mumu 模拟器为例)

  *   * 

    adb connect 127.0.0.1:7555adb devices

  * `adb connect` 命令可以通过 WLAN 的方式连接到模拟器,7555 为 mumu 模拟器的端口

  * `adb devices` 可以查询设备连接的状态

Windows 系统中,连接模拟器需要先执行 connect 命令去连接模拟器,127.0.0.1 是本地的 IP

地址,因为模拟器就是安装在本地的,所以要使用本地的 IP 地址,加上模拟器本身规定的一个端口号。mumu 的端口号是

7555,如果使用的是其他的模拟器的话,需要先去了解它的端口号是什么,然后再去连接。MacOS 系统中连接模拟器不需要先执行 connect 命令,直接执行

`adb devices` 命令即可。

 **连接真机**

 **  

**

真机直接用 USB 连接到电脑,不需要执行 connect 命令。

直接用 `adb devices`命令查看已经连接的设备列表即可。

    feier@ ~ % adb devices  

    List of devices attached  

    emulator-5554    device

直接命令后,如果设备已经成功连接,那么设备列表中就会展示已连接设备的信息。以图中的信息为例:

  * emualotr-5554:设备序列号

  * device:设备连接状态为成功

安装卸载应用  

测试过程中,如果需要安装或者卸载应用,可以直接用 adb 命令来操作。

  * 普通安装:`adb install <apk路径>`

  * 覆盖安装:`adb install -r <apk路径>`

  * 完全卸载:`adb uninstall <包名>`

  * 保留配置文件:`adb uninstall -k <包名> `

设备与电脑传输文件  

adb 命令支持电脑和 Android 设备之间的文件互传。比如我们需要提取 Android 设备中的日志文件到本地,就可以通过 adb 命令的方式来完成。

  * 从电脑上传文件至设备:`adb push <电脑路径> <设备路径>`

  * 从设备复制文件至电脑:`adb pull <设备路径> <电脑路径>`

日志  

打印链接设备的 log 信息

  * 屏幕输出日志:`adb logcat`

  * 通过标签过滤:`adb logcat -s 标签`

  * 显示时间:`adb logcat -v time`

  * 输出所有信息:`adb logcat -v long`

  * 输出日志到文件:`adb logcat -v time > log.txt`

  * 清除旧日志信息:`adb logcat -c`

adb shell命令  

使用 adb shell 命令相当于远程登录了 Android 系统,可以进入 Android 设备的系统内部。进入系统内部既可以执行一些简单的 Linux

命令也支持很多特有的命令。

使用 adb shell 命令有两种方式。

一种是直接在 adb shell 后面跟上命令。

  * 

    adb [-s serial_number] shell <command>

比如:

  *   *   *   *   *   *   *   *   *   *   * 

    feier@ ~ % adb shell .propdevetc...

另一种方式是在设备上启动交互式 shell

  * 

    adb [-s serial_number] shell

进入 shell 之后,再执行对应的命令。

比如我们进入设备内部,可以查看设备内部的目录结构和内容

  *   *   *   *   *   *   *   *   *   *   * 

    feier@ ~ % adb shellroot@x86:/ # .propdev...

要退出交互式 shell,可以按 Ctrl + D 键或输入 exit。

 **Android常用测试命令**  

下面整理出了Android常用的一些测试命令及用法。  

设备截图/录屏  

在测试过程中,如果需要截图或者是录屏,也可以直接使用 adb 命令来完成。

  * 截图:`adb shell screencap <设备路径>`

  * 录屏:`adb shell screenrecord <设备路径>`

调用Activity管理器  

在 adb shell 中,可以使用 Activity 管理器 (am) 工具发出命令以执行各种系统操作,如启动

Activity、强行停止进程、修改设备屏幕属性,等等。

在测试过程中,如果需要启动 app 或者强制关闭 app,可以通过 adb 命令来实现。

  * 启动应用:`adb shell am start -n <包名>/<Activity名>`

  * 强制停止应用:`adb shell am force-stop <包名>`

调用软件包管理器  

在 adb shell 中,可以使用软件包管理器 (pm) 工具发出命令,以对设备上安装的应用软件包执行操作和查询。

如果需要查询设备里都安装了什么应用,就可以使用 adb shell pm list 来查看,还可以加上不同的参数去查看不同类型的应用。而且也可以通过 adb

命令来清除应用相关的数据。

  * 显示设备中安装的所有应用:`adb shell pm list packages`

  * 只显示系统应用:`adb shell pm list packages -s`

  * 只显示第三方应用:`adb shell pm list packages -3`

  * 删除与软件包关联的所有数据:`adb shell pm clear <包名>`

adb shell mpsys  

mpsys 是一种在 Android 设备上运行的工具,可提供有关系统服务的信息。可以使用 adb 从命令行调用

mpsys,获取在连接的设备上运行的所有系统服务的诊断输出。

比如在测试中,如果需要通过 adb 命令启动 app,则需要知道 app 的包名和入口的 Activity

名。这个时候,就可以通过下面这条命令获取到这两个信息。

这个场景,需要先把要获取信息的应用启动,让它在前台运行,然后执行命令

`adb shell mpsys activity | grep mFocusedActivity`

  *   *   * 

    feier@ ~ % adb shell mpsys activity | grep mFocusedActivity  mFocusedActivity: ActivityRecord{9dae968 u0 com.xueqiu.android/.common.MainActivity t139}  

下方的日志中就会展示出来当前的包名和 Activity 名称。

  * 包名:`com.xueqiu.android`

  * Activity 名:`.common.MainActivity`

adb shell mpsys  

adb 命令还支持直接获取应用的页面信息。这个页面信息包含了页面中元素的属性,可以方便做自动化测试的时候去定位元素。获取到的页面布局会输出到一个 xml

文件中。

  * 当前窗口的 UI 布局简化信息:`adb shell uiautomator mp --compressed`

  *   * 

    feier@ ~ % adb shell uiautomator mp --compressedUI hierchary mped to: /sdcard/window_mp.xml

不指定输出文件路径时,mp 下来的文件默认存储路径为 `/sdcard/window_mp.xml`

可以通过 adb pull 命令把文件传输到电脑中,然后用 uiautomatorviewer 工具打开查看布局。

  * 指定输出文件路径:`adb shell uiautomator mp file <设备路径>`

adb常用命令就先讲到这里啦,下期我们分享App常见bug解析。大家还想看什么内容的文章也可以留言告诉我们哦!

 ** _ 

来霍格沃兹测试开发学社,学习更多软件测试与测试开发的进阶技术,知识点涵盖web自动化测试 app自动化测试、接口自动化测试、测试框架、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,课程技术涵盖bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相关技术,全面提升测试开发工程师的技术实力

QQ交流群:484590337

公众号 TestingStudio

视频资料领取:https://qrcode.testing-studio.com/f?from=jianshu&url=https://ceshiren.com/t/topic/15844

点击查看更多信息

‘贰’ 电脑怎么使用adb

先打开winows菜单输入cmd命令,然后点确定并进入命令模式,之后输入命令D:,再回车输入cd,紧接着选你的sdk路径并复制路径,紧接点击cmd和选择编辑、粘贴并将复制的路径粘贴到命令行回车,最后打开adb即可。ADB就是起到调试桥的作用,用这个工具可以直接操作管理android模拟器或者真实的andriod设备(如手机)。它的主要功能有运行设备的shell(命令行);管理模拟器或设备的端口映射等。
更多关于电脑怎么使用adb,进入:https://www.abcgonglue.com/ask/9c68041616094533.html?zd查看更多内容

‘叁’ ADB是什么意思

adb的全名是Android调试桥,它充当调试桥。Adb是Android SDK中的工具,使用此工具,您可以直接操作和管理Android模拟器或真实的Android设备(例如G1手机)。

Android系统的adb的全名是Android Debug Bridge,在Android开发环境中,abd是我们经常用于开发的调试工具,使用adb工具的前提是打开手机上的USB调试,然后通过数据线连接到计算机。

android adb主要功能有:

1、运行设备的shell(命令行)。

2、管理模拟器或设备的端口映射。

3、计算机和设备之间上传/下载文件。

4、将本地apk软件安装到模拟器或android设备。

‘肆’ 深入扒一扒安卓中的ADB命令

做过安卓开发的朋友或多或少都遇到过让人厌恶的类似于“could not read ok from ADB Server”的错误。产生这个错误的原因可能多种多样,每次遇到问题的时候,可能大部分人都和我一样,去google一下这个问题别人是如何解决的。假设一下子找到解决了,就放过,下次在遇到的时候同样的再去google一下就好了。但是,这样不是正确的治学态度,为此孔祥子决定去扒一扒!

如下,是我在发现Android studio连接不上手机的时候,尝试去启动一个adb server,但是失败了。

<pre>

根据问题提示,5037端口被占用了。下面就来看看到底是哪一个端口被占用。

<pre>

C:Userszxy>netstat -ano | findstr "5037"
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 7912
TCP 127.0.0.1:5037 127.0.0.1:50025 ESTABLISHED 7912
TCP 127.0.0.1:5037 127.0.0.1:56501 ESTABLISHED 7912
TCP 127.0.0.1:50025 127.0.0.1:5037 ESTABLISHED 7120
TCP 127.0.0.1:56501 127.0.0.1:5037 ESTABLISHED 1264
</pre>

果然,5037被进程id为7912的进程占用了。顺藤摸瓜,看看到底什么进程捣的鬼,
<pre>
C:Userszxy>tasklist | findstr "7912"
romaster_daemon.exe 7912 Console 1 3,024 K
</pre>

看到了吗,是这个进程romaster_daemon.exe ,好了,到此为止找出来是哪一个程序了,下面打开任务管理器,kill掉就可以了。

Android adb(Android Debug Bridge) 是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。

该工具作为一个客户端-服务器程序,包括三个组件:
客户端(adb client) ,该组件发送命令。客户端在开发计算机上运行。可以通过发出 adb 命令从命令行终端调用客户端。

这里说的客户端,其实包含很广泛。例如我们在命令行窗口运行一个adb命令,其实就是一个adb客户端。还有,我们在android studio中通过点击运行或者调试按钮,app就安装到手机里面了,这个也可以看做是adb客户端。对应的后台进程名称 根据运行的程序的不同而不同。

后台程序 ,该组件在设备上运行命令。后台程序在每个模拟器或设备实例上作为后台进程运行。
也就说,开发者测试手机或者模拟器上运行的后台进程,负责接收命令,并运行命令。这个名字对应应该是adbd

具体如下

服务端 ,该组件管理客户端和后台程序之间的通信。服务器在开发计算机上作为后台进程运行。
您可以在 android_sdk/platform-tools/ 中找到 adb 工具
这个是在开发者自己的电脑上,运行的旨在管理adb客户端和手机端的后台程序通信的一个管理程序。

具体流程如下

启动一个 adb 客户端时,此客户端首先检查是否有已运行的 adb 服务器进程。如果没有,它将启动服务器进程。当服务器启动时,它与本地 TCP 端口 5037 绑定,并侦听从 adb 客户端发送的命令—所有 adb 客户端均使用端口 5037 与 adb 服务器通信。

然后,服务器设置与所有运行的模拟器/设备实例的连接。它通过扫描 5555 到 5585 之间(模拟器/设备使用的范围)的奇数号端口查找模拟器/设备实例。服务器一旦发现 adb 后台程序,它将设置与该端口的连接。请注意,每个模拟器/设备实例将获取一对按顺序排列的端口 , 这些端口包括用于控制台连接的偶数号端口和用于 adb 连接的奇数号端口。例如:

模拟器 1,控制台:5554
模拟器 1,adb:5555
模拟器 2,控制台:5556
模拟器 2,adb:5557
以此类推...

如上所示,在端口 5555 与 adb 连接的模拟器实例与侦听端口 5554 的控制台的实例相同。

注意 ,这里所说的端口都是开发者电脑上的端口。

我的理解,偶数端口用来实际的数据传输。奇数端口用来发送控制命令和连接用的,例如调试。(如果不正确请指出)

当服务器已设置与所有模拟器实例的连接后,您可以使用 adb 命令访问这些实例。由于服务器管理与模拟器/设备实例的连接,并处理来自多个 adb 客户端的命令,因此,您可以从任意客户端(或从某个脚本)控制任意模拟器/设备实例。

解读一下
注意:上图中的标识为黄色的区域的进程为后台守护进程。
Adb Server运行在开发者电脑上,任何adb client都要等待这个运行起来之后才能做后续的工作。电脑上的android studio或者eclipse等一些adb client和它交互。一旦adb client的命令被发送到手机中,并且被手机中的adbd接收之后,才能和手机交互。

然后在看一张更详细的图

这个图,详细的解释了我运行adb命令中的详细细节。

关于adb的详细命令可以参考: http://adbshell.com/commands 这个网站详。

看了之后,对于前面的5037被占用,导致无法连接手机的原因,我想,我们应该有了更深层次的理解。同时对于其他情况的不能连接手机,我们下次就会有了自己的思考了。

‘伍’ [Android] 命令行工具adb

adb:Android Debug Bridge (安卓调试桥)
是一个命令行工具,用于电脑端和模拟器或者是设备之间的交互。

它是一个C/S架构程序,由3部分组成:

我们来看看adb是如何工作的。

时序图:

这里讲的是先安装了android studio,然后使用adb的步骤。

这里以MAC系统添加为例

apt-get install adb

如果安装某个apk不成功,可以使用adb安装下,就可以看到具体不成功的错误。
adb install xxx.apk

adb devices

adb shell pm list packages

adb shell mpsys battery

adb exec-out screencap -p > test.png

参考:
https://developer.android.google.cn/studio/run/device
https://anqz.github.io/2015-05-21-Intro-adb

‘陆’ 什么是adb命令行

adb命令行是androidsdk里的一个工具,用这个工具可以直接操作管理android模拟器或者真实的android设备(如G1手机),它的主要功能有:

1、运行设备的shell(命令行)

2、管理模拟器或设备的端口映射

3、计算机和设备之间上传/下载文件

4、将本地apk软件安装至模拟器或android设备

ADB是一个客户端-服务器端程序,其中客户端是你用来操作的电脑,服务器端是android设备。

(6)命令行工具ADB扩展阅读:

常用命令

1. 查看设备 *adbdevices

这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示

2. 安装软件

*adbinstall <apk文件路径>

这个命令将指定的apk文件安装到设备上

3. 卸载软件

*adbuninstall <软件名>

*adbuninstall -k <软件名>

如果加 -k 参数,为卸载软件但是保留配置和缓存文件。

4. 登录设备shell

*adbshell

*adbshell <command命令>

这个命令将登录设备的shell。

后面加<command命令>将是直接运行设备命令,相当于执行远程命令。

5. 从电脑上发送文件到设备

*adbpush <本地路径> <远程路径>

用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)。

‘柒’ ADB工作原理

Android 调试桥 (adb) 是一种功能多样的命令行工具。它可以让你与设备进行通信,adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限,它是一种C/S架构的程序,包括以下三个组件:

客户端: 主要用于发送命令,adb client在开发机器上运行,你可以通过发出 adb 命令从命令行终端调用客户端,它主要的工作是:解析像:push、shell、install等命令的参数,做必要预处理,然后转移为指令或数据,发送给adb server。

守护程序 (adbd): 是运行在Android设备(真机/模拟器)后台的一个进程,它是由init进程启动的,并且系统一开机就已经启动,它的主要作用是处理来自 adb server的命令行请求,然后获取对应Android设备的信息,再将结果返回给adb server。

服务器 (adb server): 是运行在PC上的一个后台进程,它有两个作用:

当启动某个 adb 客户端时,该客户端会先检查是否有 adb 服务器进程正在运行,如果没有,它会先启动服务器进程,服务器在启动后会与绑定和监听PC上的 TCP 端口 5037 ,并处理 adb 客户端发出的命令(所有 adb 客户端通信均通过与PC上端口 5037 建立TCP连接通信)如下图:

然后,adb server会与所有正在运行的设备建立连接,TCP连接方式下,它通过扫描 5555 到 5585 之间(该范围供前 16 个模拟器使用)的奇数号端口查找模拟器,服务器一旦发现 adb 守护程序 (adbd),便会与相应的端口建立连接,请注意,每个模拟器都使用一对按顺序排列的端口(用于控制台连接的偶数号端口和用于 adb 连接的奇数号端口)

通过查看端口,可以看到adb server已在 5037 端口监听 'LISTENING'

Client通过发送指令的方式,给到adb server端,adb server端进行判定,是否需要转发到adbd进行处理。

‘捌’ 常用的adb命令

Android Debug Bridge,我们一般简称为adb,主要存放在sdk安装目录下的platform-tools文件夹中,它是一个非常强大的命令行工具,通过这个工具你能够与你的android设备进行交互,被称为Android 调试桥。
它是一种客户端-服务器程序,包括以下三个组件:

adb shell 命令
adb shell 则是调用的 Android 系统中的命令,这些 Android 特有的命令都放在了 Android 设备的 system/bin 目录下

monkey命令

当您启动某个 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 客户端的命令,因此您可以从任意客户端(或从某个脚本)控制任意设备。

要在通过 USB 连接的设备上使用 adb,您必须在设备的系统设置中启用 USB 调试 (位于 开发者选项 下)。

在搭载 Android 4.2 及更高版本的设备上,“开发者选项”屏幕默认情况下处于隐藏状态。如需将其显示出来,请依次转到 设置 > 关于手机 ,然后点按 版本号 七次。返回上一屏幕,在底部可以找到 开发者选项
在某些设备上,“开发者选项”屏幕所在的位置或名称可能有所不同。
执行 adb devices 验证设备是否已连接。如果已连接,您将看到设备名称以“设备”形式列出。

一般情况下,adb 通过 USB 与设备进行通信,但您也可以在通过 USB 完成一些初始设置后,通过 WLAN 使用 adb,如下所述。

如果 adb 连接断开:

如果有多个设备在运行,您在发出 adb 命令时必须指定目标设备。为此,请使用 devices 命令获取目标设备的序列号。获得序列号后,请结合使用 -s 选项与 adb 命令来指定序列号。如果您要发出很多 adb 命令,可以将 $ANDROID_SERIAL 环境变量设为包含序列号。如果您同时使用 -s 和 $ANDROID_SERIAL , -s 会替换 $ANDROID_SERIAL 。

$ adb -s emulator-5555 install helloWorld.apk
注意 :如果您在多个设备可用时发出命令但未指定目标设备,adb 会生成错误。
如果有多个可用设备,但只有一个是模拟器,请使用 -e 选项将命令发送至该模拟器。同样,如果有多个设备,但只连接了一个硬件设备,请使用 -d 选项将命令发送至该硬件设备。

使用 forward 命令设置任意端口转发,将特定主机端口上的请求转发到设备上的其他端口。以下示例设置了主机端口 6100 到设备端口 7100 的转发:

>adb forward tcp:6100 tcp:7100

您可以使用 pull 和 push 命令将文件复制到设备或从设备复制文件。与 install 命令(仅将 APK 文件复制到特定位置)不同,使用 pull 和 push 命令可将任意目录和文件复制到设备中的任何位置。

如需从设备中复制某个文件或目录(及其子目录),请使用以下命令:

adb pull remote local
如需将某个文件或目录(及其子目录)复制到设备,请使用以下命令:

adb push loca remote

adb kill-server

您可以使用 shell 命令通过 adb 发出设备命令,也可以启动交互式 shell。如需发出单个命令,请使用 shell 命令,如下所示:

adb [-d |-e | -s shell shell_command

在 adb shell 中,您可以使用 Activity 管理器 ( am ) 工具发出命令以执行各种系统操作,如启动 Activity、强行停止进程、广播 intent、修改设备屏幕属性,等等。在 shell 中,相应的语法为:
您也可以直接从 adb 发出 Activity 管理器命令,无需进入远程 shell。例如:

adb shell am start -a android.intent.action.VIEW

‘玖’ 技术分享 | App测试时常用的adb命令你都掌握了哪些呢

adb 全称为 Android Debug Bridge(Android 调试桥),是 Android SDK 中提供的用于管理 Android 模拟器或真机的工具。

adb 是一种功能强大的命令行工具,可让 PC 端与 Android 设备进行通信。adb 命令可执行各种设备操作,例如安装和调试应用。

采用了客户端-服务器(C/S)模型,包括三个部分:

当 adb 客户端启动时,客户端会先检查 adb 服务端是否启动。如果没有,会先启动服务端进程。adb 服务端在启动后,会与 5037 端口绑定,并监听 adb 客户端发出的命令。

然后服务端会与所有正在运行的 Android 设备建立连接。它通过扫描 5555 到 5585 之间的奇数号端口查找 Android 设备。服务端一旦发现 Android 设备上的 adb 守护进程在运行,便会与相应的端口建立连接。每个 Android 设备都使用一对端口,偶数端口用于控制台连接,奇数端口用于 adb 连接。

服务端与所有 Android 设备建立连接后,就可以使用 adb 命令来访问这些设备了。服务端会管理已经建立的连接,并处理来自 adb 客户端的命令。

Android 真机可以通过 USB 连接到 adb,连接时需要在设备的系统设置中启用 USB 调试(位于开发者选项下),启动 USB 调试后,设备上的 adb 守护进程就会被启动,adb 服务端才可以和设备建立连接。除了用 USB 的方式连接之外,也可以通过 WLAN 的方式连接,这种方式不做赘述。

方括号中的内容是可选的,尖括号内容的是必填的。方括号中参数可以指定设备,关于设备的指定有三个参数可以使用。-d、-e 和 -s,其中使用最多的是 -s 参数,在连接多台设备的时候,一般都是使用 -s 加上设备的序列号这种方式去指定具体设备。

adb 可以同时连接多台设备,但是一次只能对一台设备执行命令。所有连接多台设备的时候,是必须要制定设备,命令才可以执行成功的。

把 Android 设备连接到 adb 服务端后,需要确认设备的连接状态。这时可以使用查询命令进行查询。

Windows 系统中,连接模拟器需要先执行 connect 命令去连接模拟器,127.0.0.1 是本地的 IP 地址,因为模拟器就是安装在本地的,所以要使用本地的 IP 地址,加上模拟器本身规定的一个端口号。mumu 的端口号是 7555,如果使用的是其他的模拟器的话,需要先去了解它的端口号是什么,然后再去连接。MacOS 系统中连接模拟器不需要先执行 connect 命令,直接执行 adb kill-server && adb devices 命令即可。

真机直接用 USB 连接到电脑,不需要执行 connect 命令。

直接用 adb devices 命令查看已经连接的设备列表即可。

直接命令后,如果设备已经成功连接,那么设备列表中就会展示已连接设备的信息。

测试过程中,如果需要安装或者卸载应用,可以直接用 adb 命令来操作。

adb 命令支持电脑和 Android 设备之间的文件互传。比如要提取 Android 设备中的日志文件到本地,就可以通过 adb 命令的方式来完成。

打印链接设备的 log 信息

使用 adb shell 命令相当于远程登录了 Android 系统,可以进入 Android 设备的系统内部。进入系统内部既可以执行一些简单的 Linux 命令也支持很多特有的命令。

使用 adb shell 命令有两种方式。

一种是直接在 adb shell 后面跟上命令。

比如:

另一种方式是在设备上启动交互式 shell

进入 shell 之后,再执行对应的命令。

比如进入设备内部,可以查看设备内部的目录结构和内容

要退出交互式 shell,可以按 Ctrl + D 键或输入 exit。

在测试过程中,如果需要截图或者是录屏,也可以直接使用 adb 命令来完成。

在 adb shell 中,可以使用 Activity 管理器 (am) 工具发出命令以执行各种系统操作,如启动 Activity、强行停止进程、修改设备屏幕属性,等等。

在测试过程中,如果需要启动 app 或者强制关闭 app,可以通过 adb 命令来实现。

在 adb shell 中,可以使用软件包管理器 (pm) 工具发出命令,以对设备上安装的应用软件包执行操作和查询。

如果需要查询设备里都安装了什么应用,就可以使用 adb shell pm list 来查看,还可以加上不同的参数去查看不同类型的应用。而且也可以通过 adb 命令来清除应用相关的数据。

mpsys 是一种在 Android 设备上运行的工具,可提供有关系统服务的信息。可以使用 adb 从命令行调用 mpsys,获取在连接的设备上运行的所有系统服务的诊断输出。

比如在测试中,如果需要通过 adb 命令启动 app,则需要知道 app 的包名和入口的 Activity 名。这个时候,就可以通过下面这条命令获取到这两个信息。

这个场景,需要先把要获取信息的应用启动,让它在前台运行,然后执行命令

adb shell mpsys activity | grep mFocusedActivity

下方的日志中就会展示出来当前的包名和 Activity 名称。

adb 命令还支持直接获取应用的页面信息。这个页面信息包含了页面中元素的属性,可以方便做自动化测试的时候去定位元素。获取到的页面布局会输出到一个 xml 文件中。

不指定输出文件路径时,mp 下来的文件默认存储路径为 /sdcard/window_mp.xml

可以通过 adb pull 命令把文件传输到电脑中,然后用 uiautomatorviewer 工具打开查看布局。

你好呀,喜欢这篇文章的话烦请点个“赞”哦!万分感谢~( ) PS:有问题可以联系我们哦~v ceshiren001

‘拾’ adb 简介及常用命令

adb全称(Android Debug Bridge),它是一个通用命令行工具,它可以做为Android与PC端连接的一个桥梁,所以adb又称为Android调试桥,用户可以通过adb在电脑上对Android设备进行全面操作,比如安装和调试应用,操作文件的传输等。

首先用户启动一个adb客户端时,此客户端先检查是否存在已运行的adb服务器进程。如果没有,它将启动一个服务器进程,当服务器进程启动时,adb服务器就会绑定本地的TCP端口5037并监听adb客户端发来的命令,使用的adb客户端都使用端口5037与adb服务器进行对话的。接着服务器将所有运行中的模拟器或设备实例进行连接。它通过扫描所有5555到5585范围内的奇数端口来定位所有的模拟器或设备。一旦服务器找到了adb守护程序,将建立一个到该端口的连接。
客户端发送的命令分为三种:

输出状态:

adb install安装原理过程:

Android系统的日志分为两部分:底层的Linux内核日志输出到/proc/kmsg, Android日志输出到/dev/log。Android的Log等级通常有六类,按照日志级别由低到高分别是:Verbose、Debug、Info、Warning、Error、Assert。

阅读全文

与命令行工具ADB相关的资料

热点内容
php微信第三方登录demo 浏览:534
上海php工具开发源码交付 浏览:788
哪里有求购黄页的源码 浏览:194
商城矿机源码矿场系统 浏览:195
单片机的led灯熄灭程序 浏览:222
洛阳python培训 浏览:702
小键盘命令 浏览:192
单片机c语言返回主程序 浏览:816
dockerpythonweb 浏览:970
程序员算法有多强 浏览:717
pythonworkbook模块 浏览:245
什么app能查医生 浏览:175
轻量级的编程语言 浏览:338
程序员那么可爱生孩子 浏览:432
后缀him3加密文件是什么软件 浏览:984
坚果隐藏app为什么要140版本才能用 浏览:313
淘宝dns服务器地址 浏览:259
领英转型app哪个好用 浏览:943
压缩软件的图标 浏览:97
卖鞋哪个app是真的 浏览:469