『与善仁』Appium基础 — 4、常用ADB命令(一)

本文详细介绍了Android Debug Bridge (ADB) 的使用,包括启动和关闭ADB服务、查看版本、指定端口、查询设备、获取系统版本、指定命令目标设备、发送及拉取文件等操作。内容涵盖了ADB的基本功能及其在多设备环境下的应用。
摘要由CSDN通过智能技术生成

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

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

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

1、启动和关闭ADB服务

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

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

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

演示:

1)启动ADB服务

shell

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

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

注意:

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

2)关闭ADB服务

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

 

2、查看ADB版本

ADB命令:adb version

shell

C:UsersL>adb version
Android Debug Bridge version 1.0.41
Version 29.0.6-6198805
Installed as F:***android-sdk-windowsplatform-toolsadb.exe
C:UsersL>

3、指定adb server的网络端口

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

默认端口为 5037。

shell

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

提示:

  • netstat -ano查询进程ID。
  • taskkill /f /t /im 进程名杀掉进程。
    如:taskkill /f /t /im nginx.exe

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

ADB命令:adb devices

前提:Android模拟器已开启。

演示:

(1)直接执行adb devices命令

shell

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

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

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

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

shell

C:UsersL> adb connect 127.0.0.1:21503
connected to 127.0.0.1:21503
C:UsersL>

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

shell

C:UsersL>adb devices
List of devices attached
127.0.0.1:21503 device
C:UsersL>

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

说明:

输出格式为 [serialNumber] [state]

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

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

常见异常输出

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

5、获取安卓系统版本

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

演示:

shell

C:UsersL>adb shell getprop ro.build.version.release
7.1.2
C:UsersL>

6、为命令指定目标设备

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

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

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

accesslog

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

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

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

apache

adb -s cf264b8f shell wm sizeadb -s cf264b8f shell wm size

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

cmake

adb -s 10.129.164.6:5555 install test.apk10.129.164.6:5555 install test.apk

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

7、发送文件到手机

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

提示

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

示例

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

shell

C:UsersL>adb push C:UsersLDesktop	est.txt /sdcard
C:UsersLDesktop	est.txt: 1 file pushed, 0 skipped. 0.0 MB/s (36 bytes in 0.003s)
C:UsersL>

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

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

 

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

8、从手机拉取文件

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

示例:

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

shell

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

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

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

参考:GitHub - mzlogin/awesome-adb: ADB Usage Complete / ADB 用法大全

__EOF__

«  上一篇: 『与善仁』Appium基础 — 3、ADB命令介绍
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值