ADB常用命令整理(全网最全)
调试Android程序时,我们经常需要使用adb shell命令。adb是Android Debug Bridge的缩写,它充当调试桥梁的作用,就像一条连接开发机和设备之间的桥梁。
通过adb,我们可以在Eclipse中使用DDMS来调试Android程序,简单来说就是一种调试工具。它通过监听特定端口(如TCP 5554)来实现开发机和模拟器/设备之间的通讯。当我们运行Eclipse时,默认情况下会启动adb进程。
adb是一个C/S模式的程序,由三个部分组成:客户端、服务器和守护进程。其中客户端和服务器运行在开发机上,守护进程运行在模拟器或设备上。
通常,adb可执行文件位于/platform-tools/目录下,这是Android SDK的安装目录。为了方便使用,我们可以将adb路径添加到系统环境变量path中,例如:D:\sdk\platform-tools; 这样每次打开命令行工具时都可以直接使用adb命令,而不必进入adb目录。
以下是一些常用的adb命令,可以帮助我们进行调试和测试:
adb devices
:查看当前连接的设备列表adb install [apk文件路径]
:安装一个应用程序adb uninstall [包名]
:卸载一个应用程序adb logcat
:查看设备的日志信息adb shell am start [包名/类名]
:启动一个应用程序adb shell input text [文本]
:模拟输入文本到设备adb shell screencap [文件路径]
:截屏并保存为图片文件adb pull [设备文件路径] [本地文件路径]
:从设备上复制文件到本地计算机adb push [本地文件路径] [设备文件路径]
:将本地文件复制到设备上
更详细的如下表~
命令 | 描述 |
---|---|
android list targets | 显示系统中全部Android平台 |
android list avd | 显示系统中全部AVD(模拟器) |
android create avd –name 名称 –target 平台编号 | 创建AVD(模拟器) |
emulator -avd 名称 -sdcard ~/名称.img (-skin 1280×800) | 启动模拟器 |
android delete avd –name 名称 | 删除AVD(模拟器) |
mksdcard 1024M ~/名称.img | 创建SDCard |
ddms | 启动DDMS |
adb devices | 显示当前运行的全部模拟器 |
adb -s 模拟器编号 命令 | 对某一模拟器执行命令 |
adb install -r 应用程序.apk | 安装应用程序 |
adb pull <remote> <local> | 获取模拟器中的文件 |
adb push <local> <remote> | 向模拟器中写文件 |
adb shell | 进入模拟器的shell模式 |
android | 启动SDK,文档,实例下载管理器 |
adb uninstall apk包的主包名 | 卸载apk包 |
adb help | 查看adb命令帮助信息 |
adb logcat -s 标签名 | 在命令行中查看LOG信息 |
adb remount | 删除系统应用 |
adb shell cd data/app rm apk包 exit | 缷载apk包 |
adb remount | 删除系统应用,重新挂载系统分区,使系统分区重新可写 |
adb shell cd system/app rm *.apk | 删除系统应用 |
adb root | 获取管理员权限 |
adb shell am start -n 包名/包名+类名 (-n 类名,-a action,-d date,-m MIME-TYPE, -c category,-e 扩展数据,等) | 启动Activity |
adb forward tcp:5555 tcp:8000 | 发布端口 |
adb push <source> <destination> | 复制文件到设备或模拟器上 |
adb pull <source> <destination> | 从设备或模拟器上复制文件 |
adb devices | 搜索模拟器/设备的实例 |
adb bugreport | 查看bug报告 |
adb shell logcat -b radio | 记录无线通讯日志 |
adb get-product | 获取设备的ID |
adb get-serialno | 获取设备的序列号 |
adb shell sqlite3 | 访问数据库SQLite3 |
adb shell cd system/sd/data ls | 进入系统内指定文件夹并列出内容 |
adb shell rm -r xxx | 删除名为xxx的文件夹及其内部所有文件 |
adb shell rm xxx | 删除文件xxx |
adb shell rmdir xxx | 删除文件夹xxx |
一、常用简单的adb命令:
命令 | 描述 |
---|---|
adb devices | 获取设备列表和设备的状态 |
adb get-state | 获取设备的状态(device,offline,unknown) |
adb kill-server adb start-server | 结束,启动adb服务 |
adb install -r | 覆盖安装应用(apk) |
adb uninstall | 卸载应用(应用包名) |
adb pull | 将设备上的文件复制到电脑上 |
adb push | 将电脑上的文件复制到设备上 |
adb reboot | 重启设备 |
adb connect | 远程连接设备 |
adb disconnect | 断开设备连接 |
二、adb shell pm基本的命令:
命令 | 描述 |
---|---|
adb shell pm list package -s | 列出系统应用 |
adb shell pm list package -3 | 列出第三方的应用 |
adb shell pm list package -i | 列出来源 |
adb shell pm list package -f | 列出包名和路径 |
adb shell pm path packagename | 列出应用apk的位置 |
adb shell pm dump packagename | 列出应用相关的信息 |
adb shell pm clear packagename | 清除应用的缓存数据 |
adb shell pm install /data/local/tmp/test.apk | 安装应用 |
adb shell pm install -r /data/local/tmp/test.apk | 重新安装应用 |
adb shell pm uninstall -k packagename | 卸载应用(保留缓存数据) |
adb shell pm install -d apk | 允许降级安装 |
三、adb shell am基本的命令:
命令 | 描述 |
---|---|
adb shell am start -n activityname | 启动一个Activity |
adb shell am start -W activityname | 等待页面启动完成 |
adb shell am start -S activityname | 先停止应用再启动 |
am force-stop packagename | 结束应用 |
三、adb shell dumpsys基本的命令:
命令 | 描述 |
---|---|
adb shell dumpsys cpuinfo | 监控CPU信息 |
adb shell dumpsys meminfo | 监控内存信息 |
adb shell dumpsys power | 监控电源信息 |
adb shell dumpsys battery | 监控电池信息 |
adb shell dumpsys wifi | 监控WiFi信息 |
adb shell dumpsys notification | 监控通知信息 |
adb shell dumpsys activity | 获取页面信息 |
四、关闭某项进程,以monkey为例:
命令 | 描述 |
---|---|
ps | grep monkey | 查看monkey进程的pid |
kill pid | 杀死monkey进程 |
五、最近12小时的资源情况:
命令 | 描述 |
---|---|
adb shell dumpsys procstats --hours 12 | 查看最近12小时的资源情况 |
六、录制屏幕命令:
命令 | 描述 |
---|---|
adb shell screenrecord /sdcard/demo.mp4 | 录制屏幕视频 |
--time-limit | 限制录制时间 |
--size | 指定视频分辨率大小 |
--bit-rate | 指定视频的比特率 |
--verbose | 在命令行显示日志 |
七、截图命令:
命令 | 描述 |
---|---|
adb shell screencap -p /sdcard/screen.png | 截取屏幕截图并保存到指定位置 |
八、input命令:
adb shell input:
text
输入文本keyevent
输入事件tap
点击swipe
滑动
九、关于获取当前页面的信息:
命令 | 描述 |
---|---|
adb shell dumpsys activity top | findstr ACTIVITY | 获取当前界面的Activity |
adb shell dumpsys activity | findstr mFocusedActivity | 获取当前页面的activity |
十、生成当前页面的xml文本:
命令 | 描述 |
---|---|
adb shell uiautomator dump [file] | 获取当前页面的XML信息 |
示例XML信息中的属性说明:
text
:控件中显示的文本内容class
:控件的类型package
:包名content-desc
:说明checkable
:是否允许checkchecked
:check状态clickable
:是否允许clickenabled
:控件状态focusable
:是否允许获取焦点focused
:是否获取到焦点scrollable
:是否允许滚动long-clickable
:是否允许长按password
:是否是密码控件selected
:select状态bounds
:控件绘制的长宽及位置四个数据,分成两组,分别是左上坐标和右下坐标
十一、打印页面的log信息:
命令 | 描述 |
---|---|
logcat -s ActivityManager | 打印页面的log信息 |
十二、系统操作指令:
命令 | 描述 |
---|---|
adb shell getprop ro.product.model | 获取设备型号 |
adb shell getprop ro.build.version.release | 获取设备Android系统版本 |
adb get-serialno | 获取设备的序列号(设备号) |
adb shell wm size | 获取设备屏幕分辨率 |
adb shell dumpsys activity | find "mFocusedActivity" | 查看前台应用包名,适用于Android 7.0以下,必须先启动app |
adb shell dumpsys activity | find "mResumedActivity" | 查看前台应用包名,适用于Android 8.0以上,必须先启动app |
九、取日志:
命令 | 描述 |
---|---|
adb logcat -v time | 打印详细的日志信息 |
adb logcat -v time > D:\log.txt | 把日志输出到电脑上的文本文件中 |
adb logcat -c | 清除之前的日志信息 |
十、日志过滤:
-
使用管道进程来查看日志:
adb logcat \| grep MyApp
:过滤包含"MyApp"的日志adb logcat \| grep -i myapp
:忽略大小写,过滤包含"myapp"的日志
-
只抓取某个应用的命令:
adb logcat \| findstr app进程号
:只显示特定应用的日志(在Windows上使用findstr
)
-
日志级别过滤:
- 默认级别为V,输出所有日志最低级别。
- 日志级别包括:D(Debug)、I(Info)、W(Warning)、E(Error)、F(Fatal)和S(Silent,最高级别,不输出任何日志)。
示例:如果想要查看手机上级别为错误的日志,可以使用以下命令:
adb logcat *:E
(不区分大小写)
相关文章:
ADB常用命令整理(全网最全)
调试Android程序时,我们经常需要使用adb shell命令。adb是Android Debug Bridge的缩写,它充当调试桥梁的作用,就像一条连接开发机和设备之间的桥梁。 通过adb,我们可以在Eclipse中使用DDMS来调试Android程序,简单来说…...

BBS项目day02、注册、登录(登录之随机验证码)、退出登录、密码加密加盐、首页(导航条、模态框,修改密码)
一、注册 1.注册之前端页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>注册页面</title><!--动态引入文件-->{% load static %}<script src"{% static js/jquery.min.js %…...

HTML5+CSS3自用笔记
助解:解析编译,加载运行 浏览器的渲染过程 JS加载执行 普通js/sync:阻塞 DOM加载解析 async:下载完就执行,无依赖 <script type"text/javascript" src"x.min.js" async"async"&g…...
无则插入有则更新(PostgreSQL,MySQL,Oracle、SqlServer)
无则插入有则更新 PostgreSQL 无则插入有则更新 conflict(带有唯一性约束的字段),根据此字段判断是更新还是插入 INSERT INTO student(id,name,sex) VALUES(1, 小明, 男) ON conflict (id) DO UPDATE SET id 1,name 小明,sex 男;无则插入有则不做操作 INSERT I…...
常见的 JavaScript 框架比较
以下是10种常见的JavaScript框架的比较: React:是由Facebook开发和维护的开源JavaScript库,用于构建用户界面。它允许你使用组件来构建复杂的UI,并专注于每个组件的内部逻辑,而不必担心管理整个应用程序的状态。WebBu…...
基于R语言APSIM模型进阶应用与参数优化、批量模拟
随着数字农业和智慧农业的发展,基于过程的农业生产系统模型在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农田固碳和温室气体排放等领域扮演着越来越重要的作用。APSIM (Agricultural Production Systems sIMulator)模型是世界知名的作物生…...
AMD卡启动Stable Diffusion AI绘画的方法
WindowsAMD安装法 1.安装python 3.10.6,在python官网上下载安装程序,***重要*** 在安装的第一个窗口下方勾选“将python添加到path”。 2.安装git 3.WindowsAMD使用AUTOMATIC1111的directml这一个fork,在这个页面的第一段:https:/…...
Ubuntu系统kubeadm安装K8S_v1.25.x容器使用docker(K8S_v1.24版本以后依然使用docker容器管理)
安装所需要的全部文档请点击这里下载 系统是: root@k8s-master:~# cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=22.04 DISTRIB_CODENAME=jammy DISTRIB_DESCRIPTION=“Ubuntu 22.04.3 LTS” root@k8s-master:~# uname -a Linux k8s-master 5.15.0-76-generic #8…...

【MaxKey对接一】对接gitlab的oauth登录
MaxKey的Oauth过程 引导进入 GET http://{{maxKey_host}}/sign/authz/oauth/v20/authorize?client_idYOUR_CLIENT_ID&response_typecode&redirect_uriYOUR_REGISTERED_REDIRECT_URI 登录后回调地址 YOUR_REGISTERED_REDIRECT_URI/?code{{code}} 换取Access Token GET…...
【Buildroot】构建根文件系统等
文章目录 0. 前言10. 环境软件硬件 20. Buildroot 环境搭建简述下载环境搭建toolchain下载、安装构建镜像(仅供参考) 80. 问题点1. 编译、清除时提示权限不足 0. 前言 对嵌入式linux开发和linux开发环境不熟悉的同志们就不要往下看了 对嵌入式linux开发和…...

利用css动画和定时器setTimeout,实现上传图片进度条
思路 利用css动画和js定时器(setTimeout),实现简单的进度条。 优势 不使用 setInterval,减少js代码量,业务代码更加简洁。 示意图 上传中上传成功上传失败 代码 html <!-- img-wrap有两种状态:u…...

关于VScode插件,你不得不知道的几件事
一、前言 VSCode是微软家一个非常轻量化的编辑器,体量虽轻,但是却有异常强大的功能。原因在于VSCode许多强大功能都是基于插件实现的,IDE只提供一个最基本的框架和基本功能,我们需要使用插件来丰富和扩展它的功能。 由于插件的重…...
MySQL 奇遇记三则
公司新项目,要使用 MySQL 数据库。 第一次使用 MySQL,有点小激动。听说过 N 多次,这一次终于用上了。 为什么是奇遇记? 因为在网上几乎搜索不到别人遇到和我一样的问题。 系统 :WINDOWS10X64 中文版 数据库…...

UI设计师的主要职责说明(合集)
UI设计师的主要职责说明1 职责: 1、负责公司移动端、PC端产品相关的交互、UI等设计 2、负责公司宣传册、海报、运营物料、banner等设计 3、负责公司品牌相关的视觉设计 3、制定相关设计规范,提高产品的可用性、不断优化产品体验; 4、与PM、运营紧密…...

SOLIDWORKS 2023中装配体配合的正确使用方法 硕迪科技
-SOLIDWORKS 装配体打开时是由不同的阶段和性能检查组成的。如果在创建装配体时未应用基本的配合方法,问题会随着时间的推移而累积,并且在使用时会出现明显的速度减慢。 如果您的装配体运行速度很慢,则很可能是在创建配合时出现了不良操作的症…...
代码随想录——96.不同的二叉搜索树
class Solution {public int numTrees(int n) {int[] dp new int[n1];dp[0] 1;dp[1] 1;for(int i 2;i < n ; i){for(int j 1; j < i;j){dp[i] dp[j-1]*dp[i-j];}}return dp[n];} }...

智安网络|零信任安全框架:保障数字化时代网络安全的最佳实践
随着数字化时代的快速发展,网络安全问题变得越来越突出。传统的安全防御模式已经不再适用于现代复杂的网络环境中。为了应对日益增长的网络威胁,零信任安全模式应运而生。 一、什么是零信任? 零信任是一种安全框架和哲学,它基于…...

Rancher管理K8S
1 介绍 Rancher是一个开源的企业级多集群Kubernetes管理平台,实现了Kubernetes集群在混合云本地数据中心的集中部署与管理,以确保集群的安全性,加速企业数字化转型。Rancher 1.0版本在2016年就已发布,时至今日,Ranche…...
【Linux】一切皆文件
Linux 下一切皆为文件, 文件包括头文件,库文件(静态库和共享库),可执行文件,目录文件,软链接文件,配置文件等。 每个文件都依据权限分为用户、用户组和其他人三个身份,…...
C++学习笔记4
什么是指针? 指针是存储内存地址的变量。就像int变量用于存储整数值一样,指针变量用于存储内存地址。指针是一种指向内存单元的特殊变量。 内存单元地址通常使用的是16进制表示(0~9和A~F)来表示数字。显示…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...