『与善仁』Appium基础 — 4、常用ADB命令(一)
在上一篇文章中说明了ADB命令的使用方式:
- 使用ADB命令的前提是保证手机或者模拟器和电脑是连接状态。
- 使用
adb connect 127.0.0.1:+端口号命令,进行链接。
本篇文章详细说明一下常用ADB命令的操作。
1、启动和关闭ADB服务
在某些情况下,可能需要终止然后再启动服务端进程,例如ADB不响应命令的时候,可以通过重启解决问题。
开启命令行终端执行命令:
- 启动ADB服务,ADB命令:
adb start-server。 - 关闭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:没有设备/模拟器连接。
常见异常输出:
- 没有设备/模拟器连接成功。
List of devices attached
- 设备/模拟器未连接到 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
输出里的 cf264b8f、emulator-5554 和 10.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文件。
注意:练习的时候,文件名尽量不要使用中文,可能测试效果不好。
『与善仁』Appium基础 — 4、常用ADB命令(一)的更多相关文章
- 『与善仁』Appium基础 — 3、ADB命令介绍
目录 1.ADB命令简介 2.ADB命令运行原理 3.通过ADB命令连接安卓模拟器 (1)安装安卓模拟器 (2)ADB命令连接安卓模拟器 (3)常用Android模拟器端口号 1.ADB命令简介 AD ...
- 『与善仁』Appium基础 — 7、ADB Shell命令的使用
目录 1.查看进程 2.查看实时资源占用情况 3.查看进程 UID 4.其它ADB Shell命令说明 Android系统是基于 Linux 内核的,也就是说Android系统的底层是Linux系统. ...
- 『与善仁』Appium基础 — 8、Appium自动化测试框架介绍
目录 1.主流的移动端自动化测试框架 (1)Robotium (2)Macaca (3)Appium 2.自动化测试工具的选择 3.Appium简介 提示:我们前面说的Android环境搭建和adb命 ...
- 『与善仁』Appium基础 — 12、Appium的安装详解
目录 (一)Appium server安装 方式一:(桌面方式:推荐) 1.Appium Desktop下载 2.Appium Desktop安装 3.Appium Desktop使用 方式二:(No ...
- 『与善仁』Appium基础 — 15、使用Appium的第一个Demo
我们使用Python语言作为测试脚本的编写语言. 执行脚本前提: Android模拟器或者手机是开机状态. 使用确保电脑和Android设备进行了链接. 也就是使用ADB命令adb connect链接 ...
- 『与善仁』Appium基础 — 16、APPium基础操作API
目录 1.前置代码 2.安装和卸载APP 3.判断APP是否已安装 4.关闭APP软件和关闭驱动对象 5.发送文件到手机和获取手机中的文件 6.获取当前屏幕内元素结构(重点) 7.脚本内启动其他APP ...
- 『与善仁』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架构 ...
- 『与善仁』Appium基础 — 10、Appium基本原理
目录 1.Appium自动化测试架构 2.Appium架构图 3.Session说明 4.Desired Capabilities说明 5.Appium Server说明 6.Appium Clien ...
- 『与善仁』Appium基础 — 14、Appium测试环境搭建
目录 1.Appium测试环境搭建整体思路 (1)Android测试环境搭建 (2)Appium测试环境搭建 (3)测试脚本语言的环境搭建 2.Appium在Android端和IOS端的工作流程 (1 ...
- 『与善仁』Appium基础 — 17、元素定位工具(一)
目录 1.uiautomatorviewer介绍 2.uiautomatorviewer工具打开方式 3.uiautomatorviewer布局介绍 4.uiautomatorviewer工具的使用 ...
随机推荐
- HiLink & LiteOS & IoT芯片 让IoT开发简单高效
HiLink & LiteOS & IoT芯片让IoT开发简单高效 华为HiLink & LiteOS & IoT芯片使能三件套,让IoT开发更简单高效.下一代智能手机 ...
- JUC 并发编程--04 常用的辅助类CountDownLatch , CyclicBarrier , Semaphore , 读写锁 , 阻塞队列,CompletableFuture(异步回调)
CountDownLatch 相当于一个减法计数器, 构造方法指定一个数字,比如6, 一个线程执行一次,这个数字减1, 当变为0 的时候, await()方法,才开始往下执行,, 看这个例子 Cycl ...
- NOIP2018初赛普及组原题&题解
NOIP2018初赛普及组原题&题解 目录 NOIP2018初赛普及组原题&题解 原题&答案 题解 单项选择题 第$1$题 第$2$题 第$3$题 第$4$题 第$5$题 第$ ...
- 【VBA】打开关闭工作簿等
打开关闭工作簿等 1 Sub 打开工作簿() 2 Dim sFilePath As String 3 sFilePath = "D:\A.xls" 4 Dim oWB As Wor ...
- 合宙Luat | Cat.1 Socket数据收不到?学会两招不掉线
1 服务器收不到Socket数据的原因 Socket是大家使用Cat.1模块常用的功能之一,但Cat.1模块不是直接跟服务器连接,而是通过NAT(即网络地址转换)与服务器连接. 一个会话建立后会在NA ...
- 不下软件,照样可以完美正确格式化树莓派SD卡!(恢复U盘/SD卡到满容量)
树莓派作用千千万,系统崩溃的理由也数不胜数(不要问我为啥知道),所以系统的重装和sd卡的格式化也在所难免.顺便给大家看一下我今天的成果,我不就是不小心摔了一下我的树莓派...我和sd卡一定是冤家! 捡 ...
- 分布式事务与Seate框架(3)——Seata的AT模式实现原理
前言 在上两篇博文(分布式事务与Seate框架(1)--分布式事务理论.分布式事务与Seate框架(2)--Seata实践)中已经介绍并实践过Seata AT模式,这里一些例子与概念来自这两篇(特别是 ...
- 『无为则无心』Python基础 — 10、Python字符串的格式化输出
目录 1.什么是格式化输出 2.Python格式化输出的五种方式 方式一:字符串之间用+号拼接 方式二:print()函数可同时输出多个字符串 方式三:占位符方式 方式四:f格式化方式(推荐) 方式五 ...
- 『无为则无心』Python基础 — 12、Python运算符详细介绍
目录 1.表达式介绍 2.运算符 (1)运算符的分类 (2)算数运算符 (3)赋值运算符 (4)复合赋值运算符 (5)比较运算符 3.逻辑运算符 拓展1:数字之间的逻辑运算 拓展2:Python中逻辑 ...
- 【带你手撸Spring】没有哪个框架开发,能离开 Spring 的 FactoryBean!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 老司机,你的砖怎么搬的那么快? 是有劲?是技巧?是后门?总之,那个老司机的代码总是可 ...