adb进阶知识,如何过滤只查看某一个app的日志

时间:2022-09-03 19:15:25
前面大概学习了adb基础,但是adb的存在,在测试人员中究竟有什么必要,以及看log时,那么多的log,让我们看个屁啊,所以这一次,我决定一定要把adb这件事情搞清楚。
 
1.先来看最感兴趣的adb日志
首先来了解一共概念,安卓的日志有那些:
Android 系统的日志分为两部分,底层的 Linux 内核日志输出到 /proc/kmsg,Android 的日志输出到 /dev/log。一般我们说的adb logcat看的都是android的日志
 
使用adb shell dmesg 可以能看Android的内核日志,内核日志我们可以做一些事情,比如衡量内核启动时间,在系统启动完毕后的内核日志里找到 Freeing init memory 那一行前面的时间就是。
内核启动时间看了有啥用呢?
 
 
作为测试做常用的adb查看日志命令:
1.adb logcat -v time   打印log的详情日志
2.adb logcat -v time > D:\log.txt   把日志输出到电脑的上查看,在窗口打印的同时,文件也会同时打印的
3.adb logcat -c       清除之前的日志信息,一般在看日志前都会执行这个命令,目的是好看日志,不然前面的日志应该会超级多,不好看问题
 
2.过滤规则
有两种规则,一种是按照日志级别过滤,一种是按照日志中的tag过滤,当然会有混合日志和tag在一起过滤
过滤格式:
adb logcat <tag>[:priority]
tag表示标签,priority输出的级别,注意如果要是要根据级别查看时记得要tag一定要给,如果没有指定,那个tag哪里输入*号就行了
 
日志级别过滤:
默认级别为V,输出人日志最低,日志级别最低
D —— Debug
I —— Info
W —— Warning
E —— Error
F —— Fatal  致命
S —— Silent(最高,啥也不输出)
实例:比如想要查看手机的级别为错误的日志
 
adb logcat *:E(不区分大小写)
 
tag级别过滤:
用这个过滤首先要知道手机上的tag,可以用这个命令查看手机日志的tag
adb logcat -v tag
输出后格式会是:<priority>/<tag>: <message>
 
但是在日志中的tag究竟是什么意思呢?标签,顾名思义,但是还是不明白,后面明白再来看这快
现在我要知道的就是tag如何过滤日志,可以使用下面的命令:
adb logcat ActivityManager:I
发现tag过滤并没有生效,为啥??
而网上下面这个命令却是生效的:
adb logcat ActivityManager:I PowerManagerService:D *:S
 
组合起来的使用其实再这里也讲了
 
3,使用管道进程来查看日志,这个应该是最好的
adb logcat | grep MyApp
adb logcat | grep -i myapp #忽略大小写。
后期强大的话,还可以使用正则表达式来学习
 
再windows上不能使用grep关键字,而是应该用findstr
只抓取某个app的命令        
adb logcat | findstr app进程号
 
如何只查看某个app日志的方法
1.adb shell pm list packages -3 查看非系统第三方应用包名
2.adb shell ps | findstr vchat.A  查看包名进程
3.根据进程来查看过滤app的日志
adb logcat | findstr vchat.A
 
遇到问题:查看app日志时,日志打印到一半莫名报错,写入错误?

原因如下:adb logcat  findstr 有时候会出现 写入错误,需要设置一下语言编码CHCP 65001 ,设置为UTF-8编

命令行中,有个命令是chcp,这个命令是用来显示当前活动代码页编号的,

 ANSI的编码环境的代号是936

 utf-8编码的65001

执行:CHCP 65001就设置成utf-8编码的了

 
 
 
其他常用命令:

一、把日志输出到手机指定目录

其命令为:adb logcat -f / sdcard/zjdata.bredbaby/log/1.txt

二,很多没用的一起加载,如果只想抓取被测app的日志,就需要对包名进行过滤,使用find过滤包名

adb logcat find | "vchat.A"

 
常用命令:

常用命令

1、查看adb版本

adb version

2、查询pc链接的所有android 设备

adb devices

3、装包

如果在电脑D盘下面有个a.apk文件,只需要一行命令就安装到手机上:

adb install d:/a.apk

如果已经安装了这个程序,可以通过以下命令覆盖安装:adb install -r d:/a.apk

保留数据和缓存文件,重新安装 apk adb install -r a.apk

安装包在android设备中

adb shell pm install apk在移动端的路径

4、卸载包

adb uninstall 包名

卸载软件但是保留配置和缓存文件:

adb uninstall -k 包名

如果机器上有多个模拟器或真机,需要使用-s命令行参数指定具体的模拟器或真机。例如,下面的命令分别在模拟器和真机上安装、重新安装和卸载应用程序。

在emulator-5554模拟器上安装ebook.apk

adb -s emulator-5554 install ebook.apk

在真机上安装ebook.apk

adb -s HT9BYL904399 install ebook.apk

在emulator-5554模拟器上重新安装ebook.apk

adb -s emulator-5554 install -r ebook.apk

在真机上重新安装ebook.apk

adb -s HT9BYL904399 install -r ebook.apk

在emulator-5554模拟器上卸载ebook.apk(不保留数据和缓冲目录)

adb -s emulator-5554 uninstall ebook包名

在真机上卸载ebook.apk(保留数据和缓冲目录)

adb -s HT9BYL904399 uninstall -k ebook包名

5、包管理,如何知道一个app包名呢

包名(Package name)在Android系统中是判断一个App的唯一标识,不同的App可以有同样的名字,但是它的包名不可以相同。

例如我们可以自己编译生成一个App也叫“微信”,但是我们的App的包名不能为com.tencent.mm

(微信的包名为这个),如果指定的包名和微信一致,那么手机上只允许安装这两个App中的其中一个。说到这很多人就会有疑问,如果有人恶意做了一个和微信内容一模一样的App,名字和包名都和微信一样,那怎么分辨呢?Android中为了防止这样的情况,还做了一个叫签名的东西,微信的签名一般我们是没有的,所以就可以通过签名来标识出这款App到底是谁的了。

1、看源代码。当有源代码的时候,可以到工程目录下的 “AndroidManifest.xml”文件下查看package这一项。

2、adb命令查看列出手机装的所有 app 的包名:

adb shell pm list packages

3.列出系统应用的所有包名:

adb shell pm list packages -s

4.列出除了系统应用的第三方应用包名:

adb shell pm list packages -3

5.推测一个包中可能带有的关键字:

adb shell dumpsys activity | findstr mFocusedActivity

6.清除应用数据与缓存

adb shell pm clear 应用包名

6、文件相关

1、接收电脑文件

语法:adb push local remote

案例:adb push d:/a.txt /sdcard/

把电脑 D 盘下的 a.txt 文件推送到手机 sdcard 目录下

2、上传文件到电脑

语法:adb pull remote local

案例:adb pull /sdcard/a.txt d:/ 上传位于/sdcard/目录下的 a.txt 文件到电脑的 D 盘根目录下

7、截屏、录屏

1.截屏

adb shell screencap /sdcard/a.png

adb shell /system/bin/screencap -p /sdcard/a.png

2.使用adb进行屏幕录像

adb shell screenrecord /sdcard/a.mp4

通过ctrl+c停止录制,你可以在sdcard目录下查看。妈妈再也不担心我到处找录制视频的软件了。

8、shell

进入shell adb shell

退出shell

exit

9、手机信息收集

获取序列号

adb get-serialno

获取 MAC 地址

adb shell cat /sys/class/net/wlan0/address

查看设备型号

adb shell getprop ro.product.model

查看 Android 系统版本

adb shell getprop ro.build.version.release

查看屏幕分辨率

adb shell wm size

查看屏幕密度

adb shell wm density

查看permissions adb shell pm list permissions

查看系统的危险权限dangerous permissions adb shell pm list permissions -d -g

10、adb服务器杀死和启动

adb kill-server

adb start-server

场景:比如希望移动adb文件夹,或者adb命令得不到想要的内容时

11、与进程相关:

列出当前进程

adb shell ps | findstr 包名

杀死某个包的进程

adb shell am force-stop 包名

12、与性能相关的一些内容

获取内存:

adb shell dumpsys meminfo 包名

获取cpu:

adb shell dumpsys cpuinfo | findstr 包名

adb shell top -n 1 | findstr 包名

获取流畅度相关:

adb shell dumpsys gfxinfo 包名

13、app的启动停止

如果想在模拟器或真机上运行已安装的应用程序,除了直接在模拟器或真机上操作外,还可以使用如下的命令直接运行程序。

activity的获取方式见14条。

在emulator-5554模拟器上运行ebook.apk

adb -s emulator-5554 shell am start -n net.blogjava.mobile.ebook/net.blogjava.mobile.ebook.Main

在真机上运行ebook.apk

adb -s HT9BYL904399 shell am start -n net.blogjava.mobile.ebook/net.blogjava.mobile.ebook.Main

其中Main是ebook.apk的主Activity。相当于Windows应用程序的主窗体或Web应用程序的主页面。am是shell命令。

14、与Activity操作等相关

1.查看当前显示的activity adb shell dumpsys activity | findstr "mFocusedActivity"

结果: mFocusedActivity: ActivityRecord{93a4f9 u0 com.youdao.note/.activity2.MainActivity t36}

注意:我们只需要这一部分:com.youdao.note/.activity2.MainActivity即包名+activity

2.找到当前手机内的top Activity:

adb shell dumpsys activity top | findstr ACTIVITY

3.启动某一个Activity: adb shell am start activity路径

adb shell am start com.youdao.note/.activity2.MainActivity

15、查看8080端口是哪个应用占用

netstat -ano|findstr "8080"

adb shell top -n 1 | findstr vchat.faceme
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

adb进阶知识,如何过滤只查看某一个app的日志的更多相关文章

  1. Spring实战3:装配bean的进阶知识

    主要内容: Environments and profiles Conditional bean declaration 处理自动装配的歧义 bean的作用域 The Spring Expressio ...

  2. adb命令查看app的日志

    前言 在做app测试的时候,经常会遇到异常,此时如果开发没有异常保存,那么测试就得通过adb命令来查看日志信息.基于Windows平台的操作: logcat输出日志 一.把日志输出到手机指定目录 其命 ...

  3. Httpd服务进阶知识-HTTP协议详解

    Httpd服务进阶知识-HTTP协议详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.WEB开发概述 1>.C/S编程 CS即客户端.服务器编程. 客户端.服务端之间需 ...

  4. js进阶 11-15 jquery过滤方法有哪些

    js进阶 11-15  jquery过滤方法有哪些 一.总结 一句话总结:jquery方法中的参数一般是什么:选择器.元素或 jQuery 对象. 1.jquery方法中的参数一般是什么? 选择器.元 ...

  5. Httpd服务进阶知识-LAMP源码编译安装

    Httpd服务进阶知识-LAMP源码编译安装 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 想必大家都知道,动态资源交给fastcgi程序处理,静态资源依旧由httpd服务器处理  ...

  6. Httpd服务进阶知识-基于FASTCGI实现的LAMP架构

    Httpd服务进阶知识-基于FASTCGI实现的LAMP架构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.httpd+php结合的方式 module: php fastcgi ...

  7. Httpd服务进阶知识-基于Apache Modele的LAMP架构之Discuz&excl;案例

    Httpd服务进阶知识-基于Apache Modele的LAMP架构之Discuz!论坛案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装依赖包及数据库  博主推荐阅读: ...

  8. Httpd服务进阶知识-基于Apache Modele的LAMP架构之WordPress案例

    Httpd服务进阶知识-基于Apache Modele的LAMP架构之WordPress案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装依赖包及数据库授权 博主推荐阅读 ...

  9. Httpd服务进阶知识-基于Apache Modele的LAMP架构之PhpMyAdmin案例

    Httpd服务进阶知识-基于Apache Modele的LAMP架构之PhpMyAdmin案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常见LAMP应用 PhpMyAdm ...

随机推荐

  1. C&num;基础系列——再也不用担心面试官问我&OpenCurlyDoubleQuote;事件”了

    前言:作为.Net攻城狮,你面试过程中是否遇到过这样的问题呢:什么是事件?事件和委托的区别?既然事件作为一种特殊的委托,那么它的优势如何体现?诸如此类...你是否也曾经被问到过?你又是否都答出来了呢? ...

  2. 关于hover

    要想实现a:hover b{} 得到样式的话,a必须是b的父元素

  3. JS - 点击 &OpenCurlyDoubleQuote;&plus;” 、&OpenCurlyDoubleQuote;-” 改变数字

    效果: 代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.a ...

  4. JAVA代理分析

    JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类 ...

  5. &lbrack;C&plus;&plus;&rsqb;C&plus;&plus;与C头文件辨析&lpar;比较&rpar;

    C++/C头文件辨析 C++标准库 C标准库 C++标准模板库 ios   vector iomanip   deque sstream   list fstream   map     set   ...

  6. 分布式服务注册中心XXL-REGISTRY

    <分布式服务注册中心XXL-REGISTRY> 一.简介 1.1 概述 XXL-REGISTRY 是一个轻量级分布式服务注册中心,拥有"轻量级.秒级注册上线.多环境.跨语言.跨机 ...

  7. Android Studio 之 导入Eclipse项目常见问题及解决方案

    在将Eclipse做的Android项目成功导入Android Studio 后,启动生成,遇到一些问题,现总结如下: 问题1:图片命名问题 AS对图片命名要求比eclipse严格,图片名称只能有&q ...

  8. Linux下字符集的安装

    目前环境中经常会遇到编码转化的问题,UTF-8跟GB2312也有问题.只得在Linux上安装GB2312(在Linux操作系统上又称zh_CN.GB2312)的字符集,具体请看下文. Linux下几个 ...

  9. day 70 crm&lpar;7&rpar;&colon;stark组件调用&comma;以及权限分配

    前情提要: 复习:  1: orm !!!!! 2: session 3: django 4:  前端在复习 5:  复习中间件 学习的stark 的组件调用,以及权限的应用 一:权限的概念,  1: ...

  10. 题解 P4379 【&lbrack;USACO18OPEN&rsqb;Lemonade Line】

    不敢快速排序又想要快排的速度,还不用STL的小伙伴们看这里! 小金羊终于学会了堆排以外的另外的一种排序 (打个题解巩固一下) 归并排序(mergesort): 时间复杂度和快排一样的优秀. 先说归并排 ...