Tim

一枚野生程序员~

  • 主页
  • 分类
  • 标签
  • 归档
  • 关于
所有文章 工具

Tim

一枚野生程序员~

  • 主页
  • 分类
  • 标签
  • 归档
  • 关于

WLAN下进行adb调试

阅读数:次 2021-02-19
字数统计: 1.6k字   |   阅读时长≈ 6分

Android调试桥(Android Debug Bridge,简称ADB)。本文主要是记录如何在WLAN网络下进行ABD连接设备以及一些常用的ADB命令,还有ADB的组成以及原理简要说明。

ADB的组成

客户端:用于发送命令,客户端在开发计算机上运行,可以通过adb从命令行终端调用Android设备。
守护程序 (adbd):用于在Android设备上运行命令,守护程序在每个设备上作为后台进程运行。
服务器:用于管理客户端与守护程序之间的通信,服务器在开发机器上作为后台进程运行。

ADB的原理

当启动某个adb客户端时,该客户端会先检查是否有adb服务器进程正在运行。如果没有,它会启动服务器进程。服务器在启动后会与本地TCP端口5037绑定,并监听adb客户端发出的命令,所有adb客户端均通过端口5037与adb服务器通信。可以看成是MySQL与3306的端口的关系。

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

1
2
3
4
5
模拟器 1,控制台:5554
模拟器 1,adb:5555
模拟器 2,控制台:5556
模拟器 2,adb:5557
依此类推

如上所示,在端口5555处与adb连接的模拟器与控制台监听端口为 5554 的模拟器是同一个。
服务器与所有设备均建立连接后,便可以使用adb命令访问这些设备。由于服务器管理与设备的连接,并处理来自多个adb客户端的命令,因此可以从任意客户端(或从某个脚本)控制任意设备。

使用WLAN进行ADB连接

使用WLAN进行ADB连接的前提仍然是需要有一根USB数据线,但是只要Android设备的WLAN下的IP不变,就可以丢掉数据线了。
1、首先将Android设备和adb主机连接到这两者都可以访问的同一WLAN网络。请注意,并非所有接入点都适用;您可能需要使用防火墙已正确配置为支持adb 的接入点。

2、使用 USB 线将设备连接到主机。

3、设置目标设备以监听端口5555上的TCP/IP连接:

1
adb tcpip 5555

4、拔掉连接目标设备的USB线,找到Android设备的IP地址。例如,设置 > WLAN设置 > 高级 > IP地址下找到 IP 地址。

5、通过 IP 地址连接到设备:

1
adb connect ${device_ip_address}

6、确认主机已连接到目标设备:

1
adb devices -l

如果 adb 连接断开:
确保主机仍与Android设备连接到同一个WLAN网络,通过再次执行adbconnect 步骤重新连接。如果上述操作未解决问题,则需要重置adb主机:

1
adb kill-server

下面是我通过Wi-Fi连接两台设备的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 此时只有一台小米通过USB进行ABD连接
# adb devices -l 用于查看处于连接中的设备
changlinzou@mac ~ % adb devices -l
List of devices attached
a9c5d217 device usb:339869696X product:gauguinpro model:M2007J17C device:gauguinpro transport_id:72

# 设置小米这台设备以监听端口5555上的TCP/IP连接:
changlinzou@mac ~ % adb tcpip 5555
restarting in TCP mode port: 5555

# 此时移除USB/type-c等有线连接
changlinzou@mac ~ % adb connect 10.73.13.237
connected to 10.73.13.237:5555

# 查看连接结果
changlinzou@mac ~ % adb devices -l
List of devices attached
10.73.13.237:5555 device product:gauguinpro model:M2007J17C device:gauguinpro transport_id:77

# 再通过USB连接一台华为的设备
changlinzou@mac ~ % adb devices -l
List of devices attached
PWHNW19709002241 device usb:339869696X product:GLK-AL00 model:GLK_AL00 device:HWGLK transport_id:78
10.73.13.237:5555 device product:gauguinpro model:M2007J17C device:gauguinpro transport_id:77

# adb -s可以指定对设备进行操作
changlinzou@mac ~ % adb -s PWHNW19709002241 shell
HWGLK:/ $ exit

# 给华为这台设备设置监听端口5557上的TCP/IP连接:
changlinzou@mac ~ % adb -s PWHNW19709002241 tcpip 5557
restarting in TCP mode port: 5557

changlinzou@mac ~ % adb devices -l
List of devices attached
PWHNW19709002241 device usb:339869696X product:GLK-AL00 model:GLK_AL00 device:HWGLK transport_id:79
10.73.13.237:5555 device product:gauguinpro model:M2007J17C device:gauguinpro transport_id:77

# 此时移除华为这台设备的USB连接
changlinzou@mac ~ % adb devices -l
List of devices attached
10.73.13.237:5555 device product:gauguinpro model:M2007J17C device:gauguinpro transport_id:77
changlinzou@mac ~ % adb connect 10.73.14.11
failed to connect to '10.73.14.11:5555': Connection refused

# 多台设备需要指定具体端口,如下
changlinzou@mac ~ % adb connect 10.73.14.11:5557
connected to 10.73.14.11:5557

# 连接成功
changlinzou@mac ~ % adb devices -l
List of devices attached
10.73.13.237:5555 device product:gauguinpro model:M2007J17C device:gauguinpro transport_id:77
10.73.14.11:5557 device product:GLK-AL00 model:GLK_AL00 device:HWGLK transport_id:80

在AndroidStudio中也是可以成功看见两台设备的。

ADB常用命令

虽然使用GUI操作起来比较方便,但是有时候还是需要通过命令来帮我们完成一些事情,所以还是记一下ADB的常用命令,查起来比较方便。

启动/关闭adb
关闭adb服务 adb kill-server
开启adb服务 adb start-server

查看手机设备 adb devices
查看手机设备 adb devices -l

安装/卸载应用
安装本地应用 adb install apk文件的绝对路径
保留数据及缓存文件安装新包 adb install -r apk文件的绝对路径
卸载应用 adb uninstall 应用包名

使用adb读取/写入手机文件
保存手机中文件到本地 adb pull 手机中路径 电脑路径
将本地文件传入手机 adb push 电脑路径 手机中路径

进入shell模式 adb shell

以下命令都是在shell里面执行的

列出手机上面所有安装的apk包名 pm list packages
列出手机上面所有安装的第三方apk包名 pm list packages -3
在包名的基础上面列出apk的路径 pm list packages -f
查看指定包名app的详细信息 dumpsys package package-name
截屏并保存文件在手机 /system/bin/screencap -p /sdcard/xx.png
清除缓存数据 pm clear com.xxx.xxx
指定APP产生随机事件100次 monkey -p 包名 100

赏

谢谢你请我喝咖啡

支付宝
微信
  • 本文作者: Tim
  • 本文链接: https://zouchanglin.cn/486253043.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 许可协议。转载请注明出处!
  • Android
  • 开发工具
  • 开发工具

扫一扫,分享到微信

组件化Gradle语法
  1. 1. ADB的组成
  2. 2. ADB的原理
  3. 3. 使用WLAN进行ADB连接
  4. 4. ADB常用命令
© 2017-2021 Tim
本站总访问量次 | 本站访客数人
  • 所有文章
  • 工具

tag:

  • 生活
  • Android
  • 索引
  • MySQL
  • 组件通信
  • Nginx
  • JavaSE
  • JUC
  • JavaWeb
  • 模板引擎
  • 前端
  • Linux
  • 计算机网络
  • Docker
  • C/C++
  • JVM
  • 上传下载
  • JavaEE
  • SpringCloud
  • Golang
  • Gradle
  • 网络安全
  • 非对称加密
  • IDEA
  • SpringBoot
  • Jenkins
  • 字符串
  • vim
  • 存储
  • 文件下载
  • Mac
  • Windows
  • NIO
  • RPC
  • 集群
  • 微服务
  • SSH
  • 配置中心
  • XML
  • Chrome
  • 压力测试
  • Git
  • 博客
  • 概率论
  • 排序算法
  • 分布式
  • 异常处理
  • 文件系统
  • 哈希
  • openCV
  • 栈
  • 回溯
  • SpringCore
  • 流媒体
  • rtmp
  • 面向对象
  • Vue
  • ElementUI
  • 软件工程
  • 异步
  • 自定义UI
  • ORM框架
  • 模块化
  • 交互式
  • Jsoup
  • Http Client
  • LRUCache
  • RabbitMQ
  • 消息通信
  • 服务解耦
  • 负载均衡
  • 权限
  • 多线程
  • 单例模式
  • Protobuf
  • 序列化
  • Python
  • m3u8
  • 堆
  • 二叉树
  • 自定义View
  • 观察者模式
  • 设计模式
  • 线程池
  • 动态扩容
  • 高可用
  • GC
  • ffmpeg
  • SpringMVC
  • REST
  • Redis
  • 缓存中间件
  • UML
  • Maven
  • Netty
  • 高性能网络
  • IPC通信
  • IO
  • Stream
  • 发布订阅
  • SQLite
  • Hash
  • 集合框架
  • 链表
  • Lambda
  • 汇编语言
  • 组件化
  • Router
  • 开发工具

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia-plus根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • 思维导图
  • PDF工具
  • 无损放大
  • 代码转图
  • HTTPS证书