当前位置: 首页 > news >正文

openvela之ADB

ADB(Android Debug Bridge)是一款功能丰富的命令行工具,旨在实现开发工作站与设备(如模拟器、实体设备)之间的通信。通过 ADB,开发者可以便捷地在设备上执行命令、传输文件、调试应用等。本文将详细介绍 ADB 的工作原理、核心命令及使用方法,帮助你高效掌握这一工具。

一、ADB 的核心组件与工作原理

1. 三大核心组件

ADB 采用客户端 - 服务器架构,包含三个关键部分:

  • 客户端:运行在开发工作站上,负责发送命令(如通过命令行终端调用)。
  • 守护程序(adbd):作为后台进程运行在设备上,负责执行客户端发送的命令。
  • 服务器:同样运行在开发工作站上的后台进程,负责管理客户端与守护程序之间的通信。

2. 工作流程

  1. 端口绑定:所有 ADB 客户端通过 5037 端口 与 ADB 服务器通信。启动客户端时,若服务器未运行则自动启动,并绑定到本地 5037 端口监听命令。
  2. 设备连接:服务器启动后,会扫描 5555-5585 之间的奇数端口(最多支持 16 个模拟器),寻找运行中的设备 / 模拟器。每个设备使用一对连续端口:
    • 偶数端口:用于控制台连接(如 5554);
    • 奇数端口:用于 ADB 连接(如 5555)。
  3. 命令转发:服务器与设备建立连接后,客户端发送的命令由服务器转发至目标设备的 adbd 执行,结果再经服务器返回给客户端。

二、查询已连接设备

在发送 ADB 命令前,需先确认已连接的设备列表,使用以下命令:

adb devices

在这里插入图片描述

输出说明
命令会返回设备的 序列号(唯一标识,如 emulator-5554)和 状态:

  • offline:设备未连接到 ADB 或无响应;
  • device:设备已连接(但不代表系统完全启动);
  • no device:无设备连接。

特殊情况:模拟器未列出?
若模拟器运行但未显示在列表中,可能是以下原因导致:

  1. ADB 服务器未启动;
  2. 模拟器通过 -port 或 -ports 指定了 5554-5584 之间的奇数端口;
  3. 端口空闲或模拟器切换到符合条件的其他端口;
  4. 启动模拟器后才启动 ADB 服务器。

解决办法:重启 ADB 服务器(adb kill-server 后再执行任意 ADB 命令)。

三、向指定设备发送命令

若存在多个设备 / 模拟器,需通过以下选项指定目标:

  • -d:指定连接的实体设备;
  • -e:指定运行的模拟器;
  • -s <serial_number>:通过序列号指定设备(推荐)。

命令格式:

adb [-d | -e | -s serial_number] command

1. 端口转发

将主机端口的请求转发到设备端口,用于调试网络数据:

# 主机 6100 端口 → 设备 7100 端口
adb forward tcp:6100 tcp:7100# 主机 6100 端口 → 设备 logd(系统日志守护程序)
adb forward tcp:6100 local:logd

2. 传输文件

使用 pull(从设备复制到本地)和 push(从本地复制到设备)命令:

# 从设备拉取文件:adb pull <设备路径> <本地路径>
adb pull /sdcard/photo.jpg ~/Desktop/# 向设备推送文件:adb push <本地路径> <设备路径>
adb push ~/music/song.mp3 /sdcard/music/

3. 管理 ADB 服务器

  • 停止服务器:
adb kill-server
  • 重启服务器:执行任意 ADB 命令(如 adb devices)即可自动启动。

4. 查看所有支持的命令

如需了解完整命令列表,使用:

adb --help

四、执行 Shell 命令

通过 ADB 可直接在设备上运行 shell 命令,支持两种方式:

1. 单条命令

# 示例:查看设备内存使用情况
adb shell free# 示例:列出设备上的应用包名
adb shell pm list packages

2. 交互式 Shell
启动与设备的交互式命令行:

adb shell

在这里插入图片描述

此时可直接输入设备端的 shell 命令(如 lscd 等),退出时输入 exit 或按 Control+D

总结

ADB 是连接开发工作站与设备的重要桥梁,通过其丰富的命令集,开发者可以高效地进行设备管理、文件传输、调试等操作。掌握 ADB 的工作原理和核心命令,能显著提升openvela的开发效率。如需进一步探索,可通过 adb --help 查看所有命令的详细说明。

http://www.dtcms.com/a/323716.html

相关文章:

  • Java Stream 使用 Fork/Join框架的分治任务模型
  • 详解Windows(十四)——PowerShell与命令提示符
  • 如何检查减速机的密封件是否老化?
  • 06-docker容器常用命令
  • Docker镜像地址
  • 安装NodeJS和TypeScript简要指南
  • MySQL数据库详细笔记
  • 线上排查问题的一般流程是怎么样的?
  • Linux网络子系统架构分析
  • 检索增强生成:RAG(Retrieval Augmented Generation)
  • doubletrouble靶机通关练习笔记
  • 数学与应用数学:到底有啥区别?
  • 【LLM】大模型投机采样(Speculative Sampling)推理加速
  • 基于麦克风阵列电机噪声振动监测解决方案技术解析
  • C++算法练习:单词识别
  • 前端面试专栏-面试实战:33. 简历撰写技巧与优化
  • Linux操作系统如何不进入图形化界面
  • 鸿蒙开发中的Tabs组件详解
  • Java中Lambda表达式的常见用法和解析:从入门到实战
  • 嵌入式软件工程师笔试题(二)
  • 关于C语言本质的一些思考
  • PAT 1053 Path of Equal Weight
  • 力扣-41.缺失的第一个正数
  • 三极管在电路中的应用
  • 如何有效追踪您的关键词搜索排名
  • USRP B210 N210 X310 参数对比
  • Vue3 生命周期
  • 【文献阅读】我国生态问题鉴定与国土空间生态保护修复方向
  • 3.5.1_2 信道划分介质访问控制(下)
  • Java 大视界 -- Java 大数据在智能家居场景联动与用户行为模式挖掘中的应用(389)