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 shellcd data/apprm apk包exit | 缷载apk包 |
adb remount | 删除系统应用,重新挂载系统分区,使系统分区重新可写 |
adb shellcd system/apprm *.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 shellcd system/sd/datals | 进入系统内指定文件夹并列出内容 |
adb shellrm -r xxx | 删除名为xxx的文件夹及其内部所有文件 |
adb shellrm xxx | 删除文件xxx |
adb shellrmdir xxx | 删除文件夹xxx |
一、常用简单的adb命令:
| 命令 | 描述 |
|---|---|
adb devices | 获取设备列表和设备的状态 |
adb get-state | 获取设备的状态(device,offline,unknown) |
adb kill-serveradb 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)来表示数字。显示…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
2.3 物理层设备
在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...
Qt的学习(一)
1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...
2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案
一、延迟敏感行业面临的DDoS攻击新挑战 2025年,金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征: AI驱动的自适应攻击:攻击流量模拟真实用户行为,差异率低至0.5%,传统规则引…...
