adb shell使用总结

chatgpt/2023/9/27 16:22:25

文章目录

    • 日志记录系统概览
    • 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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5313036.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

java - 代码块

代码块 基本介绍 代码块又称为初始化块&#xff0c;属于类中的成员&#xff0c;即类的一部分&#xff0c;和方法类似。将逻辑语句封装在方法体中&#xff0c;通过{}包围起来。 但和方法不同&#xff0c;没有方法名、没有返回、没有参数。只有方法体&#xff0c;而且不用通过…

Sestra 实用教程(三)输入与输出

目 录 一、前言二、分析流程三、输入文件3.1 模型与荷载3.2 分析控制数据 四、输出文件五、参考文献 一、前言 SESAM &#xff08;Super Element Structure Analysis Module&#xff09;是由挪威船级社&#xff08;DNV-GL&#xff09;开发的一款有限元分析&#xff08;FEA&…

C语言---判断当前计算机大小端问题

C语言—判断当前计算机大小端问题 文章目录 C语言---判断当前计算机大小端问题一、方法一二、方法二&#xff1a;使用联合体三、方法二的理解 一、方法一 代码如下 #include<stdio.h> //判断当前机器的大小端问题 int main() {int a 1;//0x 00 00 00 01//低----------…

Spring JPA 实现动态SQL查询及分页

1.在持久层Service中创建EntityManager对象&#xff1b;PersistenceContext private EntityManager entityManager; 2.根据动态sql查询条目数/*** get total.*/ public Object getResultTotalBySql(String sql) {Query query entityManager.createNativeQuery(sql);return que…

Typescript第四章 函数(声明和调用,注解参数类型,多态,类型别名,泛型)

第四章 函数 ts中声明和调用函数的不同方式签名重载多态函数多态类型声明 4.1 声明和调用函数 在js中函数是一等对象&#xff0c;我们可以像对象那样使用函数&#xff0c;可以复制给变量&#xff0c;可以作为参数传递&#xff0c;返回值&#xff0c;赋值给对象的原型&#x…

九五从零开始的运维之路(其二十七)

文章目录 前言一、SQL语句类型1.DDL2.DML3.DCL4.DQL 二、数据库操作1.查看数据库2.创建数据库3.进入数据库4.删除数据库5.更改数据库 三、数据表操作1.数据类型&#xff08;一&#xff09;数值类型&#xff08;二&#xff09;时间\日期类型&#xff08;三&#xff09;字符串类型…

Android 中 app freezer 原理详解(二):S 版本

基于版本&#xff1a;Android S 0. 前言 在之前的两篇博文《Android 中app内存回收优化(一)》和 《Android 中app内存回收优化(二)》中详细剖析了 Android 中 app 内存优化的流程。这个机制的管理通过 CachedAppOptimizer 类管理&#xff0c;为什么叫这个名字&#xff0c;而不…

OpenFeign原理浅析

OpenFeign原理我个人觉得是非常简单的&#xff0c;如果你对Spring非常了解&#xff0c;知道FactoryBean&#xff0c;以及注入bean的方式&#xff0c;并掌握动态代理&#xff0c;那么自己实现一个类似这样的Http代理客户端是一点问题也没有的&#xff01; 使用流程 首先我们先过…
推荐文章