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

安卓调试桥ADB

Logcat 命令行工具  |  Android Studio  |  Android Developers

什么是ADB

ADB 全称为 Android Debug Bridge ,是 Android SDK (安卓的开发工具)中的一个工具,起到调试桥的作用,是一个 客户端 - 服务器端程序 。其中 客户端 是用来操作的电脑, 服务端 Android 设备。
可以直接操作管理 Android 模拟器 或者 真实的 Android 设备(真机)
包括以下三个组件:
客户端 :用于发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端( cmd )调 用客户端。
守护程序 (adbd) :用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。 - 手机上
服务器 :用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行。

安装adb

ADB,即Android Debug Bridge,是一个Android调试工具。以下是如何安装ADB的步骤:

下载ADB安装包

  • 你可以通过Android SDK安装ADB。ADB包含在Android SDK平台工具软件包中,安装完安卓SDK后,ADB会安装在“android_sdk/platform-tools/”目录下。

你也可以直接下载ADB安装包。具体的下载地址会根据你的操作系统而有所不同。例如,Windows版本的下载地址可能是https://dl.google.com/android/repository/platform-tools-latest-windows.zip,而Mac和Linux版本则会有相应的下载链接

2、解压安装包:下载完成后,你需要解压这个安装包。解压后,你会看到adb工具以及其他一些相关的文件。

3、配置环境变量:为了使ADB工具能在命令行中使用,你需要将其路径添加到系统的环境变量中。

打开电脑的设置,选择“高级系统设置”,然后点击“环境变量设置”。

在系统变量中找到并选择“Path”变量,然后点击“编辑”。

在“变量值”字段中,添加ADB工具的路径。例如,如果你的ADB工具解压在“C:\adb”目录下,那么你就需要在这个字段中添加“;C:\adb”

4、验证安装:配置完环境变量后,你可以打开命令提示符(Windows)或终端(Mac/Linux),输入adb version来查看ADB的版本,以确认ADB是否已成功安装并配置。

连接模拟器

安装夜神模拟器,需要使用安装的adb.exe替换模拟器中的nox_adb.exe。

查看adb版本

ADB常用命令

开启模拟器,输入如下命令,显示连接的模拟器设备。

查看当前连接设备

adb devices

查看设备状态

device正常连接 offline 离线 unknown没有连接设备

adb root:获取Android管理员(root用户)的权限

adb shell:登录设备shell,这个命令将登录设备的shell(内核),登录shell后可以使用cd、ls、rm等

linux命令

查看应用包名

• adb shell pm list packages 显示所有包名

• adb shell pm list packages –s 显示系统应用包名

• adb shell pm list packages -3 显示第三方应用包名

• ls /data/data 显示所有包名

安装应用

• adb install <apk文件路径>:将本地apk软件安装到设备上,如果已经存在则无法安装

• adb install -r <apk电脑上的路径> :将本地apk软件安装到设备上,入如果已经存在则覆盖

卸载应用

• adb uninstall <apk包名>:卸载应用

• adb uninstall -k <apk包名>:将设备上apk卸载,但是保留配置和缓存文件

复制文件

adb push <本地路径> <远程路径>:把本地的文件或文件夹复制到设备(手机)

adb push使用中文路径名导入后找不到,

重新push一个英文路径名即可

adb pull <远程路径> <本地路径> :把设备(手机)的文件或文件夹复制到本地(最好创建

一个目录存放)

日志操作

抓取日志

adb logcat:抓取日志,ctrl+c结束

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

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

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

• main 指的是手机的应用软件的日志,是应用层日志输出;

• system是系统组日志。

• 如果不指定,则默认输出main和system的日志,

如果需要指定,则需要使用参数

ü logcat是实时日志,在你操作软件的同时,同步会输出日志信息。

1. adb logcat -b 指定缓冲区 如:adb logcat -b main 输出main的日志

2. adb logcat -v time 如:adb logcat -v time 输出的日志同步打印时间

3. adb logcat -v time -b 执行缓冲区 如:adb logcat -v time -b system

4. adb logcat –v time -b 执行缓冲区>d:\ logcat.log 输出的日志保存在本地的文件上

清除日志缓存

 adb logcat -c 清理日志

6. adb logcat *:E 日志筛选,只输出error日志

日志操作

adb bugreport:输出日志(包括logcat日志),同时也包括功耗、CPU等日志信息。只支持

Android7.0以上的版本,生成日志后会自动保存到电脑本地。

 

如果你想要将adb bugreport的输出保存到特定的文件或位置,你可以使用命令行参数来指定路径。例如,你可以使用类似adb bugreport D:\ProjectResources\logs的命令将报告保存到D盘的ProjectResources\logs目录下。

重启设备

adb reboot

当你使用这个命令时,它会向设备发送一个重启请求,然后设备会开始关闭并重新启动其操作系统。

获取序列号

adb get-serialno

查看ADB命令帮助

adb help

关闭adb服务

adb kill-server

启动adb服务

adb start-server

获得root权限

adb root

获取system文件夹读写权限

adb remount

Adb shell 

android是一种基于linux的自由及开放源代码的操作系统,adb shell命令是一个linux的shell,用来调试android系统内置的一些命令。

进入shell

adb shell进入shell,可执行ls cd exit等命令

启动activity

adb shell am start 包名

monkey测试

adb shell monkey 进行monkey测试

获取设备型号

adb shell getprop ro.product.model

获取设备android系统版本 

adb shell getprop ro.build.version.release:

获取设备屏幕分辨率 

adb shell wm size

截图

adb shell screencap -p /sdcard/mms.png:屏幕截图

adb pull /sdcard/mms.png D:\app:将截图导出到本地

查看系统信息-dumpsys

adb shell dumpsys meminfo <包名>:查看应用内存使用情况

查看当前打开的应用包名和界面 

adb shell dumpsys window windows | findstr mFocusedApp:查看当前打开的应用包名和界面

adb shell dumpsys activity | find "mFocusedActivity":查看当前打开的界面

C:\Users\>adb shell dumpsys window windows | findstr mFocusedAppmFocusedApp=AppWindowToken{a911cd token=Token{5a7db64 ActivityRecord{15a00f7 u0 net.oschina.app/.improve.home.HomeActivity t3}}}C:\Users\>adb shell dumpsys activity | find "mFocusedActivity"mFocusedActivity: ActivityRecord{15a00f7 u0 net.oschina.app/.improve.home.HomeActivity t3}

启动activity

启动activity,必须指定activity

C:\Users\>adb shell am start net.oschina.app/.improve.home.HomeActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=net.oschina.app/.improve.home.HomeActivity }

关闭应用

 adb shell am force-stop 包名

input指令

1. 模拟按键/输入-input

adb shell input keyevent <keycode>:模拟键盘操作,不同的keycode能实现不同的功能

• Android adb keyevent 键值大全:Android adb keyevent 键值大全-CSDN博客

adb shell input swipe 300 1000 300 500:模拟滑动操作,从300,1000滑动到300,500坐标

adb shell input text hello:模拟文本输入操作,要求:焦点在某文本框中

清除应用数据与缓存

adb shell pm clear 包名

关闭设备

adb shell stop

启动设备

adb shell start

相关文章:

安卓调试桥ADB

Logcat 命令行工具 | Android Studio | Android Developers 什么是ADB ADB 全称为 Android Debug Bridge &#xff0c;是 Android SDK &#xff08;安卓的开发工具&#xff09;中的一个工具&#xff0c;起到调试桥的作用&#xff0c;是一个 客户端 - 服务器端程序 。其中 …...

深入理解数据结构第一弹——二叉树(1)——堆

前言&#xff1a; 在前面我们已经学习了数据结构的基础操作&#xff1a;顺序表和链表及其相关内容&#xff0c;今天我们来学一点有些难度的知识——数据结构中的二叉树&#xff0c;今天我们先来学习二叉树中堆的知识&#xff0c;这部分内容还是非常有意思的&#xff0c;下面我们…...

面试题:JVM的垃圾回收

一、GC概念 为了让程序员更专注于代码的实现&#xff0c;而不用过多的考虑内存释放的问题&#xff0c;所以&#xff0c;在Java语言中&#xff0c;有了自动的垃圾回收机制&#xff0c;也就是我们熟悉的GC(Garbage Collection)。 有了垃圾回收机制后&#xff0c;程序员只需要关…...

Java8之接口默认方法

Java8之接口默认方法 一、介绍二、代码1、接口2、实现类3、测试代码4、效果 一、介绍 在Java8中&#xff0c;允许为接口方法提供一个默认的实现。必须用default修饰符标记这样一个方法。默认方法也可以调用其他方法 二、代码 1、接口 public interface PersonService {void…...

发挥ChatGPT潜力:高效撰写学术论文技巧

ChatGPT无限次数:点击直达 发挥ChatGPT潜力&#xff1a;高效撰写学术论文技巧 在当今信息爆炸的时代&#xff0c;如何高效撰写学术论文成为许多研究者关注的焦点。而随着人工智能技术的不断发展&#xff0c;如何利用ChatGPT这一先进的技术工具来提升论文写作效率&#xff0c;成…...

国产暴雨AI服务器X3418开启多元自主可控新篇章

在当前数字化转型的大潮中&#xff0c;算力作为新质生产力的重要动力引擎&#xff0c;对推动经济社会发展起着关键作用。尤其在人工智能领域&#xff0c;随着高性能、安全可控的AI算力需求持续攀升&#xff0c;国产化服务器的研发与应用显得尤为迫切。 作为国内专业的算力基础…...

webpack-dev-server 如何直接用IP打开

当你需要使用IP来访问服务器时&#xff0c;可能需要对 webpack-dev-server 进行相关设置&#xff1b; 当你使用PD虚拟机在Windows上调试时&#xff0c;可能会用到&#xff1b; 一、设置 host 通过webpack.config.js设置 devServer: {host: 0.0.0.0, }通过CLI设置 webpack-dev-s…...

Web框架开发-BBS项目预备知识

一、简介 博客系统(cnblog) https://www.cnblogs.com/ 1.django ORM (object relation mapping 对象关系映射) 表 = 类 对象 = 记录跨表查询 分组查询 annotate() 聚合查询 aggregate(*args, **kwargs) 2.bootstrap3.Ajax (jquery javascript) --- javascript 去写…...

力扣208---实现Trie(前缀树)

题目描述&#xff1a; Trie&#xff08;发音类似 "try"&#xff09;或者说 前缀树 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&#xff0c;例如自动补完和拼写检查。 请你实现 Trie 类&#xff1a; …...

书生·浦语大模型开源体系(一)论文精读笔记

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…...

基于单片机模糊算法温度控制系统设计

**单片机设计介绍&#xff0c; 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机模糊算法温度控制系统设计是一个综合性的项目&#xff0c;结合了单片机技术、传感器技术、模糊控制算法等多个方面。以下是对该设计的概要…...

GESP Python编程四级认证真题 2024年3月

Python 四级 2024 年 03 月 1 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 小杨的父母最近刚刚给他买了一块华为手表&#xff0c;他说手表上跑的是鸿蒙&#xff0c;这个鸿蒙是&#xff1f;&#xff08; &#xff09; A. 小程序 B. 计时器 C. 操作系统…...

Collection与数据结构 顺序表与ArrayList

1. 线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列… 线性表在逻辑上是线性结构&#xff0c;也就说是连续的一条直线。但是在…...

pytorch | torchvision.transforms.CenterCrop

torchvision.transforms.CenterCrop&#xff1e;从图像中心裁剪图片 transforms.CenterCrop torchvision.transforms.CenterCrop(size) 功能&#xff1a;从图像中心裁剪图片 size: 所需裁剪的图片尺寸 transforms.CenterCrop(196)的效果如下&#xff1a; &#xff08;也可…...

在Debian 11上安装GCC

GCC&#xff08;GNU Compiler Collection&#xff09;是一个功能强大的工具集合&#xff0c;可用于将不同编程语言的源代码编译成可执行文件或库。它支持多种编程语言&#xff0c;包括C、C、Java、Objective-C、Go、Fortran、Ada等。在Debian 11上安装GCC非常简单&#xff0c;以…...

kafka部署之简单密钥

一、说明 centos7.9kafka_2.13-2.7.0.tgzapache-zookeeper-3.8.0-bin.tar.gz官方文档&#xff1a;Apache Kafka 二、kafka配置 2.1、server.properties server.properties修改或增加如下配置 listenersSASL_PLAINTEXT://你的主机ip:9092 super.usersUser:admin authorizer…...

大模型重塑电商,淘宝、百度、京东讲出新故事

配图来自Canva可画 随着AI技术日渐成熟&#xff0c;大模型在各个领域的应用也越来越深入&#xff0c;国内互联网行业也随之进入了大模型竞赛的后半场&#xff0c;开始从“百模大战”转向了实际应用。大模型从通用到细分垂直领域的跨越&#xff0c;也让更多行业迎来了新的商机。…...

用静态工厂方法代替构造器

用静态工厂方法来代替构造方法。 public class Student {private String name;private int age;private String studentId;private Student(String name, int age, String studentId) {this.name name;this.age age;this.studentId studentId;}public static Student creat…...

Discourse 最多允许有几个分类级别

和 DISCUZ 不同&#xff0c;DISCUZ 可以允许分类下面还有分类&#xff0c;再继续分类这种嵌套式分类。 Discourse 最多只允许有 2 个分类。 如果你在已有的分类下再继续分类的话&#xff0c;系统会提示错误&#xff1a; 意思就是子分类不能再分子分类。 Discourse 尽量采取了…...

MySQL数据库主从复制和读写分离

MySQL数据库主从复制和读写分离 。## MySQL主从复制 MySQL主从复制的概念 MySQL主从复制是一个异步的数据复制过程&#xff0c;允许将一个MySQL服务器&#xff08;主服务器&#xff09;上的数据复制到一个或多个MySQL服务器&#xff08;从服务器&#xff09;。主从复制提供了…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

jdbc查询mysql数据库时,出现id顺序错误的情况

我在repository中的查询语句如下所示&#xff0c;即传入一个List<intager>的数据&#xff0c;返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致&#xff0c;会导致返回的id是从小到大排列的&#xff0c;但我不希望这样。 Query("SELECT NEW com…...