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

一文掌握ADB的安装及使用

文章目录

  • 一、什么是ADB?
  • 二、 安装ADB
    • 2.1 下载ADB
    • 2.2 配置环境变量
  • 三、连接Android设备
  • 四、 常用ADB命令
  • 五、ADB高级功能
    • 5.1 屏幕截图和录制
    • 5.2 模拟按键输入
    • 5.3 文件管理
    • 5.4 系统设置管理
    • 5.5 系统操作指令
    • 5.6 日志操作指令
    • 5.7 APK操作指令
    • 5.8 设备重启和恢复
  • 六、小结

一、什么是ADB?

ADB(Android Debug Bridge)是一款功能强大的Androd开发工具,可用于在计算机和Android设备之间进行通信和控制。下面我们来看一下ADB的主要功能:

  • 设备管理: 连接和管理Android设备,包括列出所有连接的设备、获取设备信息等。
  • 应用管理: 安装、卸载、启动应用程序,以及查看应用信息等。
  • 文件传输: 在电脑和Android设备之间传输文件,包括拉取和推送文件。
  • 输入模拟: 模拟各种输入事件,如点击、滑动、输入文本等。
  • 屏幕操作: 捕获设备屏幕截图和屏幕录像。
  • 系统调试: 查看系统日志、获取设备属性、执行shell命令等。

二、 安装ADB

2.1 下载ADB

ADB的下载路径如下:

Windows版本: https://dl.google.com/android/repository/platform-tools-latest-windows.zip
Mac版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip
Linux版本:https://dl.google.com/android/repository/platform-tools-latest-linux.zip

2.2 配置环境变量

将ADB的platform-tools目录添加到系统PATH环境变量。这样做是为了方便命令使用,将目录添加到PATH环境变量后,就可以在任何目录下直接使用adb命令,而不需要输入完整的路径。

配置环境变量:

  • 步骤1: 先将下载的安装包进行解压,解压的文件夹中就有adb.exe。

  • 步骤2: 返回桌面,右击【此电脑】->【属性】->【高级系统设置】->【环境变量】
    在这里插入图片描述

  • 步骤3: 在系统变量中点击【新建】,输入变量名:adb (自定义);
    在这里插入图片描述

  • 步骤4: 在变量值中添加C:\Users\passion\Downloads\platform-tools(adb的工具路径)
    在这里插入图片描述
    在这里插入图片描述

  • 步骤5: 在系统变量path中添加刚刚添加的adb环境。双击Path,点击【新建】输入【%adb%】
    在这里插入图片描述
    在这里插入图片描述

  • 步骤6: 打开cmd,输入【adb version】出现版本号则为成功。 如果adb version执行不成功的话,可以重启电脑在试一下。在这里插入图片描述

三、连接Android设备

  • USB调试模式
    在Android设备上进入开发者选项,并启用USB调试。
    用USB数据将设备连接到电脑。
  • 无线连接
    在 Android 设备上进入"开发者选项",并启用"无线调试"。
    在电脑上使用 adb connect 命令连接设备。

四、 常用ADB命令

命令功能
adb version显示adb的版本
adb help帮助信息,查看所有ADB支持的命令
adb devices列出所有连接的安装设备
adb get-serialno查看设备号
adb install apk-file在设备上安装APK文件
adb uninstall package-name卸载设备上的应用程序
adb pull remote local从设备拉取文件到电脑
adb push local remote从文件从电脑推送到设备
adb shell进入设备的shell环境,可执行各种Android命令
adb root获取Android管理员(root用户)的权限
adb logcat查看设备的系统日志
exit退出
adb kill-server杀死当前adb服务,如果连不上设备时,杀掉重启。(没事不要用它)
adb start-server杀掉后重启
adb reboot edl重启后进入刷机模式
adb reboot fastboot重启后进入fastboot模式

五、ADB高级功能

5.1 屏幕截图和录制

  • 1. 捕获屏幕截图
# 在设备上捕获屏幕截图并保存到 /sdcard/screenshot.png 
adb shell screencap -p /sdcard/screenshot.png

在这里插入图片描述

  • 2. 将截图拉取到电脑上
# 将截图从设备拉取到电脑上
adb pull /sdcard/screenshot.png .

在这里插入图片描述

  • 3. 捕获设备录屏
# 录制设备屏幕并保存为 /sdcard/video.mp4
adb shell screenrecord /sdcard/video.mp4 

在这里插入图片描述

  • 4. 将录屏拉取到电脑上
# 将录制的视频从设备拉取到电脑上
adb pull /sdcard/video.mp4  .

在这里插入图片描述

5.2 模拟按键输入

  • 1. 模拟按下特定的按键
# 模拟按下特定的按键,如 HOME、BACK、VOLUME_UP 等。
adb shell input keyevent <key_code>

在这里插入图片描述

  • 2. 模拟在屏幕上的特定坐标点击
# 模拟在屏幕上的特定坐标点击
adb shell input tap \<x> \<y> 

在这里插入图片描述

  • 3. 模拟在当前焦点输入文本
# 模拟在当前焦点输入文本
adb shell input text "Hello World"
# 例如当我们焦点处于某文本框时,比如QQ登录界面 

在这里插入图片描述

5.3 文件管理

  • 1. 从设备拉取文件到电脑
# 从设备拉取文件到电脑
adb pull <remote> <local>

在这里插入图片描述

  • 2. 将文件从电脑推送到设备
# 将文件从电脑推送到设备
adb push <local> <remote> 

在这里插入图片描述

  • 3. 在设备上列出目录下的文件
# 在设备上列出 /sdcard 目录下的文件
adb shell ls /sdcard 

在这里插入图片描述

5.4 系统设置管理

  • 1. 获取系统设置的值
# 获取系统设置的值 
adb shell settings get system <setting> 
# 例:
# 获取屏幕亮度的值
adb shell settings get system screen_brightness

在这里插入图片描述

  • 2. 修改系统设置的值
#修改系统设置的值 可以设置屏幕亮度、自动锁屏时间、开发者选项等
adb shell settings put system <setting> <value> 
# 例:
# 设置屏幕亮度的值为120
adb shell settings put system screen_brightness 120

在这里插入图片描述

5.5 系统操作指令

  • 1. 获取设备型号
# 获取设备型号
adb shell getprop ro.product.model

在这里插入图片描述

  • 2. 获取安卓系统版本
# 获取Android系统版本
adb shell getprop ro.build.version.release

在这里插入图片描述

  • 3. 获取设备的序列号(设备号)
# 获取设备的序列号(设备号)
adb get-serialno

在这里插入图片描述

  • 4. 获取设备屏幕分辨率
# 获取设备屏幕分辨率
adb shell wm size

在这里插入图片描述

  • 5. 获取前台应用包名
# 查看前台应用包名,必须先启动app,适用于Android 8.0以上
adb shell
dumpsys window | grep mCurrentFocus

在这里插入图片描述

  • 6. 获取手机内存信息
# 获取手机内存信息
adb shell cat /proc/meminfo

在这里插入图片描述

  • 7. 获取手机存储信息
# 获取手机存储信息
adb shell df

在这里插入图片描述

5.6 日志操作指令

  • 1. 清理现有日志
# 清理现有日志
adb shell logcat -c

在这里插入图片描述

  • 2. 输出日志,信息输出在控制台
# 输出日志,信息输出在控制台
adb shell logcat -v time
# 输出日志并保存在本地文件
adb shell logcat -v time > <存放路径\log.txt>
# 注:
Ctrl+C:终止日志抓取
adb shell logcat -v time *:E > <存放路径\log.txt>:打印级别为Error的信息
日志的等级:
-v:Verbse(明细)
-d:Debug(调试)
-i:Info(信息)
-w:Warn(警告)
-e:Error(错误)
-f:Fatal(严重错误)
# 抓取日志的步骤
抓取日志的步骤先输入命令启动日志,然后操作 App,复现 bug,再 ctrl+c 停止日志。
分析本地保存的文件。日志是记录手机系统在运行app时有什么异常的事件。
# EXCEPTION
拉取Anr日志
ANR的全称是Application Not Responding,即“应用无响应”。它是指在Android操作系统上,
当应用程序在特定的时间内没有响应用户的输入事件或系统请求时,系统会向用户显示的一个对话框。
这个对话框通常会提示用户该应用程序未响应,并询问用户是希望继续等待还是强制关闭该应用程序。
adb shell pull /data/anr/traces.txt <存放路径>

在这里插入图片描述

5.7 APK操作指令

  • 1. 列出当前设备/手机,所有的包名
# 列出当前设备/手机,所有的包名
adb shell pm list packages

在这里插入图片描述

  • 2. 显示包和包相关联的文件(安装路径)
# 显示包和包相关联的文件(安装路径)
adb shell pm list packages -f
# 显示禁用的包名
adb shell pm list packages -d
# 显示当前启用的包名
adb shell pm list packages -e
# 显示系统应用包名
adb shell pm list packages -s
# 显示已安装第三方的包名
adb shell pm list packages -3
# 加需要过滤的包名,如:xxx = tencent
adb shell pm list packages xxxx

在这里插入图片描述

  • 3. 下载包
# 将本地的apk软件安装到设备(手机)上。如手机外部安装需要密码,记得手机输入密码。
adb install <文件路径\apk>
# 覆盖安装
adb install -r <文件路径\apk>
# 允许降级覆盖安装
adb install -d <文件路径\apk>
# 授权/获取权限,安装软件时把所有权限都打开
adb install -g <文件路径\apk>
  • 4. 卸载包
# 卸载该软件/app
# 注意:安装时安装的是apk,卸载时是包名,可以通过 adb shell pm list packages 查看需要卸载的包名
adb uninstall <包名>
# 虽然把此应用卸载,但仍保存此应用的数据和缓存
adb shell pm uninstall -k <包名>
# 强制退出该应用/app
adb shell am force-stop <包名>

5.8 设备重启和恢复

  • 1. 重启设备
# 重启设备
adb reboot 

在这里插入图片描述

  • 2. 以recovery模式重启设备
# 以 recovery 模式重启设备
adb reboot recovery 

在这里插入图片描述

  • 3. 以bootloader模式重启设备
# 以 bootloader 模式重启设备
adb reboot bootloader  

在这里插入图片描述

六、小结

ADB是我们Android开发和调试中不可或缺的工具,希望通过以上这些adb内容分享,可以帮助大家更好的控制和管理Android设备,提升大家的开发效率,后面有新的内容会继续往里面补充。

相关文章:

一文掌握ADB的安装及使用

文章目录 一、什么是ADB&#xff1f;二、 安装ADB2.1 下载ADB2.2 配置环境变量 三、连接Android设备四、 常用ADB命令五、ADB高级功能5.1 屏幕截图和录制5.2 模拟按键输入5.3 文件管理5.4 系统设置管理5.5 系统操作指令5.6 日志操作指令5.7 APK操作指令5.8 设备重启和恢复 六、…...

Linux系统下速通stm32的clion开发环境配置

陆陆续续搞这个已经很久了。 因为自己新电脑是linux系统无法使用keil&#xff0c;一开始想使用vscode里的eide但感觉不太好用&#xff1b;后面想直接使用cudeide但又不想妥协&#xff0c;想趁着这个机会把linux上的其他单片机开发配置也搞明白&#xff1b;而且非常想搞懂cmake…...

Java 9模块开发:IntelliJ IDEA实战指南

在Java 9中&#xff0c;模块化是一个重要的特性&#xff0c;它可以帮助我们更好地组织和管理代码。而IntelliJ IDEA作为一个强大的集成开发环境&#xff0c;为Java 9模块的开发提供了全面的支持。本文将通过一个实际的项目示例&#xff0c;详细讲解如何在IntelliJ IDEA中开发和…...

OpenCSG月度更新2025.1

1月的OpenCSG取得了一些亮眼的成绩 在2025年1月&#xff0c;OpenCSG在产品和社区方面继续取得了显著进展。产品方面&#xff0c;推出了AutoHub浏览器自动化助手&#xff0c;帮助用户提升浏览体验&#xff1b;CSGHub企业版功能全面升级&#xff0c;现已开放试用申请&#xff0c…...

【算法与数据结构】动态规划

目录 基本概念 最长递增子序列&#xff08;中等&#xff09; 最大子数组和&#xff08;中等&#xff09; 基本概念 重叠子问题 一个问题可以被分解为多个子问题&#xff0c;并且这些子问题在求解过程中会被多次重复计算。例如&#xff0c;在计算斐波那契数列时&#xff0c;…...

AWTK 骨骼动画控件发布

Spine 是一款广泛使用的 2D 骨骼动画工具&#xff0c;专为游戏开发和动态图形设计设计。它通过基于骨骼的动画系统&#xff0c;帮助开发者创建流畅、高效的角色动画。本项目是基于 Spine 实现的 AWTK 骨骼动画控件。 代码&#xff1a;https://gitee.com/zlgopen/awtk-widget-s…...

【llm对话系统】什么是 LLM?大语言模型新手入门指南

什么是 LLM&#xff1f;大语言模型新手入门指南 大家好&#xff01;欢迎来到 LLM 的奇妙世界&#xff01;如果你对人工智能 (AI) 的最新进展&#xff0c;特别是那些能像人类一样阅读、写作甚至进行对话的 AI 感兴趣&#xff0c;那么你来对地方了。这篇文章将带你认识 LLM 的基…...

三角形的最大周长(LeetCode 976)

给定由一些正数&#xff08;代表长度&#xff09;组成的数组 A&#xff0c;返回由其中三个长度组成的、面积不为零的三角形的最大周长。如果不能形成任何面积不为零的三角形&#xff0c;返回 0。 示例 1&#xff1a; 输入&#xff1a;[2,1,2] 输出&#xff1a;5 示例 2&…...

go到底是什么意思:对go的猜测或断言

go这个单词&#xff0c;简单地讲&#xff0c;表示“走或去”的意思&#xff1a; go v.去&#xff1b;走 认真想想&#xff0c;go是一个非常神秘的单词&#xff0c;g-和o-这两个字母&#xff0c;为什么就会表达“去&#xff1b;走”的意思呢&#xff1f;它的字面义或本质&…...

学习数据结构(2)空间复杂度+顺序表

1.空间复杂度 &#xff08;1&#xff09;概念 空间复杂度也是一个数学表达式&#xff0c;表示一个算法在运行过程中根据算法的需要额外临时开辟的空间。 空间复杂度不是指程序占用了多少bytes的空间&#xff0c;因为常规情况每个对象大小差异不会很大&#xff0c;所以空间复杂…...

DeepSeek--通向通用人工智能的深度探索者

一、词源与全称 “DeepSeek"由"Deep”&#xff08;深度&#xff09;与"Seek"&#xff08;探索&#xff09;组合而成&#xff0c;中文译名为"深度求索"。其全称为"深度求索人工智能基础技术研究有限公司"&#xff0c;英文对应"De…...

Unity游戏(Assault空对地打击)开发(1) 创建项目和选择插件

目录 前言 创建项目 插件导入 地形插件 前言 这是游戏开发第一篇&#xff0c;进行开发准备。 创作不易&#xff0c;欢迎支持。 我的编辑器布局是【Tall】&#xff0c;建议调整为该布局&#xff0c;如下。 创建项目 首先创建一个项目&#xff0c;过程略&#xff0c;名字请勿…...

(三)Session和Cookie讲解

目录 一、前备知识点 &#xff08;1&#xff09;静态网页 &#xff08;2&#xff09;动态网页 &#xff08;3&#xff09;无状态HTTP 二、Session和Cookie 三、Session 四、Cookie &#xff08;1&#xff09;维持过程 &#xff08;2&#xff09;结构 正式开始说 Sessi…...

【信息系统项目管理师-选择真题】2011下半年综合知识答案和详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9~10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20题】【第21题】…...

1.Template Method 模式

模式定义 定义一个操作中的算法的骨架&#xff08;稳定&#xff09;&#xff0c;而将一些步骤延迟&#xff08;变化)到子类中。Template Method 使得子类可以不改变&#xff08;复用&#xff09;一个算法的结构即可重定义&#xff08;override 重写&#xff09;该算法的某些特…...

【PyTorch】5.张量索引操作

目录 1. 简单行、列索引 2. 列表索引 3. 范围索引 4. 布尔索引 5. 多维索引 个人主页&#xff1a;Icomi 在深度学习蓬勃发展的当下&#xff0c;PyTorch 是不可或缺的工具。它作为强大的深度学习框架&#xff0c;为构建和训练神经网络提供了高效且灵活的平台。神经网络作为…...

力扣25.k个一组翻转链表

给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值&…...

[EAI-023] FAST: Efficient Action Tokenization for Vision-Language-Action Models

Paper Card 论文标题&#xff1a;FAST: Efficient Action Tokenization for Vision-Language-Action Models 论文作者&#xff1a;Karl Pertsch, Kyle Stachowicz, Brian Ichter, Danny Driess, Suraj Nair, Quan Vuong, Oier Mees, Chelsea Finn, Sergey Levine 论文链接&…...

2025年AI手机集中上市,三星Galaxy S25系列上市

2025年被认为是AI手机集中爆发的一年&#xff0c;各大厂商都会推出搭载人工智能的智能手机。三星Galaxy S25系列全球上市了。 三星Galaxy S25系列包含S25、S25和S25 Ultra三款机型&#xff0c;起售价为800美元&#xff08;约合人民币5800元&#xff09;。全系搭载骁龙8 Elite芯…...

八股文 (一)

文章目录 项目地址一、前端1.1 大文件上传,预览1.2 首页性能优化1.2 流量染色,灰度发布1.3 Websock心跳机制,大数据实时数据优化1.4 Gpu 加速 fps优化1.5 echarts包大小优化和组件封装1.6 前端监控系统1.7 超大虚拟列表卡顿1. 实现2. 相关问题(1) 什么是虚拟化列表,为什么要…...

在虚拟机里运行frida-server以实现对虚拟机目标软件的监测和修改参数(一)(android Google Api 35高版本版)

frida-server下载路径 我这里选择较高版本的frida-server-16.6.6-android-x86_64 以root身份启动adb 或 直接在android studio中打开 adb root 如果使用android studio打开的话&#xff0c;最好选择google api的虚拟机&#xff0c;默认以root模式开启 跳转到下载的frida-se…...

FLTK - FLTK1.4.1 - demo - animgifimage-play

文章目录 FLTK - FLTK1.4.1 - demo - animgifimage-play概述笔记END FLTK - FLTK1.4.1 - demo - animgifimage-play 概述 看的官方demo越多&#xff0c;在每个新demo中能看到的新增知识点越少。这是好事。 不可能一次将细节都记住&#xff0c;只要知道每个官方demo能干啥&…...

2024年除夕

多少年前的除夕&#xff0c;一如今天这样的除夕&#xff1b;多少年后的除夕&#xff0c;也一如多少年前的除夕。 无数个这样的除夕下午&#xff0c;我打开电脑&#xff0c;望着窗外安静的小区&#xff0c;车声渐渐稀疏的马路&#xff0c;想写下一些新的感受时&#xff0c;多少…...

如何实现滑动删除功能

文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了GestureDetector Widget相关的内容,本章回中将介绍Dismissible Widget.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1 概念介绍 我们在这里介绍的Dismissible是一个事件响应Widget,它和GestureDetector类…...

golang通过AutoMigrate方法自动创建table详解

一.AutoMigrate介绍 1.介绍 在 Go 语言中&#xff0c;GORM支持Migration特性&#xff0c;支持根据Go Struct结构自动生成对应的表结构,使用 GORM ORM 库的 AutoMigrate 方法可以自动创建数据库表&#xff0c;确保数据库结构与定义的模型结构一致。AutoMigrate 方法非常方便&am…...

JAVA:利用 Content Negotiation 实现多样式响应格式的技术指南

1、简述 Content Negotiation&#xff08;内容协商&#xff09; 是 RESTful 服务的重要特性&#xff0c;允许客户端和服务器根据请求的不同特性动态选择适合的响应格式。它是一种在 HTTP 协议中实现的机制&#xff0c;通过它&#xff0c;服务器能够根据客户端需求返回适合的内…...

Python 函数魔法书:基础、范例、避坑、测验与项目实战

Python 函数魔法书&#xff1a;基础、范例、避坑、测验与项目实战 内容简介 本系列文章是为 Python3 学习者精心设计的一套全面、实用的学习指南&#xff0c;旨在帮助读者从基础入门到项目实战&#xff0c;全面提升编程能力。文章结构由 5 个版块组成&#xff0c;内容层层递进…...

OpenBMC:编译

1.安装依赖 OpenBMC是基于Yocto搭建的&#xff0c;基于不同的OS预先需要安装的依赖包和工具&#xff0c;清参考&#xff1a; 1 System Requirements — The Yocto Project 5.1.999 documentation 2.下载代码 OpenBMC的源码位于&#xff1a; openbmc/openbmc: OpenBMC Distri…...

Effective Objective-C 2.0 读书笔记—— objc_msgSend

Effective Objective-C 2.0 读书笔记—— objc_msgSend 文章目录 Effective Objective-C 2.0 读书笔记—— objc_msgSend引入——静态绑定和动态绑定OC之中动态绑定的实现方法签名方法列表 其他方法objc_msgSend_stretobjc_msgSend_fpretobjc_msgSendSuper 尾调用优化总结参考文…...

使用EVE-NG-锐捷实现OSPF

一、OSPF基础知识 Open shortest Path First(OSPF)开放式最短路径优先协议 1.OSPF的关系状态 (1)邻居关系(TWO-WAY) 只发送hello包不发送LSA包(链路状态通告包) (2)邻接关系(FULL) OSPF设备与设备之间相互建立OSPF关系&#xff0c;初始为邻居关系(TWO-WAY)状态&#xff0…...