在上一篇文章中说明了ADB命令的使用方式:

  1. 使用ADB命令的前提是保证手机或者模拟器和电脑是连接状态。
  2. 使用adb connect 127.0.0.1:+端口号命令,进行链接。

本篇文章详细说明一下常用ADB命令的操作。

1、启动和关闭ADB服务

在某些情况下,可能需要终止然后再启动服务端进程,例如ADB不响应命令的时候,可以通过重启解决问题。

开启命令行终端执行命令:

  1. 启动ADB服务,ADB命令: adb start-server
  2. 关闭ADB服务,ADB命令: adb kill-server

演示:

1)启动ADB服务

C:\Users\L>adb start-server
* daemon not running; starting now at tcp:5037
* daemon started successfully C:\Users\L>

提示:守护进程没有开启,现在通过5037端口开启守护进程服务。

注意:

  • ADB命令默认绑定端口为5037 ,若端口被别的应用绑定则无法启动ADB服务。
  • 一般无需手动执行此命令,在运行ADB命令时若发现adb server没有启动会自动调起。

2)关闭ADB服务

关闭ADB服务没有任何提示。

2、查看ADB版本

ADB命令:adb version

C:\Users\L>adb version
Android Debug Bridge version 1.0.41
Version 29.0.6-6198805
Installed as F:\***\android-sdk-windows\platform-tools\adb.exe C:\Users\L>

3、指定adb server的网络端口

ADB命令:adb -P <port> start-server(临时换一个端口号开启ADB服务)

默认端口为 5037。

C:\Users\L>adb -P 5039 start-server
* daemon not running; starting now at tcp:5039
* daemon started successfully C:\Users\L>

提示:

  • netstat -ano查询进程ID。
  • taskkill /f /t /im 进程名杀掉进程。

    如:taskkill /f /t /im nginx.exe

4、查询已连接设备/模拟器

ADB命令:adb devices

前提:Android模拟器已开启。

演示:

(1)直接执行adb devices命令

C:\Users\L>adb devices
* daemon not running; starting now at tcp:5037
* daemon started successfully
List of devices attached C:\Users\L>

从上面可以看到,如果我们没有启动ADB服务,且直接执行adb devices命令,会先自动帮我们开启ADB服务,在执行adb devices命令,结果没有查询到已链接的模拟器。

(2)使用ADB服务链接Android模拟器

执行命令adb connect 127.0.0.1:21503(注:不同的模拟器的端口号不同)。

C:\Users\L> adb connect 127.0.0.1:21503
connected to 127.0.0.1:21503 C:\Users\L>

(3)再次执行adb devices命令,查询已连接设备

C:\Users\L>adb devices
List of devices attached
127.0.0.1:21503 device C:\Users\L>

我们就可以看到ADB服务已经链接的设备了

说明:

输出格式为 [serialNumber] [state]

serialNumber即我们常说的SN码,state有如下几种:

  • offline:表示设备未连接成功或无响应。
  • device:设备已连接。注意这个状态并不能标识 Android 系统已经完全启动和可操作,在设备启动过程中设备实例就可连接到ADB,但启动完毕后系统才处于可操作状态。
  • no device:没有设备/模拟器连接。

常见异常输出

  1. 没有设备/模拟器连接成功。
    List of devices attached
  2. 设备/模拟器未连接到 adb 或无响应。
    List of devices attached
    cf264b8f offline

5、获取安卓系统版本

ADB命令:adb shell getprop ro.build.version.release

演示:

C:\Users\L>adb shell getprop ro.build.version.release
7.1.2 C:\Users\L>

6、为命令指定目标设备

如果有多个设备/模拟器连接,则需要为命令指定目标设备。

参数 含义
-d 指定当前唯一通过 USB 连接的 Android 设备为命令目标
-e 指定当前唯一运行的模拟器为命令目标
-s <serialNumber> 指定相应serialNumber号的设备/模拟器为命令目标

在多个设备/模拟器连接的情况下较常用的是 -s <serialNumber> 参数,serialNumber可以通过 adb devices 命令获取。如:

$ adb devices

List of devices attached
cf264b8f device
emulator-5554 device
10.129.164.6:5555 device

输出里的 cf264b8femulator-555410.129.164.6:5555 即为serialNumber

比如这时想指定 cf264b8f 这个设备来运行ADB命令获取屏幕分辨率:

adb -s cf264b8f shell wm size

又如想给 10.129.164.6:5555 这个设备安装应用(这种形式的 serialNumber 格式为 <IP>:<Port>,一般为无线连接的设备或 Genymotion 等第三方 Android 模拟器):

adb -s 10.129.164.6:5555 install test.apk

遇到多设备/模拟器的情况均使用这几个参数为命令指定目标设备

7、发送文件到手机

ADB命令:adb push 电脑端文件路径\需要发送的文件(全名) /手机端存储的路径

提示

  • Android手机存储卡的根目录都是sdcard目录。(固定死的)
  • 注意目录中斜杠的方向。

示例

将桌面的test.txt文件发送到手机sdcard目录下。

C:\Users\L>adb push C:\Users\L\Desktop\test.txt /sdcard
C:\Users\L\Desktop\test.txt: 1 file pushed, 0 skipped. 0.0 MB/s (36 bytes in 0.003s) C:\Users\L>

提示:我们可以把文件直接拖拽到命令行终端中,该文件的路径和文件名会自动生成。

我们再到Android模拟器中的文件管理器查看test.txt文件是否接收到。

打开文件的内容也是一样的。

8、从手机拉取文件

ADB命令:adb pull 手机端的路径/拉取文件名(全名) \电脑端存储文件路径

示例:

将手机/sdcard目录中的test.txt文件,发送到电脑桌面

C:\Users\L>adb pull /sdcard/test.txt C:\Users\L\Desktop
/sdcard/test.txt: 1 file pulled, 0 skipped. 0.0 MB/s (36 bytes in 0.002s) C:\Users\L>

桌面上会接收到test.txt文件。

注意:练习的时候,文件名尽量不要使用中文,可能测试效果不好。

参考:https://github.com/mzlogin/awesome-adb

『与善仁』Appium基础 — 4、常用ADB命令(一)的更多相关文章

  1. 『与善仁』Appium基础 — 3、ADB命令介绍

    目录 1.ADB命令简介 2.ADB命令运行原理 3.通过ADB命令连接安卓模拟器 (1)安装安卓模拟器 (2)ADB命令连接安卓模拟器 (3)常用Android模拟器端口号 1.ADB命令简介 AD ...

  2. 『与善仁』Appium基础 — 7、ADB Shell命令的使用

    目录 1.查看进程 2.查看实时资源占用情况 3.查看进程 UID 4.其它ADB Shell命令说明 Android系统是基于 Linux 内核的,也就是说Android系统的底层是Linux系统. ...

  3. 『与善仁』Appium基础 — 8、Appium自动化测试框架介绍

    目录 1.主流的移动端自动化测试框架 (1)Robotium (2)Macaca (3)Appium 2.自动化测试工具的选择 3.Appium简介 提示:我们前面说的Android环境搭建和adb命 ...

  4. 『与善仁』Appium基础 — 12、Appium的安装详解

    目录 (一)Appium server安装 方式一:(桌面方式:推荐) 1.Appium Desktop下载 2.Appium Desktop安装 3.Appium Desktop使用 方式二:(No ...

  5. 『与善仁』Appium基础 — 15、使用Appium的第一个Demo

    我们使用Python语言作为测试脚本的编写语言. 执行脚本前提: Android模拟器或者手机是开机状态. 使用确保电脑和Android设备进行了链接. 也就是使用ADB命令adb connect链接 ...

  6. 『与善仁』Appium基础 — 16、APPium基础操作API

    目录 1.前置代码 2.安装和卸载APP 3.判断APP是否已安装 4.关闭APP软件和关闭驱动对象 5.发送文件到手机和获取手机中的文件 6.获取当前屏幕内元素结构(重点) 7.脚本内启动其他APP ...

  7. 『与善仁』Appium基础 — 9、补充:C/S架构和B/S架构说明

    目录 1.C/S架构和B/S架构概念 2.C/S结构与B/S架构的区别 3.C/S架构和B/S架构优点和缺点 (1)B/S模式的优点和缺点: (2)C/S模式的优点和缺点: 1.C/S架构和B/S架构 ...

  8. 『与善仁』Appium基础 — 10、Appium基本原理

    目录 1.Appium自动化测试架构 2.Appium架构图 3.Session说明 4.Desired Capabilities说明 5.Appium Server说明 6.Appium Clien ...

  9. 『与善仁』Appium基础 — 14、Appium测试环境搭建

    目录 1.Appium测试环境搭建整体思路 (1)Android测试环境搭建 (2)Appium测试环境搭建 (3)测试脚本语言的环境搭建 2.Appium在Android端和IOS端的工作流程 (1 ...

  10. 『与善仁』Appium基础 — 17、元素定位工具(一)

    目录 1.uiautomatorviewer介绍 2.uiautomatorviewer工具打开方式 3.uiautomatorviewer布局介绍 4.uiautomatorviewer工具的使用 ...

随机推荐

  1. 永远的Ace 实验五 团队作业2:XXX企业设施设备云上资料室

    项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST/ 这个作业要求链接 https://www.cnblogs.com/nwnu-da ...

  2. 201871030132-熊文婷 实验二 个人项目―《D{0-1}KP问题》项目报告

    项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs.com/nwnu-dai ...

  3. 摄像头PVD和CVD薄膜

    摄像头PVD和CVD薄膜 在FDP 的生产中,在制作无机薄膜时,可以采用的方法有两种:PVD 和CVD (将VE 和VS 归于PVD ,而ALD 归于CVD). Physical Vapor Depo ...

  4. TensorFlow解析常量、变量和占位符

    TensorFlow解析常量.变量和占位符 最基本的 TensorFlow 提供了一个库来定义和执行对张量的各种数学运算.张量,可理解为一个 n 维矩阵,所有类型的数据,包括标量.矢量和矩阵等都是特殊 ...

  5. Pass Infrastructure基础架构(下)

    Pass Infrastructure基础架构(下) pass注册  PassRegistration该类在示例中简要显示了各种pass类型的定义 .该机制允许注册pass类,以便可以在文本pass管 ...

  6. ARM系列处理器和架构

    从一只ARM到另一只ARM! ARM处理器和架构 当前可用的处理器 ARM1 ARM2 ARM3 ARM4和5 ARM6 ARM7 ARM8 强壮有力的ARM ARM9 ARM10 ARM架构 v1  ...

  7. GVS智能照明再下一城,前方到站贵阳地铁2号线!

    近期,"新基建"又频频刷屏,也为城轨交通建设快速发展提供了广阔的想象空间. 在新基建的导向作用下,越来越多城市加入地铁阵营.如果说普铁和高铁作为城市的发展窗口,那么地铁则是城市交通 ...

  8. the rust book 的简单入门笔记

    rust learning day 1 (2021/05/27) 学了常量,变量,数据类型,控制流,所有权 char 的宽度是4字节,一个 unicode 的宽度 控制流条件都不要括号 rust 中的 ...

  9. python_selenium 之yaml文件读取(以读取元素信息为例)

    一.yaml源文件编写 二.对yaml文件内容的读取 #coding=gbkimport osimport yamlcurrent_path=os.path.dirname(__file__)yaml ...

  10. 搭建简单模型训练MNIST数据集

    # -*- coding = utf-8 -*- # @Time : 2021/3/16 # @Author : pistachio # @File : test1.py # @Software : ...