Android系统开发常用shell命令汇总+vim中复制操作+adb logcat过

一、shell命令

1、系统属性:查看与设置

getpropsetprop解释:

1)系统属性其实可以理解为全局变量、全局环境变量;

2)getprop将读取系统所有可读的系统属性。静态的系统属性有很多存放在/system/build.prop。例如Android版本号,硬件版本号,rom的版本号,等等,内核的版本号通过此命令无法获取,内核版本信息可以去cat /proc/version文件

3)setprop可以设置具有可写权限的属性。例如在init.rc文件中注册的某些service的属性。

因此假如你想获取当前android系统的版本号可以调用不同层次的函数接口,也可以直接跑到/system目录下去使用cat、awk去检索出所需要的版本信息。

二、vim操作

下面是vim复制粘贴的基本命令:yy复制游标所在行整行。或大写一个Y。2yy或y2y复制两行。y^复制至行首,或y0。不含游标所在处字元。y$复制至行尾。含游标所在处字元。yw复制一个word。y2w复制两个字(单词)。yG复制至档尾。y1G复制至档首。p小写p代表贴至游标后(下)。P大写P代表贴至游标前(上)。

三、adb logcat显示过滤

开发当中经常看到别人的 log 如洪水般瞬间刷满了屏幕,对自己有用的信息都被淹没了,影响心情也影响效率。下面是几个我所知道的过滤方法。

1. 只显示需要的输出,白名单

最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配。简单的匹配一行当中的某个字符串,例如 MyApp:

adb logcat | grep MyApp adb logcat | grep -i myapp #忽略大小写。 adb logcat | grep –color=auto -i myapp #设置匹配字符串颜色。更多设置请查看 grep 帮助。

进阶一点可以使用 grep 的正则表达式匹配。例如上一个例子会匹配一行中任意位置的 MyApp,可以设置为仅匹配 tag。默认的 log 输出如下,如果修改过输出格式相应的表达式也要修改。

I/CacheService( 665): Preparing DiskCache for all thumbnails. 可以看出 tag 是一行开头的第三个字符开始,根据这点写出表达式:

adb logcat | grep "^..CacheService"

根据这个格式也可以设置只显示某个优先级的 log,,再匹配行首第一个字符即可。例如仅显示 Error 级别 tag 为 MyApp 的输出:

adb logcat | grep "^E.MyApp" 当然也可以匹配多个,使用 | 分割多个匹配表达式,要加转义符。例如要匹配 tag 为 MyApp 和 MyActivity 的输出:

adb logcat | grep "^..MyApp\|^..MyActivity" adb logcat | grep -E "^..MyApp|^..MyActivity" #使用 egrep 无须转义符

2. 过滤不需要的输出,黑名单

还是使用 grep,用法也跟上面的一样,加一个 -v 即可。例如要过滤 tag 为 MyApp 和 MyActivity 的输出:

adb logcat | grep -v "^..MyApp\|^..MyActivity" #显示指定log信息adb logcat | grep -vE "^..MyApp|^..MyActivity" #使用 egrep 无须转义符,删除指定的log信息,显示其他所有log信息

3. 显示同一个进程的所有输出

有时一个程序里面的 tag 有多个,需要输出该程序(同一个 PID)的所有 tag;仅使用 tag 过滤有时也会漏掉一些错误信息,而一般错误信息也是和程序同一个 PID。还是通过 grep 实现,思路是先根据包名找到 pid 号,然后匹配 pid。写成 shell 脚本如下,参数是程序的 java 包名(如 com.android.media)。

android的logcat详细用法

Android日志系统提供了记录和查看系统调试信息的功能。日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过 logcat 命 令来查看和使用.

使用logcat命令

你可以用 logcat 命令来查看系统日志缓冲区的内容:

[adb] logcat [<option>] … [<filter-spec>] …

请查看Listing of logcat Command Options ,它有对logcat命 令有详细的描述 .

每一个输出的Android日志信息都有一个标签和它的优先级.

日志的标签是系统部件原始信息的一个简要的标志。(比如:“View”就 是查看系统的标签).

优先级有下列集中,是按照从低到高顺利排列的:

V — Verbose (lowest priority)

D — Debug

I — Info

W — Warning

E — Error

F — Fatal

S — Silent (highest priority, on which nothing is ever printed)

在运行logcat的时候在前两列的信息中你就可以看到 logcat 的标签列表和优先级别,它是这样标出的:<priority>/<tag> .

下面是一个logcat输出的例子,它的优先级就似乎I,标签 就是ActivityManage:

I/ActivityManager( 585): Starting activity: Intent { action=android.intent.action…}

为了让日志输出能体现管理的级别,你还可以用过滤器来控制日志输出,过滤器可以帮助你描述 系统的标签等级.

过滤器语句按照下面的格式描tag:priority … , tag 表 示是标签,priority 是表示标签的报告的最低等级. 从上面的tag的中可以得到日志的优先级. 你可以在过滤器中多次写tag:priority .

你要以乐观的态度看待这个世界,你会发现世界是如此得美好

Android系统开发常用shell命令汇总+vim中复制操作+adb logcat过

相关文章:

你感兴趣的文章:

标签云: