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

Android ADB工具使用教程(从安装到使用)

目录

ADB工具介绍

什么是ADB?

组成

主要功能

ADB工具安装与连接设备

WIFI连接,提示计算机积极拒绝10061

WIFI成功连接后,拔掉数据线显示offline

提示adb版本不一致​编辑

ADB工具使用

 ★日志操作命令

adb logcat:抓取日志

日志格式

★input操作命令

常用命令

权限指令

获取包名的命令

当有多个设备时连接时

安装/卸载应用

上传/下载文件


ADB工具介绍

什么是ADB?

ADB 全称为 Android Debug Bridge,是 Android SDK 中的一个工具,起到调试桥的作用,是一个客户端-服务器端程序。其中客户端是用来操作的电脑,服务端是 Android 设备。

ADB 可以直接操作管理 Android 模拟器或者真实的 Android 设备。Android的初衷是用adb这样的一个工具来协助开发人员在开发android应用的过程中更快更好的调试apk,因此adb具有安装卸载apk、拷贝推送文件、查看设备硬件信息、查看应用程序占用资源、在设备执行shell命令等功能。

组成

客户端:用来发送命令。客户端在计算机上运行,通过发出adb命令从命令行终端调用客户端

守护程序(adbd):用于在设备上运行命令。守护程序在每个设备生作为后台进程运行

服务器:用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行

主要功能

adb实现用户在电脑上对android手机进行全面的操作

  1. 运行设备的shell(命令行)
  2. 管理模拟器或设备的端口映射
  3. 计算机和设备之间上传/下载文件
  4. 设备应用管理

ADB工具安装与连接设备

1.安装JDK环境(安装并设置环境变量)

1.1 下载JDK

1.2 配置环境变量

1.3 命令行窗口输入java  / javac检查是否安装成功

官网下载地址:Java Archive Downloads 

2.安装SDK环境(安装并设置环境变量/或是使用免安装版的adb工具包)

2.1 下载SDK

2.2 打开SDK Manager下载Android SDK Platform-tools

2.3 配置环境变量

2.4 命令行窗口输入adb检查是否安装成功

官网下载地址:AndroidDevTools - Android 开发工具 

3.连接真机或者模拟器执行命令

3.1 模拟器选择与安装:(真机需要连接数据线)

常见的安卓模拟器: MuMu(网易MuMu)BlueStacks(蓝叠) 、Nox(夜神)、 MEmu(逍遥安卓模拟器)、LDPlayer(雷电模拟器) 、Android Studio模拟器 、Genymotion模拟器Phoenix OS(凤凰系统)

夜神模拟器安装地址:夜神安卓模拟器-安卓模拟器电脑版下载_安卓手游模拟器_手机模拟器_官网

3.2 连接真机

  • 打开真机,进行usb调试:
  • 进入设置--开发者选项--打开usb调试
  • 如果没有开发者选项,在设置--软件版本,连续点击版本号多次,直到提示您已经处于开发者模式。
  • 插上数据线,选择USB连接方式为传输文件
  • adb devices查看连接状态

补充:WIFI连接(拔掉数据线后也能运行)的方法

  • 打开真机,进行usb调试:
  • 进入设置--开发者选项--打开usb调试
  • 如果没有开发者选项,在设置--软件版本,连续点击版本号多次,直到提示您已经处于开发者模式。
  • 手机电脑处于同一个局域网中  看网络号
  • 插上数据线,选择USB连接方式为传输文件  adb devices查看连接状态
  • adb tcpip 5555 让设备在 5555 端口监听 TCP/IP 连接
  • 拔除数据线,输入adb connect ip:5555  手机IP可在WIFI设置中查看
  • adb devices查看连接状态

常见问题:

WIFI连接,提示计算机积极拒绝10061

解决方法:手机需ROOT

1 通过USB线连接安卓板和开发电脑。

2 设置安卓系统如下,安卓系统中的开发者选项中的 <<USB调试>>项是开启的,<<USB配置>>是MTP选项。

3 在开发电脑WIN系统中,通过cmd打开命令行窗口界面,输入adb devices,如果能够看到, 列出所连接的设备,表示usb方式连接好Android系统。

4 win系统命令行界面中先后输入如下两条命令:

     adb root            //权限提权。

     adb shell           //进入到安卓系统的shell.

5  进入到安卓系统后,输入命令 

setprop service.adb.tcp.port 5555        //设置adb服务端口为5555, 打开adb网络调试功能  附加说明: setprop service.adb.tcp.port -1 //表示打开adb的usb调试功能。 

6  输入 exit 命令, 退出android shell。

7  输入命令:

     adb tcpip 5555               //让设备在 5555 端口监听 TCP/IP 连接。

8 这时拔掉usb连接线。

9 使用 adb connect 192.168.1.181 进行adb 网络连接,可以正常连接。

总结:

无法连接的原因是安卓系统未打开adb网络调试功能, 通过usb方式连接到安卓系统并设置即可

解决办法:手机不需要Root
1.手机打开开发者模式,然后打开USB调试

2.使用USB数据线连接手机和电脑

3.在PC端打开cmd命令窗口,输入adb devices ,可以看到已经连接的设备

4.输入adb tcpip 8888   (设置端口号为8888)

5.断开手机和电脑的连接

6.输入adb connect ip:8888,连接成功

常见问题:

WIFI成功连接后,拔掉数据线显示offline

1、拔掉数据线后,手机需要再次打开【开发者选项】中的USB调试。

2、打开【开发者选项】中的“仅充电”模式下允许ADB调试。

3.2 连接模拟器

前提:开启开发者选项

  • 打开模拟器,进行usb调试:
  • 进入设置--开发者选项--打开usb调试
  • 如果没有开发者选项,在设置--关于平板电脑,连续点击版本号多次,直到提示您已经处于开发者模式。

电脑CMD命令行终端:adb devices  查看当前连接的设备,已连接的设备会显示出来

连接信息解释:

手机设备:显示设备的序列号,如8DJBRKIBKJ9D6AM

模拟器:显示IP地址和端口,如127.0.0.1:62001

状态:

device: 已识别设备,连接成功

unauthorized: 没有授权,需要手机进行授权手机弹出的授权框点击授权即可

unknown: 未识别设备 电脑上没有手机驱动,安装手机助手(豌豆荚,91助手)连接手机,自动安装驱动

offline: 设备离线,重新拔插USB

常见问题:

提示adb版本不一致

解决办法:将安装的adb.exe文件复制到模拟器文件夹中,另名为nox_adb.exe(模拟器本身自带一个adb工具,手动覆盖)

ADB工具使用

 ★日志操作命令

adb logcat:抓取日志

logcat可以查看手机4个缓冲区日志,包括radio、event、main、system

radio 存放通信日志,比如通话短信等

event表示手机按键输出等事件日志

main指的是手机应用软件的日志,属于应用层日志

system是系统组日志

默认输出main、system日志

日志是实时更新的

adb logcat:查看设备的日志信息

adb logcat > D:/logs/logcat.txt:导出日志

日志格式

1.写下日志的时间

2.日志级别  Verbose<Debug<Info<Warning<Error

V: Verbose指冗长啰嗦,通常表达开发调试过程中的一些详细信息

D:Debug调试。显示开发调试的信息,正式版本需关闭

I:Info表达一些提示性信息

W:Warning警告

E:Error出现错误,需要重点关注

3.标签tag:标明日志发起者,方便日志的过滤筛选

4.PID进程ID:比如6942

5.正文:本日志的整体内容

adb bugreport >d:\bugreport.log 输出日志保存在本地

bugreport日志包括logcat日志,提示也包含功耗、CPU等日志信息。支持Android7.0以上版本

  • 非实时更新,主要抓取往前十分钟的信息

★input操作命令

adb shell input:

  • text 输入文本
  • keyevent 输入事件
  • tap 点击
  • swipe 滑动

前提:开发者选项中开启指针位置

adb shell input tap x y

常用命令

adb devices ---- 显示当前已经连接的设备

adb help ---- adb帮助

adb kill-server ---- 关闭adb连接服务

adb start-server ---- 开启adb连接服务    重启连接服务后需重新连接模拟器或手机

adb shell ---- 进入安卓内核linux系统终端

权限指令

adb root ---- 获取安卓管理员权限

adb remount ---- 获取系统分区的可写权限

获取包名的命令

adb shell pm list ppackages -s  列出系统应用

adb shell pm list ppackages -3  列出第三方的应用

当有多个设备时连接时

如果有多个设备/模拟器连接,则需要为命令指定目标设备,下表是指定目标设备的命令选项:

【adb -s 设备号 命令】  指定相应设备序列号的设备/模拟器为命令目标

【adb -d 命令】  指定当前唯一通过 USB 连接的 Android 设备为命令目标

【adb -e 命令】   指定当前唯一运行的模拟器为命令目标

安装/卸载应用

adb install [-l] [-r] [-t] [-s] [-d] [-g] <apk-file文件路径>

参数   含义
-l  将应用安装到保护目录 /mnt/asec
-r    允许覆盖安装
-t    允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的应用
-s    将应用安装到 sdcard
-d 允许降级覆盖安装
-g 授予所有运行时权限

adb uninstall  -k 包名 卸载一个应用程序

-k 参数可选,表示卸载应用但保留数据和缓存目录
  

上传/下载文件

上传:adb push 本地文件路径 手机路径  adb push D:\网页下载\1.txt system/

下载:adb pull 手机文件路径 本地路径    adb pull system/1.txt D:\网页下载



ADB常用命令整理(全网最全)-腾讯云开发者社区-腾讯云

    相关文章:

    Android ADB工具使用教程(从安装到使用)

    目录 ADB工具介绍 什么是ADB&#xff1f; 组成 主要功能 ADB工具安装与连接设备 WIFI连接&#xff0c;提示计算机积极拒绝10061 WIFI成功连接后&#xff0c;拔掉数据线显示offline 提示adb版本不一致​编辑 ADB工具使用 ★日志操作命令 adb logcat:抓取日志 日志格式…...

    开个坑记录一下树莓派4B部署yolo的一些问题

    问题一&#xff1a;操作系统与内核信息 这个问题困扰了我一天半&#xff0c;下载的时候显示的信息是aar64的系统&#xff0c;但是这并无意味着一个问题&#xff0c;那就是你的操作系统是64位的。需要采用如下的指令查看&#xff1a; getconf LONG_BIT 我在树莓派得出来的操作…...

    基于SSM框架的线上甜品销售系统(源码+lw+部署文档+讲解),源码可白嫖!

    摘要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管理就很关键。因此网上销售信息的…...

    基于 FPGA的HLS技术与应用

    1、hls简介 HLS &#xff08; high level synthesis &#xff09;即高层次综合&#xff0c;主要是利用高级编程语言实现算法。 2、循环优化 约束语法&#xff1a; #pragma HLS unroll #pragma HLS PIPELINE II1 绝大多数循环都以串行的方式执行&#xff0c;这种执行方…...

    Redis原理:Monitor 实现

    在调用 Redis 的 MONITOR 命令后&#xff0c;可以在对应的客户端上实时查看服务器的执行情况。今天&#xff0c;我们将从源码的角度来深入探讨 MONITOR 机制是如何处理这些请求以及如何将数据反馈给用户的。 MONITOR 命令的实现 Redis 中所有命令的具体实现细节都可以在其源代…...

    计算机工具基础(七)——Git

    Git 本系列博客为《Missing in CS Class(2020)》课程笔记 Git是一种分布式版本控制系统&#xff0c;被其跟踪的文件可被查询精细到行的修改记录、回退版本、建立分支等 模型 一般流程&#xff1a;工作区 → \to →暂存区 → \to →仓库(本地 → \to →远端) 工作区&#xff1…...

    鸿蒙开发:父组件如何调用子组件中的方法?

    前言 本文基于Api13 很多的场景下&#xff0c;父组件需要触发子组件中的某个方法&#xff0c;来实现一些特定的逻辑&#xff0c;但是ArkUI是声明式UI&#xff0c;不能直接调用子组件中的方法&#xff0c;那么怎么去实现这个功能呢&#xff1f; 举一个很常见的案例&#xff0c;通…...

    23种设计模式-创建型模式-工厂方法

    文章目录 简介场景问题1. 直接依赖具体实现2. 违反开闭原则3. 条件分支泛滥4. 代码重复风险 解决根本问题完整类图完整代码说明核心优势代码优化静态配置表动态策略 总结 简介 工厂方法是一种创建型设计模式&#xff0c;它提供了在父类中创建对象的接口&#xff0c;但允许子类…...

    142. 环形链表 II——考察数学,难!

    142. 环形链表 IIhttps://leetcode.cn/problems/linked-list-cycle-ii/ 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,…...

    C++常见问题与思考

    TLS&#xff08;线程本地存储&#xff09;原理 线程本地存储&#xff08;Thread Local Storage&#xff0c;TLS&#xff09;是一种机制&#xff0c;它允许每个线程拥有自己独立的变量实例&#xff0c;这些变量的生命周期与线程相同。也就是说&#xff0c;不同线程对同一个 TLS…...

    从零开始:使用Luatools工具高效烧录Air780EPM核心板项目的完整指南

    本文将深入讲解如何使用Luatools工具烧录一个具体的项目到Air780EPM开发板中。如何使用官方推荐的Luatools工具&#xff08;一款跨平台、命令行驱动的烧录利器&#xff09;&#xff0c;通过“环境配置→硬件连接→参数设置→一键烧录”四大步骤&#xff0c;帮助用户实现Air780E…...

    关于c++的几个简单算法

    一. 动态规划&#xff08;Dynamic Programming&#xff09; 难点&#xff1a;状态转移方程的构建和初始化条件的设计 典型问题&#xff1a;01背包问题 分析&#xff1a; 状态定义 dp[i][j] 表示前i个物品放入容量为j的背包的最大价值。状态转移需要判断是否选择当前物品。 #i…...

    WPF MergedDictionaries详解

    在 WPF 中&#xff0c;ResourceDictionary.MergedDictionaries 是一个非常重要的特性&#xff0c;用于将多个资源字典&#xff08;ResourceDictionary&#xff09;合并到一个主资源字典中。这种机制使得资源的管理和复用变得更加灵活和高效。 1. MergedDictionaries 的作用 Me…...

    一套云HIS系统源码,系统融合HIS与EMR,基于云端部署,采用B/S架构与SaaS模式

    云HIS系统完全基于云端部署&#xff0c;采用B/S架构&#xff0c;并通过软件即服务&#xff08;SaaS&#xff09;的形式面向二级及以下医院可快速交付、便捷运维、云化的医院核心业务平台产品。融合医院HIS和EMR两大主营系统&#xff0c;构建涵盖患者、费用、医嘱、电子病历等核…...

    DisplayPort(DP)详解

    一、DisplayPort的定义与核心特性 DisplayPort&#xff08;DP&#xff09; 是由 视频电子标准协会&#xff08;VESA&#xff09; 制定的 高性能数字音视频接口&#xff0c;专为高分辨率显示器和多屏应用设计。其核心特性包括&#xff1a; 高带宽&#xff1a;DisplayPort 2.0支…...

    C++数据结构(搜索二叉树)

    1.二叉树搜索的概念 二叉搜索数也成为二叉排序树&#xff0c;它或者是一颗空树&#xff0c;或者是满足以下性质的树&#xff1a; 1.若他的左子树不为空&#xff0c;则左子树上的所有节点的值都小于等于根节点的值。 2.若他的右子树不为空&#xff0c;则右子树上的所有节点的值…...

    OpenCV图像拼接(6)图像拼接模块的用于创建权重图函数createWeightMap()

    操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::detail::createWeightMap 是 OpenCV 库中用于图像拼接模块的一个函数&#xff0c;主要用于创建权重图。这个权重图在图像拼接过程中扮演着重…...

    Micropython RPI-PICO 随记-双PICO串口传数据

    开发环境 MCU&#xff1a;双 Pico1&#xff08;无wifi版&#xff09;&#xff0c;串口相连&#xff0c;需要共地使用固件&#xff1a;自编译版本开发环境&#xff1a;MacBook Pro Sonoma 14.5开发工具&#xff1a;Thonny 4.1.6开发语言&#xff1a;MicroPython 1.24.0 上位机…...

    炫酷的HTML5粒子动画特效实现详解

    炫酷的HTML5粒子动画特效实现详解 这里写目录标题 炫酷的HTML5粒子动画特效实现详解项目介绍技术栈项目架构1. HTML结构2. 样式设计 核心实现1. 粒子类设计2. 动画效果实现星空效果烟花效果雨滴效果 3. 鼠标交互 性能优化效果展示总结 项目介绍 本文将详细介绍如何使用HTML5 C…...

    YoloV8训练和平精英人物检测模型

    概述 和平精英人物检测&#xff0c;可以识别游戏中所有人物角色&#xff0c;并通过绘制框将人物选中&#xff0c;训练的模型仅仅具有识别功能&#xff0c;可以识别游戏中的视频、图片等文件&#xff0c;搭配Autox.js可以推理&#xff0c;实现实时绘制&#xff0c;但是对手机性…...

    BC93 公务员面试

    &#x1f680;个人主页&#xff1a;BabyZZの秘密日记 &#x1f4d6;收入专栏&#xff1a;C语言练习题分享 &#x1f30d;文章目入 #include <stdio.h> int main() {int score 0, max 0, min 100, sum 0, count 0; while (scanf("%d", &score) ! EOF){…...

    3.0 Disruptor的使用介绍(一)

    Disruptor: 其官网定义为&#xff1a;“A High Performance Inter-Thread Messaging Library”&#xff0c;即&#xff1a;线程间的高性能消息框架&#xff0c;与Labview的生产者、消费者模型很相似。 其组成部分比较多&#xff0c;先介绍几个常用的概念&#xff1a; …...

    基础实验2-2.1 整数的分类处理

    基础实验2-2.1 整数的分类处理 - 浙大版《数据结构学习与实验指导&#xff08;第2版&#xff09;》题目集 (pintia.cn) 给定 N 个正整数&#xff0c;要求你从中得到下列三种计算结果&#xff1a; A1 能被 3 整除的最大整数A2 存在整数 K 使之可以表示为 3K1 的整数的个数A3…...

    [深度学习]图像分类项目-食物分类

    图像分类项目-食物分类(监督学习和半监督学习) 文章目录 图像分类项目-食物分类(监督学习和半监督学习)项目介绍数据处理设定随机种子读取文件内容图像增广定义Dataset类 模型定义迁移学习 定义超参Adam和AdamW 训练过程半监督学习定义Dataset类模型定义定义超参训练过程 项目介…...

    有价值的面试问题

    迅雷一面 都是c和网络问题 了解epoll吗&#xff1f;解释下水平触发和边缘触发&#xff0c;医院的叫号系统应该算哪一种 c类a有成员b&#xff0c;成员b调用了a的函数&#xff0c;但是a不小心把b的成员删除了&#xff0c;会发生什么&#xff0c;怎么解决 c类a有一个static的函数…...

    禁用ONLY_FULL_GROUP_BY模式

    这是由于MySQL启用了ONLY_FULL_GROUP_BY模式导致的。以下是禁用该模式的三种方法&#xff0c;结合你的需求选择最合适的方案&#xff1a; 一、临时禁用&#xff08;重启后失效&#xff09; 1. 当前会话禁用 直接在SQL客户端执行以下命令&#xff0c;仅对当前数据库连接有效&…...

    SAP 获取RFC的WSDL文件

    主要是CPI要用到WSDL文件做mapping&#xff0c;客户的SAP服务器不一定直接可在浏览器访问http或者https的地址&#xff0c;所以在SAP里面开发程序内部调用地址获取WSDL文件 *&---------------------------------------------------------------------* *& Report YXX_…...

    SQLite优化实践

    1. 启用写入批处理 使用事务将多条插入操作包装在一起&#xff0c;这样可以减少磁盘I/O和日志的写入。 BEGIN TRANSACTION; -- 执行多个INSERT语句 COMMIT;通过将多个插入操作包装在一个事务中&#xff0c;可以显著减少每次写入数据库时的磁盘I/O操作。 2. 使用更大的页大小…...

    56.fm解调最简单的方法过零检测,如何确定计时器的更新速率

    &#xff0c;...

    java8循环解压zip文件---实现Excel文件数据追加

    java8循环追加Excel数据 实际遇到问题&#xff1a;定期获取zip文件&#xff0c;zip文件内有几个固定模板的Excel文件&#xff0c;有的Excel文件可能还包含多个sheet。 有段时间一次性获取到好几个zip包&#xff0c;需要将这些包都解压&#xff0c;并且按照不同的文件名、sheet进…...