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.pswp.cn/bicheng/92691.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/92691.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/92691.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何控制需求交付节奏

有效控制需求的交付节奏&#xff0c;其核心在于将产品开发过程从一个不可预测的、时快时慢的混乱状态&#xff0c;转变为一套产出稳定、流程顺畅、步调可持续的系统化交付机制。要成功构建这套机制&#xff0c;实现有节奏的价值交付&#xff0c;必须综合运用五大关键策略&#…

汇编中常用寄存器介绍

X86-32位寄存器 4个数据寄存器&#xff1a;EAX、EBX、ECX和EDX; 2个变址和指针寄存器&#xff1a;ESI和EDI; 2个指针寄存器&#xff1a;ESP和EBP; 1个指令指针寄存器&#xff1a;EIP; 6个段寄存器&#xff1a;ES、CS、SS、DS、FS和GS; 1个标志寄存器&#xff1a;EFlags。 在X8…

SOMGAN:用自组织映射改善GAN的模式探索能力

论文信息 论文题目:Improving mode exploring capability ofgenerative adversarial nets by self-organizing map(利用自组织映射提高生成对抗网络的模式探索能力) 期刊:Neurocomputing 摘要:生成对抗网络(GANs)的出现将生成模型的研究推向了一个新的高潮。支持这一进步…

《汇编语言:基于X86处理器》第12章 复习题和练习

本篇记录了《汇编语言&#xff1a;基于X86处理器》第12章 复习题和练习的笔记。12.6复习题和练习12.6.1 简答题1.假设有二进制浮点数1101.01101&#xff0c;如何将其表示为十进制分数之和?答&#xff1a;1101.01101(1x)(1x)(0x)(1x)(0x)(1x)(1x)(1x)(1x) 13.406252.为什么十进…

ApacheCon Asia 2025 中国开源年度报告:Apache Doris 国内第一

上周刚落下帷幕的 ApacheCon Asia 2025 中&#xff0c;一个数据让所有人都为之震撼&#xff1a;全球 Apache 基金会项目 OpenRank 排行榜中&#xff0c;Apache Doris 位居第二&#xff0c;在中国 Apache 项目中更是稳居第一。 这个排名意味着什么&#xff1f;在 Apache 基金会管…

Pytest中实现自动生成测试用例脚本代码

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快在Python的测试框架中&#xff0c;我们通常会针对某个系统进行测试用例的维护&#xff0c;在对庞大系统进行用例维护时&#xff0c;往往会发现很多测试用例是差不多…

一周学会Matplotlib3 Python 数据可视化-标注 (Annotations)

锋哥原创的Matplotlib3 Python数据可视化视频教程&#xff1a; 2026版 Matplotlib3 Python 数据可视化 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 课程介绍 本课程讲解利用python进行数据可视化 科研绘图-Matplotlib&#xff0c;学习Matplotlib图形参数基本设置&…

安全合规1--实验:ARP欺骗、mac洪水攻击、ICMP攻击、TCP SYN Flood攻击

一、实验环境 (思科的云实验平台)攻击机&#xff1a;Kali Linux&#xff08;IP&#xff1a;192.168.234.128&#xff0c;MAC&#xff1a;00:00:29:35:64:EC&#xff09;目标1&#xff1a;网关&#xff08;IP&#xff1a;192.168.234.2&#xff0c;MAC&#xff1a;00:50:56:ED:D…

Linux下GCC的C++实现Hive到Snowflake数据迁移

程序结构 ├── main.cpp ├── config.json ├── hive_export/ ├── parquet_data/ ├── sql_scripts/ └── logs/核心代码实现 (main.cpp) #include <iostream> #include <fstream> #include <vector> #include <thread> #include <mut…

drippingblues靶机教程

一、信息搜集首先将其在VirtualBOX中安装&#xff0c;并将kali与靶机都设置为桥接模式紧接着我们扫描IP&#xff0c;来发现靶机地址&#xff0c;经过搜集&#xff0c;发现IP是192.168.1.9&#xff0c;我们去访问一下紧接着我们扫一下开放了哪些端口。发现开放了21、22以及80端口…

39.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--调整发布脚本

这篇文章&#xff0c;我们要调整发布脚本。之所以要调整发布脚本&#xff0c;是因为现在我们的项目有三个环境&#xff1a;本地&#xff08;Local&#xff09;、开发&#xff08;Development&#xff09;、生产&#xff08;Production&#xff09;。Tip&#xff1a;我们的项目虽…

商品、股指及ETF期权五档盘口Tick级与分钟级历史行情数据多维解析

在金融数据分析领域&#xff0c;本地CSV文件是存储高频与低频数据的常用载体。本文以期权市场数据为例&#xff0c;探讨如何基于CSV格式处理分钟级行情、高频Tick数据、日频数据、逐笔委托记录、五档订单簿及历史行情数据&#xff0c;并提供专业的技术实现方案。以下将从数据预…

云端软件工程智能代理:任务委托与自动化实践全解

云端软件工程智能代理&#xff1a;任务委托与自动化实践全解 背景与未来趋势 随着软件工程复杂度不断提升&#xff0c;开发者对自动化工具的依赖也日益增强。我们正进入一个“人机协作”的新时代&#xff0c;开发者可以专注于核心创新&#xff0c;将重复性、繁琐的任务委托给智…

making stb style lib(1): do color print in console

col.h: see origin repo // origin repo: https://github.com/resyfer/libcol #ifndef _COL_HOL_H_ #define _COL_HOL_H_#include <stdlib.h> #include <stdio.h> #include <stdbool.h> #include <string.h> #include <math.h> // 新增&#xf…

llm本地部署+web访问+交互

要实现基于llm的web访问和交互&#xff0c;需支持对llm的访问和对网络搜索的调用。 这里使用ollama llm兼容openai sdk访问&#xff1b;使用proxyless-llm-websearch模拟网络搜索。 1 ollama本地部署 假设ollama已经部署&#xff0c;具体过程参考 在mac m1基于ollama运行dee…

自动驾驶数据闭环

自动驾驶的数据闭环是支撑算法持续迭代的核心机制&#xff0c;其本质是通过“数据采集-处理-训练-部署-反馈”的循环&#xff0c;不断优化模型对复杂场景的适应性。由于自动驾驶数据量极大&#xff08;单车日均TB级&#xff09;、场景多样&#xff08;从常规道路到极端边缘场景…

二十、MySQL-DQL-条件查询

DQL-条件查询代码&#xff1a; DQL-条件查询 -- 1.查询 姓名 为 杨逍 的员工 select * from tb_emp where name 杨逍; -- 2.查询 id小于等于5 的员工信息 select * from tb_emp where id < 5; -- 3.查询 没有分配职位 的员工信息 select * from tb_emp where job is null; …

Mac下安装Conda虚拟环境管理器

Conda 是一个开源的包、环境管理器&#xff0c;可以用于在同一个机器上创建不同的虚拟环境&#xff0c;安装不同Python 版本的软件包及其依赖&#xff0c;并能够在不同的虚拟环境之间切换 Conda常通过安装Anaconda/Miniconda来进行使用。一般使用Miniconda就够了。Miniconda 是…

Android 中解决 Button 按钮背景色设置无效的问题

1、问题描述 在布局文件中有两个 Button 按钮&#xff0c;为每个按钮设置不同的背景色&#xff0c;但是显示出来的效果都是紫色的&#xff0c;跟设置的颜色不同&#xff0c;布局文件如下所示&#xff1a;<Buttonandroid:id"id/button_cancel"android:layout_width…

云服务器--阿里云OSS(2)【Springboot使用阿里云OSS】

&#x1f4d2; 阿里云 OSS Spring Boot 异步任务&#xff08;直接存 OSS&#xff09; 1. 项目结构 src/main/java/com/example/demo├── controller│ └── UploadController.java // 接收上传请求├── service│ ├── AsyncUploadService.java // 异步上传…