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

adb shell使用总结

文章目录

    • 日志记录系统概览
    • adb 使用方式
  • adb命令
    • 日志过滤
      • 按照告警等级进行过滤
      • 按照tag进行过滤
      • 根据告警等级和tag进行联合过滤
      • 屏蔽系统和其他App干扰,仅仅关注App自身日志
    • 查看“当前页面”Activity
    • 文件传输
    • 截屏和录屏
    • 安装、卸载App
    • 启动activity
    • 其他

日志记录系统概览

Android 日志记录系统是系统进程 logd 维护的一组结构化环形缓冲区。这组可用的缓冲区是固定的,并由系统定义。
最相关的缓冲区为:main(用于存储大多数应用日志)、system(用于存储源自 Android 操作系统的消息)和 crash(用于存储崩溃日志)。
每个日志条目都包含一个优先级(VERBOSE、DEBUG、INFO、WARNING、ERROR 或 FATAL)、一个标识日志来源的标记以及实际的日志消息。

adb 使用方式

  1. android 手机打开USB调试模式
  2. 将platform-tool配置到windows的path环境变量中
  3. 将手机和PC使用数据线连接

adb命令

内容不全面,这里仅仅记录经常使用到的命令。

日志过滤

使用的代码片段如下:

        findViewById(R.id.btn).setOnClickListener((view) -> {Log.d("ABC", "aaa");Log.d("aoe", "aaa");Log.i("ABC", "aaa");Log.w("ABC", "aaa");Log.e("ABC", "aaa");});
  • 打印日志
adb logcat

执行这条命令,控制台很快刷屏,可见必须要进行过滤。

  • 清空日志
adb logcat c

按照告警等级进行过滤

  • 显示警告级别以上的信息
C:\Users\biobase>adb logcat  *:W
--------- beginning of system
--------- beginning of main
...
07-26 17:44:08.607 30248 30248 W ABC     : aaa
07-26 17:44:08.607 30248 30248 E ABC     : aaa
...
  • 显示错误级别以上的信息
C:\Users\biobase>adb logcat  *:E
--------- beginning of system
--------- beginning of main
...
07-26 17:44:08.607 30248 30248 E ABC     : aaa
...
所有告警等级对应的标签:**V**  :Verbose 详尽的打印内容**D**  :Debug 默认打印内容**I**  :Info 提示打印内容**W**  :Warn 警告打印内容**E**  :Error 错误打印内容**F**  :Fatal 崩溃打印内容**S**  :Silent 不打印这些告警等级逐渐提高  eg. W时会打印E信息,E时不会打印W信息 

按照tag进行过滤

C:\Users\biobase>adb logcat -s ABC
--------- beginning of system
--------- beginning of main
07-26 17:44:08.607 30248 30248 D ABC     : aaa07-26 17:44:08.607 30248 30248 I ABC     : aaa07-26 17:44:08.607 30248 30248 W ABC     : aaa07-26 17:44:08.607 30248 30248 E ABC     : aaa

根据告警等级和tag进行联合过滤

C:\Users\biobase>adb logcat -s ABC:W
--------- beginning of system
--------- beginning of main
07-30 14:38:51.436 14709 14709 W ABC     : aaa
07-30 14:38:51.436 14709 14709 E ABC     : aaa

屏蔽系统和其他App干扰,仅仅关注App自身日志

  • 获取进程id
C:\Users\biobase>adb shell ps | findstr com.biobase.helloxx
u0_a1282     18409   607 3967996 122424 0                   0 S com.biobase.helloxxC:\Users\biobase>

其中第二列18409是进程id

  • 仅仅显示指定进程id打印的App信息
C:\Users\biobase>adb logcat -b main -v color --pid 18409
07-30 14:55:11.880 18409 18409 W Choreographer: OPTS_INPUT: First frame was drawed before optimized, so skip!
07-30 14:55:25.503 18409 18409 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@2983ba707-30 15:11:11.137 18409 18409 D ABC     : aaa
07-30 15:11:11.137 18409 18409 D aoe     : aaa
07-30 15:11:11.137 18409 18409 I ABC     : aaa
07-30 15:11:11.137 18409 18409 W ABC     : aaa
07-30 15:11:11.137 18409 18409 E ABC     : aaa
07-30 15:11:11.272 18409 18409 D ABC     : aaa
07-30 15:11:11.272 18409 18409 D aoe     : aaa
07-30 15:11:11.272 18409 18409 I ABC     : aaa

查看“当前页面”Activity

当接手别人的项目或者页面跳转关系复杂时,特别有用

C:\Users\biobase>adb shell dumpsys activity | findstr ResumedActivitymResumedActivity: ActivityRecord{c44ad9a u0 com.miui.gallery/.activity.InternalPhotoPageActivity t4130}ResumedActivity: ActivityRecord{c44ad9a u0 com.miui.gallery/.activity.InternalPhotoPageActivity t4130}

文件传输

在知道具体路径的情况下,文件传输可以非常方便.

  • 将PC文件传输到手机
adb push d:/a.txt /sdcard/
  • 将手机文件传输到PC
C:\Users\biobase\Desktop>adb pull /sdcard/bluetooth .
/sdcard/bluetooth/: 10 files pulled, 0 skipped. 25.0 MB/s (10782875 bytes in 0.411s)

截屏和录屏

  • 截屏
C:\Users\biobase\Desktop>adb shell screencap /sdcard/a.pngC:\Users\biobase\Desktop>

为了应对经常截图的需要,稍微学习了一下windows脚本。将下面的内容保存成bat文件,双击一下,手机屏幕截图就到PC上了。

@ECHO OFF
adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png "%~dp0\screen.png"
ren screen.png "%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.png"
adb shell rm /sdcard/screen.png@ECHO ON 
  • 录制视频
adb shell screenrecord /sdcard/movie.mp4

Ctrl+C停止。

要进一步控制视频的录制,请看下面的参数说明

1|grus:/ $ screenrecord --h
Usage: screenrecord [options] <filename>Android screenrecord v1.2.  Records the device's display to a .mp4 file.Options:
--size WIDTHxHEIGHTSet the video size, e.g. "1280x720".  Default is the device's maindisplay resolution (if supported), 1280x720 if not.  For best results,use a size supported by the AVC encoder.
--bit-rate RATESet the video bit rate, in bits per second.  Value may be specified asbits or megabits, e.g. '4000000' is equivalent to '4M'.  Default 20Mbps.
--bugreportAdd additional information, such as a timestamp overlay, that is helpfulin videos captured to illustrate bugs.
--time-limit TIMESet the maximum recording time, in seconds.  Default / maximum is 180.
--verboseDisplay interesting information on stdout.
--helpShow this message

安装、卸载App

  • 安装App
adb install -r AndroidTest.apk

这里添加 -r 参数可以在不卸载旧版的情况下,进行版本升级(保留App缓存内容)。

  • 卸载APP
adb uninstall com.example.androidtest

启动activity

在复杂App开发中,会比较常用。可以跳过手动点击一层层跳转,直接打开某页面。

adb shell am start com.example.androidtest/.MainActivity
or
adb shell am start com.example.androidtest/com.example.androidtest.MainActivity

这里有一个前提条件,就是页面是可启动的。应用首页或者明确设置exported=true

<intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>or<activityandroid:name=".SignatureActivity"android:exported="true"></activity>

其他

  • 清除App数据
adb shell pm clear com.example.androidtest
  • 使用默认浏览器打开一个URL
adb shell am start -a android.intent.action.VIEW -d http://www.baidu.com
  • 关闭/打开手机屏幕
adb shell input keyevent 26
  • 查看手机屏幕分辨率
C:\Users\biobase\Desktop>adb shell wm size
Physical size: 1080x2340
  • 模拟点击按键
adb shell input keyevent 4   (BACK)  返回键
adb shell input keyevent 3  (HOME)

相关文章:

adb shell使用总结

文章目录 日志记录系统概览adb 使用方式 adb命令日志过滤按照告警等级进行过滤按照tag进行过滤根据告警等级和tag进行联合过滤屏蔽系统和其他App干扰&#xff0c;仅仅关注App自身日志 查看“当前页面”Activity文件传输截屏和录屏安装、卸载App启动activity其他 日志记录系统概…...

UG NX二次开发(C++)-Tag的含义、Tag类型与其他的转换

文章目录 1、前言2、Tag号的含义3、tag_t转换为int3、TaggedObject与Tag转换3.1 TaggedObject定义3.2 TaggedObject获取Tag3.3 根据Tag获取TaggedObject4.Tag与double类型的转换1、前言 在UG NX中,每个对象对应一个tag号,C++中,其类型是tag_t,一般是5位或者6位的int数字,…...

Informer 论文学习笔记

论文&#xff1a;《Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting》 代码&#xff1a;https://github.com/zhouhaoyi/Informer2020 地址&#xff1a;https://arxiv.org/abs/2012.07436v3 特点&#xff1a; 实现时间与空间复杂度为 O ( …...

c语言位段知识详解

本篇文章带来位段相关知识详细讲解&#xff01; 如果您觉得文章不错&#xff0c;期待你的一键三连哦&#xff0c;你的鼓励是我创作的动力之源&#xff0c;让我们一起加油&#xff0c;一起奔跑&#xff0c;让我们顶峰相见&#xff01;&#xff01;&#xff01; 目录 一.什么是…...

FFmpeg aresample_swr_opts的解析

ffmpeg option的解析 aresample_swr_opts是AVFilterGraph中的option。 static const AVOption filtergraph_options[] {{ "thread_type", "Allowed thread types", OFFSET(thread_type), AV_OPT_TYPE_FLAGS,{ .i64 AVFILTER_THREAD_SLICE }, 0, INT_MA…...

CAN学习笔记3:STM32 CAN控制器介绍

STM32 CAN控制器 1 概述 STM32 CAN控制器&#xff08;bxCAN&#xff09;&#xff0c;支持CAN 2.0A 和 CAN 2.0B Active版本协议。CAN 2.0A 只能处理标准数据帧且扩展帧的内容会识别错误&#xff0c;而CAN 2.0B Active 可以处理标准数据帧和扩展数据帧。 2 bxCAN 特性 波特率…...

软工导论知识框架(二)结构化的需求分析

本章节涉及很多重要图表的制作&#xff0c;如ER图、数据流图、状态转换图、数据字典的书写等&#xff0c;对初学者来说比较生僻&#xff0c;本贴只介绍基础的轮廓&#xff0c;后面会有单独的帖子详解各图表如何绘制。 一.结构化的软件开发方法&#xff1a;结构化的分析、设计、…...

[SQL挖掘机] - 算术函数 - abs

介绍: 当谈到 SQL 中的 abs 函数时&#xff0c;它是一个用于计算数值的绝对值的函数。“abs” 代表 “absolute”&#xff08;绝对&#xff09;&#xff0c;因此 abs 函数的作用是返回一个给定数值的非负值&#xff08;即该数值的绝对值&#xff09;。 abs 函数接受一个参数&a…...

vue拼接html点击事件不生效

vue使用ts&#xff0c;拼接html&#xff0c;点击事件不生效或者报 is not defined 点击事件要用onclick 不是click let data{name:测,id:123} let conHtml <div> "名称&#xff1a;" data.name "<br>" <p class"cursor blue&quo…...

【Spring】Spring之依赖注入源码解析

1 Spring注入方式 1.1 手动注入 xml中定义Bean&#xff0c;程序员手动给某个属性赋值。 set方式注入 <bean name"userService" class"com.firechou.service.UserService"><property name"orderService" ref"orderService"…...

【微软知识】微软相关技术知识分享

微软技术领域 一、微软操作系统&#xff1a; 微软的操作系统主要是 Windows 系列&#xff0c;包括 Windows 10、Windows Server 等。了解 Windows 操作系统的基本使用、配置和故障排除是非常重要的。微软操作系统&#xff08;Microsoft System&#xff09;是美国微软开发的Wi…...

12.python设计模式【观察者模式】

内容&#xff1a;定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变的时候&#xff0c;所有依赖于它的对象得到通知并被自动更新。观者者模式又称为“发布-订阅”模式。比如天气预报&#xff0c;气象局分发气象数据。 角色&#xff1a; 抽象主题&#xf…...

重生之我要学C++第五天

这篇文章主要内容是构造函数的初始化列表以及运算符重载在顺序表中的简单应用&#xff0c;运算符重载实现自定义类型的流插入流提取。希望对大家有所帮助&#xff0c;点赞收藏评论&#xff0c;支持一下吧&#xff01; 目录 构造函数进阶理解 1.内置类型成员在参数列表中的定义 …...

复习之linux高级存储管理

一、lvm----逻辑卷管理 1.lvm定义 LVM是 Logical Volume Manager&#xff08;逻辑卷管理&#xff09;的简写&#xff0c;它是Linux环境下对磁盘分区进行管理的一种机制。 逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动&#xff0c;是在内核中块设备和物理设备…...

HuggingGPT Solving AI Tasks with ChatGPT and its Friends in Hugging Face

总述 HuggingGPT 让LLM发挥向路由器一样的作用&#xff0c;让LLM来选择调用那个专业的模型来执行任务。HuggingGPT搭建LLM和专业AI模型的桥梁。Language is a generic interface for LLMs to connect AI models 四个阶段 Task Planning&#xff1a; 将复杂的任务分解。但是这里…...

java工程重写jar包中class类覆盖问题

结论&#xff1a;直接在程序中复写jar中的类即可 原因&#xff1a;一般我java工程是运行在tomcat容器中&#xff0c;tomcat容易在加载我们工程类和jar包是的优先级为&#xff1a; 我们工程的class 先于 我们工程lib下的jar 重复的类只加载一次&#xff0c;加载我们复写后的类后…...

Mybatis基于注解与XML开发

文章目录 1 关于SpringBoot2 关于MyBatis2.1 MyBatis概述2.2 MyBatis核心思想2.3 MyBatis使用流程3 MyBatis配置SQL方式3.1 基于注解方式3.1.1 说明3.1.2 使用流程3.1.3 常用注解 3.2 基于XML方式3.2.1 相比注解优势3.2.2 使用流程3.2.3 常用标签 1 关于SpringBoot SpringBoot…...

数字化转型导师坚鹏:数字化时代扩大内需的8大具体建议

在日新月异的数字化时代、复杂多变的国际化环境下&#xff0c;扩大内需成为推动经济发展的国家战略&#xff0c;如何真正地扩大内需&#xff1f;结合本人15年的管理咨询经验及目前实际情况的深入研究&#xff0c;提出以下8大具体建议&#xff1a; 1、制定国民收入倍增计划。结…...

M1/M2 通过VM Fusion安装Win11 ARM,解决联网和文件传输

前言 最近新入了Macmini M2&#xff0c;但是以前的老电脑的虚拟机运行不起来了。&#x1f605;&#xff0c;实际上用过K8S的时候&#xff0c;会发现部分镜像也跑不起来&#xff0c;X86的架构和ARM实际上还是有很多隐形兼容问题。所以只能重新安装ARM Win11&#xff0c;幸好微软…...

Linux中显示系统正在运行的进程的命令

2023年7月29日&#xff0c;周六上午 在Linux中&#xff0c;ps命令用于显示当前系统中正在运行的进程&#xff0c; ps应该是processes snapshot&#xff08;进程快照&#xff09;的缩写。 以下是ps命令的常见用法和示例&#xff1a; 显示当前用户的所有进程&#xff1a;ps 显示…...

LoRa网关实战:5分钟搞定MQTT通信(附Java代码示例)

LoRa网关实战&#xff1a;5分钟搞定MQTT通信&#xff08;附Java代码示例&#xff09; 在物联网项目开发中&#xff0c;LoRa网关与服务器的高效通信是确保数据可靠传输的关键环节。MQTT协议凭借其轻量级、低功耗的特性&#xff0c;成为连接LoRa设备与云端服务的首选方案。本文将…...

从Java全栈工程师视角看Web开发的实战与思考

从Java全栈工程师视角看Web开发的实战与思考 面试现场&#xff1a;一次真实的技术对话 面试官&#xff1a;你好&#xff0c;我是今天的面试官&#xff0c;很高兴见到你。请先简单介绍一下自己。 应聘者&#xff1a;你好&#xff0c;我叫李明&#xff0c;28岁&#xff0c;本科学…...

YOLO12应用场景:零售货架识别中商品计数+品类分类一体化方案

YOLO12应用场景&#xff1a;零售货架识别中商品计数品类分类一体化方案 1. 引言&#xff1a;零售货架管理的痛点与新解法 如果你经营过一家便利店、超市&#xff0c;或者负责过零售门店的运营&#xff0c;一定对“货架盘点”这件事深有感触。每到月底或者需要补货时&#xff…...

实时信号处理中的滤波器选型实战指南:从需求分析到性能优化

实时信号处理中的滤波器选型实战指南&#xff1a;从需求分析到性能优化 【免费下载链接】gnuradio GNU Radio – the Free and Open Software Radio Ecosystem 项目地址: https://gitcode.com/gh_mirrors/gn/gnuradio 一、需求分析&#xff1a;明确滤波器设计目标 在开…...

导入MotorCAD API(需先安装MotorCAD的Python接口)

基于Motorcad的4极6槽 内转子采用内插式磁钢 3000rpm 输出转矩 2.6Nm 效率93%外径 94mm 轴向长度70mm 功率800w 直流母线380V 永磁同步电机&#xff08;永磁直流无刷&#xff09;模型(PMSM或者是BLDC) 最近捣鼓了个小功率PMSM模型&#xff0c;用MotorCAD搭了个4极6槽内插式的&a…...

量子机器学习在医疗影像中的技术迷思与测试验证陷阱

当量子计算遭遇医学影像近年来&#xff0c;"量子赋能医疗影像"成为热门概念&#xff0c;宣称通过量子算法&#xff08;如QSVM、量子卷积&#xff09;可大幅提升病灶识别精度和图像重建效率。然而&#xff0c;作为软件测试从业者&#xff0c;我们需警惕技术炒作背后的…...

【个人推荐】一些好用的录音转写工具

因为助教课备课的缘故&#xff0c;需要录制讲座的音频以整理知识点。一次讲座的音频内容很长&#xff0c;即使3x速快进播放依然很耗费时间&#xff0c;因此录音转写的需求浮现了出来。于是闲暇之余探索了下市面上的录音转写工具&#xff0c;浅浅记录下体验。 下面主要推荐三款…...

【含文档+PPT+源码】基于SSM框架的农产品销售平台的设计与实现

项目介绍本课程演示的是一款 基于SSM框架的农产品销售平台的设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料2.带你从零开始部署运行本套系统3.该项…...

基于比迪丽模型的Transformer架构优化:提升图像生成质量

基于比迪丽模型的Transformer架构优化&#xff1a;提升图像生成质量 在图像生成领域&#xff0c;比迪丽模型凭借其出色的生成效果和稳定性赢得了广泛关注。但很多用户可能不知道&#xff0c;通过合理的Transformer架构优化&#xff0c;这个模型的图像生成质量还能再上一个台阶…...

手把手教你用ZEMAX复现Thorlabs锥透镜生成贝塞尔光束(附Edmund透镜库文件)

手把手教你用ZEMAX复现Thorlabs锥透镜生成贝塞尔光束&#xff08;附Edmund透镜库文件&#xff09; 在光学工程领域&#xff0c;贝塞尔光束因其无衍射特性和自修复能力&#xff0c;在激光加工、光学捕获和生物成像等应用中展现出独特优势。本文将带您从零开始&#xff0c;在ZEM…...