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)来表示数字。显示…...
x11 gtk qt gnome kde 之间的区别和联系
Linux 下的图形库介绍 一、Linux 图形领域的基础设施 1.1 X Window X Window从逻辑上分为三层:X Server、X Client和X协议。 最底层的X Server(X服务器)主要处理输入/输出信息并维护相关资源,它接受来自键盘、鼠标的操作并将…...

MAC访问MySQL下的data目录
1.查看创建表存储路径 show variables like datadir 2.快捷键comshiftG,输入查询到的地址 3.终端输入 sudo chmod -R arwx /usr/local/mysql/data 然后输入密码即可...

WebMagic - 创意前端项目集合(点击链接可在电脑上查看效果)
WebMagic - 创意前端项目集合 欢迎来到 WebMagic 仓库!这里汇集了一系列令人惊叹的前端项目,涵盖了HTML5、CSS3和JS等多项技术。无论你是前端开发者、设计师,还是对创意互动内容感兴趣的人,这个仓库都将为你带来无尽的惊喜。 每…...

黑马项目一阶段面试58题 苍穹外卖业务逻辑15题
一、员工登录流程 1.前端在登录页面登录,发送请求 2.进入拦截器,拦截器放行所有登录页面的请求 3.进入三层架构,查询用户是否存在,若存在,则加盐加密,返回JWT的token,存放在请求头部。用户不…...

C++学习笔记总结练习: 字符串类MyString的实现
MyString是一个自定义的字符串类,它封装了一些常见的字符串操作和功能。下面是一个简单的MyString类的实现示例: #include <iostream> #include <cstring>class MyString { private:char* m_data; // 用于存储字符串的字符数组int m_length…...

测试人进阶技能:单元测试报告应用指南
为什么需要单元测试 从产品角度而言,常规的功能测试、系统测试都是站在产品局部或全局功能进行测试,能够很好地与用户的需要相结合,但是缺乏了对产品研发细节(特别是代码细节的理解)。 从测试人员角度而言࿰…...

非2的幂次的ASTC纹理格式尺寸对带宽的影响
1)非2的幂次的ASTC纹理格式尺寸对带宽的影响 2)C#端如何处理xLua在执行DoString时候死循环 3)如何制定美术规范或者各个模块的指标 4)如何处理Lua的io.open出现中文路径 这是第348篇UWA技术知识分享的推送,精选了UWA…...

Java设计模式之策略模式
1. 策略模式介绍 1、根据它来避免 if-else 或 switch 分支判断,避免使用多重条件转移语句; 2、支持“开闭原则”,可以在原有基础上选择行为方法,同时允许增加行为方法。 2. 策略模式结构类 ① 接口或抽象类:自定义接口…...

IPv4分组
4.3.1 IPv4分组 IP协议定义数据传送的基本单元——IP分组及其确切的数据格式 1. IPv4分组的格式 IPv4分组由首部和数据部分(TCP、UDP段)组成,其中首部分为固定部分(20字节)和可选字段(长度可变࿰…...

Jmeter常用功能-参数化介绍
JMeter也有像LR中的参数化,本篇就来介绍下JMeter的参数化如何去实现。 参数化:录制脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统。 这个时…...