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

Android Debug Bridge(ADB)完全指南

文章目录

  • 前言
  • 一、什么是ADB?
  • 二、ADB的工作原理
    • ADB由三个部分组成:
  • 三、如何安装ADB
    • Windows系统:
    • macOS和Linux系统:
  • 四、ADB常用指令大全
    • 设备相关操作
      • 1. 查看连接的设备:
      • 2. 重启设备:
      • 3. 进入Bootloader模式:
      • 4. 进入恢复模式(Recovery):
      • 5. 查看设备运行状态:
      • 6. 获取设备的序列号:
      • 7. 查看设备的属性:
    • 文件传输操作
      • 1. 推送文件到设备:
      • 2. 从设备拉取文件:
      • 3. 查看设备文件系统:
    • 应用管理操作
      • 1. 安装APK文件:
      • 2. 卸载应用:
      • 3. 列出已安装的应用:
      • 4. 清除应用数据:
    • 系统操作和设置
      • 1. 进入设备Shell:
      • 2. 抓取设备当前屏幕截图:
      • 3. 录制设备屏幕:
      • 4. 查看电池状态:
    • 网络操作
      • 1. 通过Wi-Fi连接设备:
        • 1.通过USB连接设备,并执行以下命令查看设备IP:
        • 2.断开USB,开启Wi-Fi调试:
      • 2. 断开Wi-Fi调试:
    • 开发调试操作
      • 1. 启动特定Activity:
      • 2. 停止特定应用:
      • 3. 查看设备内存使用情况:
    • 高级开发操作(刷机、Bootloader等)
      • 1. 进入Fastboot模式:
      • 2. 解锁Bootloader:
      • 3. 锁定Bootloader:
      • 4. 刷入系统镜像:
      • 5. 重启设备:
  • 五、ADB的更多用途
  • 六、常见问题与解决方案
    • 1.设备未识别:
    • 2.ADB权限不足:
    • 3.ADB无法连接Wi-Fi设备:
  • 七、总结


前言

ADB(Android Debug Bridge)是Android SDK中的一款非常重要的命令行工具。通过它,开发者可以与Android设备进行交互,调试应用、管理文件,甚至执行一些系统操作如刷机和设备恢复。无论是开发者还是高级用户,掌握ADB指令都是非常有帮助的。本篇文章将详细介绍ADB的安装、使用及常用命令,并提供一些实用的应用场景和示例。


一、什么是ADB?

ADB,全称为 Android Debug Bridge,是Android SDK中的一个命令行工具,主要用于开发者和高级用户与Android设备交互。它可以通过USB连接或者无线网络连接设备,帮助开发者调试应用、控制设备、传输数据、执行命令和操作系统等。开发者可以使用ADB执行诸如安装/卸载应用、重启设备、访问设备的文件系统等任务。

二、ADB的工作原理

ADB由三个部分组成:

•	客户端(Client):你输入命令的地方,通常是命令行终端。
•	守护程序(Daemon):在Android设备上运行的后台进程,负责执行ADB命令。
•	服务器(Server):协调客户端和守护程序之间的通信。

当你在电脑的终端输入ADB命令时,客户端将命令发送给服务器,服务器再与设备上的守护程序通信以执行命令。

三、如何安装ADB

Windows系统:

1.	下载ADB工具包:(https://dl.google.com/android/repository/platform-tools-latest-windows.zip)。
2.	解压工具包到某个路径。
3.	打开系统环境变量设置,将解压路径添加到系统路径变量中。
4.	在命令提示符输入 adb 进行验证,成功显示ADB命令帮助信息即安装成功。

macOS和Linux系统:

1.	下载ADB工具包:(https://dl.google.com/android/repository/platform-tools-latest-darwin.zip)(https://dl.google.com/android/repository/platform-tools-latest-linux.zip)。
2.	解压后,打开终端并进入解压路径。
3.	在终端输入:
./adb

这会输出ADB的帮助信息,表示安装成功。

4.	(可选)将ADB路径添加到环境变量中,以便于在任意路径下都能使用ADB命令。

四、ADB常用指令大全

设备相关操作

1. 查看连接的设备:

adb devices

显示所有通过USB或者Wi-Fi连接的Android设备。

2. 重启设备:

adb reboot

使设备重启。

3. 进入Bootloader模式:

adb reboot bootloader

使设备进入Bootloader模式,用于解锁Bootloader或者刷机。

4. 进入恢复模式(Recovery):

adb reboot recovery

使设备进入恢复模式,常用于恢复系统或者安装自定义ROM。

5. 查看设备运行状态:

adb get-state

输出设备的当前状态(如device、recovery等)。

6. 获取设备的序列号:

adb get-serialno

显示设备的序列号。

7. 查看设备的属性:

adb shell getprop

例如,查看系统版本:

adb shell getprop ro.build.version.release

文件传输操作

1. 推送文件到设备:

adb push <本地文件路径> <设备目标路径>

例如:

adb push myfile.txt /sdcard/

2. 从设备拉取文件:

adb pull <设备文件路径> <本地保存路径>

例如:

adb pull /sdcard/myfile.txt ~/Downloads/

3. 查看设备文件系统:

adb shell ls /sdcard/

应用管理操作

1. 安装APK文件:

adb install <APK文件路径>

例如:

adb install myapp.apk

2. 卸载应用:

adb uninstall <应用包名>

例如:

adb uninstall com.example.myapp

3. 列出已安装的应用:

adb shell pm list packages

4. 清除应用数据:

adb shell pm clear <应用包名>

系统操作和设置

1. 进入设备Shell:

adb shell

可以执行Shell命令,例如ls、cd等。

2. 抓取设备当前屏幕截图:

adb shell screencap /sdcard/screenshot.png
adb pull /sdcard/screenshot.png

3. 录制设备屏幕:

adb shell screenrecord /sdcard/screen.mp4
adb pull /sdcard/screen.mp4

4. 查看电池状态:

adb shell dumpsys battery

网络操作

1. 通过Wi-Fi连接设备:

1.通过USB连接设备,并执行以下命令查看设备IP:
adb shell ip addr show wlan0
2.断开USB,开启Wi-Fi调试:
adb tcpip 5555
adb connect <设备IP>:5555

2. 断开Wi-Fi调试:

adb disconnect <设备IP>:5555

开发调试操作

1. 启动特定Activity:

adb shell am start -n <包名>/<Activity类名>

例如:

adb shell am start -n com.example/.MainActivity

2. 停止特定应用:

adb shell am force-stop <包名>

3. 查看设备内存使用情况:

adb shell dumpsys meminfo

高级开发操作(刷机、Bootloader等)

1. 进入Fastboot模式:

adb reboot bootloader

2. 解锁Bootloader:

fastboot oem unlock

3. 锁定Bootloader:

fastboot oem lock

4. 刷入系统镜像:

fastboot flash system system.img

5. 重启设备:

fastboot reboot

五、ADB的更多用途

ADB除了应用管理、文件传输等常见任务,还能用于:

•	开发人员调试和性能优化:通过adb logcat查看日志,实时调试应用。
•	刷机和设备恢复:通过Fastboot模式刷入自定义ROM或恢复原厂ROM。
•	脚本自动化:可以编写脚本通过ADB自动化执行一系列的操作。
•	多设备管理:支持同时连接多个设备,并通过设备序列号区分不同设备。

六、常见问题与解决方案

1.设备未识别:

•	检查是否启用开发者选项和USB调试。
•	更新ADB驱动程序。

2.ADB权限不足:

• 使用adb root获取设备的root权限(需要设备已Root)。

3.ADB无法连接Wi-Fi设备:

•	确保设备与电脑在同一个网络中。
•	确认设备的IP地址正确。

七、总结

ADB 是Android开发和管理过程中必不可少的工具,它不仅能帮助开发者调试应用,还可以用于设备的管理和自动化任务。无论是应用的安装、系统的调试,还是高级的设备刷机操作,ADB都提供了强大的功能。通过掌握ADB的各种指令,开发者和用户可以更高效地管理和控制Android设备。

相关文章:

Android Debug Bridge(ADB)完全指南

文章目录 前言一、什么是ADB&#xff1f;二、ADB的工作原理ADB由三个部分组成&#xff1a; 三、如何安装ADBWindows系统&#xff1a;macOS和Linux系统&#xff1a; 四、ADB常用指令大全设备相关操作1. 查看连接的设备&#xff1a;2. 重启设备&#xff1a;3. 进入Bootloader模式…...

再次重逢,愿遍地繁花

再次重逢&#xff0c;愿遍地繁花 我并不是一个对最终幻想7很热衷的粉丝&#xff0c;也并没有像那些评论区的大佬&#xff0c;能够轻易地说出整部世界的全貌。说到底&#xff0c;我只是一个看完了《最终幻想7&#xff1a;重制版》和《最终幻想7&#xff1a;重生》的爱好者罢了。…...

数据结构和算法基础(一)

文章目录 链表反转链表合并删除链表倒数第 n 个结点找链表的中间结点链表中环的检测排序算法递归 趁空闲时间刷一遍极客时间上王争的《数据结构与算法之美》课程&#xff0c;个人觉得写的很好&#xff0c;每章节由浅入深且从基础到引入设计类问题&#xff0c;如果写过很多代码想…...

【超长好文】网络安全从业者面试指南

文章为笔者偶然看到的github项目《网络安全面试指南》&#xff0c;作者FeeiCN&#xff0c;读完内容深感作者的用心&#xff0c;尽管一些观点因为时间原因与当下行情存在差异&#xff0c;但仍旧值得大家参考&#xff0c;希望能给大家在这行业寒冬带来一些启发&#xff0c;愿正在…...

基于大数据的高校新生数据可视化分析系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

【cache】浅析四种常用的缓存淘汰算法 FIFO/LRU/LFU/W-TinyLFU

本文浅析淘汰策略与工作中结合使用、选取&#xff0c;并非针对算法本身如何实现的 文章目录 FIFOLFULRUW-TinyLFU实践与优化监控与调整 FIFO first input first output &#xff0c; 先进先出&#xff0c;即最早存入的元素最先取出&#xff0c; 典型数据结构代表&#xff1a;…...

STM32的DMA技术介绍

DMA&#xff08;Direct Memory Access&#xff0c;直接内存访问&#xff09; 是一种允许外设直接与系统内存进行数据传输&#xff0c;而无需经过CPU的技术。在STM32微控制器中&#xff0c;DMA技术极大地提高了数据传输效率&#xff0c;降低了CPU的负担&#xff0c;从而提升系统…...

C++11 多线程编程-小白零基础到手撕线程池

提示&#xff1a;文章 文章目录 前言一、背景二、 2.1 2.2 总结 前言 前期疑问&#xff1a; 本文目标&#xff1a; 一、背景 来源于b站视频 C11 多线程编程-小白零基础到手撕线程池 学习来源&#xff1a;https://www.bilibili.com/video/BV1d841117SH/?p2&spm_id_f…...

智源研究院与百度达成战略合作 共建AI产研协同生态

2024年9月24日&#xff0c;北京智源人工智能研究院&#xff08;简称“智源研究院”&#xff09;与北京百度网讯科技有限公司&#xff08;简称“百度”&#xff09;正式签署战略合作协议&#xff0c;双方将充分发挥互补优势&#xff0c;在大模型等领域展开深度合作&#xff0c;共…...

Flask-SQLAlchemy:在Flask应用中优雅地操作数据库

在Python的Web开发领域&#xff0c;Flask是一个备受欢迎的轻量级Web框架&#xff0c;它以简洁、灵活而著称。而当我们需要在Flask应用中与数据库进行交互时&#xff0c;Flask-SQLAlchemy就成为了一个强大而便捷的工具。它将Flask的简洁性与SQLAlchemy的强大数据库抽象能力完美结…...

智能巡检机器人 数据库

智能巡检机器人AI智能识别。无需人工。只需后台监控结果即可&#xff01;...

Spring AOP异步操作实现

在Spring框架中&#xff0c;AOP&#xff08;面向切面编程&#xff09;提供了一种非常灵活的方式来增强应用程序的功能。异步操作是现代应用程序中常见的需求&#xff0c;尤其是在处理耗时任务时&#xff0c;它可以帮助我们提高应用程序的响应性和吞吐量。Spring提供了一种简单的…...

【2006.07】UMLS工具——MetaMap原理深度解析

文献&#xff1a;《MetaMap: Mapping Text to the UMLS Metathesaurus》2006 年 7 月 14 日 https://lhncbc.nlm.nih.gov/ii/information/Papers/metamap06.pdf MetaMap&#xff1a;将文本映射到 UMLS 元数据库 总结 解决的问题 自动概念映射问题&#xff1a;解决如何将文本…...

ros2 colcon build 构建后,install中的local_setup.bash 和setup.bash有什么区别

功能概述 在 ROS2 中&#xff0c;colcon build是用于构建软件包的工具。构建完成后会生成install文件夹&#xff0c;其中的setup.bash和local_setup.bash文件都与环境设置相关&#xff0c;但存在一些区别。setup.bash 作用范围 setup.bash文件用于设置整个工作空间的环境变量。…...

Thymeleaf基础语法

Thymeleaf 是一种用于 Web 和非 Web 环境的现代服务器端 Java 模板引擎。它能够处理 HTML、XML、JavaScript、CSS 甚至纯文本。以下是 Thymeleaf 的一些基础语法&#xff1a; 1. 变量表达式 <!-- 显示变量的值 --> <p th:text"${name}">Default Name&l…...

spring cloud alibaba学习路线

以下是一条学习Spring Cloud Alibaba的路线&#xff1a; 一、基础前置知识 1. Java基础 熟练掌握Java语言特性&#xff0c;包括面向对象编程、集合框架、多线程等知识。 2. Spring和Spring Boot基础深入理解Spring框架&#xff0c;如依赖注入&#xff08;DI&#xff09;、控…...

基于 Seq2Seq 的中英文翻译项目(pytorch)

项目简介 本项目旨在使用 PyTorch 构建一个基于 Seq2Seq(编码器-解码器架构)的中英文翻译模型。我们将使用双语句子对的数据进行训练,最终实现一个能够将英文句子翻译为中文的模型。项目的主要步骤包括: 数据预处理:从数据集中提取英文和中文句子,并进行初步清洗和保存。…...

部标主动安全(ADAS+DMS)对接说明

1.前言 上一篇介绍了部标&#xff08;JT/T1078&#xff09;流媒体对接说明&#xff0c;这里说一下如何对接主动安全附件服务器。 流媒体的对接主要牵扯到4个方面&#xff1a; &#xff08;1&#xff09;平台端&#xff1a;业务端系统&#xff0c;包含前端呈现界面。 &#x…...

C++ STL(1)迭代器

文章目录 一、迭代器详解1、迭代器的定义与功能2、迭代器类型3、示例4、迭代器失效4.1、vector 迭代器失效分析4.2、list 迭代器失效分析4.3、set 与 map 迭代器失效分析 5、总结 前言&#xff1a; 在C标准模板库&#xff08;STL&#xff09;中&#xff0c;迭代器是一个核心概念…...

uview表单校验不生效问题

最近几次使用发现有时候会不生效&#xff0c;具体还没排查出来什么原因&#xff0c;先记录一下解决使用方法 <u--formlabelPosition"top"labelWidth"auto":model"form":rules"rules"ref"uForm" ><view class"…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...