logcat
目录
CRT工具在抓log的一些使用
- 新建按钮
- 设置自动保存
- MTK logcat出现的条件
1.如何抓取有效的log
- logcat -c的重要性以及时间戳和标志位的重要性
- 设置时间戳
- ANR时拿到trace文件
2.android 系统中一些常用的命令
- linux 命令(cp,mv,cd,chmod,rm,cat)
- adb(挂载命令)
- adb 命令与串口命令的关系
- adb shell kill PIDNumber 死你想杀死的后台进程来模拟某种 bug 的复现条件。
- adb shell ps 查看当前终端中的进程信息
- 安装 应用
- list user(受限模式)
- 分离数据板子上对应的位置
- key对应板子上的位置
- 如何进入recovery 模式
- 如何在工厂菜单里面进行本地OTA升级
- dumpsys命令
3.一些提高效率的命令
- 挂载remount
- am(打开应用)
- input text
- 当前界面
- 截图
- 模拟按键 inputevent(附件键值,getevent)
4.MTK cli封装的一些命令
- hbbtv下抓log
- 无声问题抓取log
- 升级以及读取6m60的版本号的命令
- 串口替换panel.bin等的方法
- 命令调节pcm和dolby
- 给TV设置一个系统中本身就带的panel
- 初始化功放命令
一.CRT工具在抓log的一些使用
1.新建按钮
如下图将command window 和Button Bar勾选,即下方会出现按钮行以及命令输入行
2.一些基本的设置
- 设置颜色字体等
- 设置屏幕中最大的滚动行
- 设置log自动保存命名以及自动添加时间戳
3.MTK log出现的条件
有时候发现在串口输入 logcat,出现logcat打印太少,或者没有logcat的现象,这个时候执行以下命令。(此种机制是因为mtk的log要先检测在data目录下时候有tkui.print这个文件,如果有,log命令才会生效并且打印)
su
touch /data/tkui.print
sync;sync;sync
reboot
二.如何抓取有效的log
logcat -c以及logcat使用的时机。
-
我们在复现问题以及抓log的时候,大多都是开始先输入一个logcat,然后再复现问题,问题复现到了之后,再去保存logcat。此时如果经过很长时间才复现到问题现象。则会发现logcat文件已经很大了。这种抓log有以下几点缺点:
- logcat多达几M,占服务器内存
- 开发人员只有倒着看。
- 复现到立即暂停logcat,可能有好多logcat还没有刷出来,导致分析不到问题点
- 必现问题还好说,开发人员可以自己抓log,但是对于随机问题,复现一次不容易,故此时logcat很重要。
-
推荐比较好的有效的抓取logcat的几种方式
1.复现问题之前输入"logcat -c" 先将之前即将要刷出现无用的logcat清除。然后重新保存一份新的logcat。再输入logcat开始复现。依次类推,直到复现到问题。(每次抓log切记,让logcat多跑一会,大概一分钟。再关闭logcat,上传系统)
2.为了方便测试人员,不用去重复的保存logcat。可以采用这种方式:复现之前打开logcat保存文件,然后输入"logcat -c"清除之前无用的logcat。然后输入logcat,让logcat刷起来,接着开始复现。等到复现到问题之后快速在命令行敲出几个标志的字符,可以多敲几次(可以随便起,例如test等到问题现象完毕,然后让logcat多刷一会。即可以将logcat上传到系统,然后上传后请在问题上说明刚刚敲击的关键词是什么。这样做的作用是:让开发人员很好的定位问题出现对应的logcat的位置。从而更高效的解决问题。
3.logcat中请按照上面的方法,加上时间戳。这样也可以让开发人员更好的定位问题的所在
4.出现ANR时
- 什么是ANR
ANR,是“Application Not Responding”的缩写,即“应用程序无响应”。
-
什么情况下才会产生ANR
- 主线程对输入事件在5秒内没有处理完毕
- 主线程在执行BroadcastReceiver的onReceive函数时10秒内没有执行完毕
- 主线程在执行Service的各个生命周期函数时20秒内没有执行完毕
-
当ANR出现后需要抓取的log
1.串口logcat
2.traces.txt文件(cp /data/anr/traces.txt /storge/U盘名/)
三.android 系统中一些常用的命令
1.linux 命令(cp,mv,cd,chmod,rm,cat,find,mkdir)
- cp 复制命令
cp 路径A下的某个文件C 路径B(将文件c拷贝到B路径下)
eg:
cp -rf 路径A 路径B(将A路径下的所有文件拷贝到B路径下)
eg:
2. adb(挂载命令)
3. adb 命令与串口命令的关系
串口命令加上"adb shell",即为adb命令
adb shell kill PIDNumber 死你想杀死的后台进程来模拟某种 bug 的复现条件。
adb shell ps 查看当前终端中的进程信息
安装 应用
adb install -r LiveTV.apk
adb uninstall LiveTV.apk
pm install -r LiveTV.apk
Android 多用户模式(Android TV受限模式)
pm list users(列出所有用户)
pm remove-user 10(在主用户模式下删除10这个用户)
am switch-user 10(切换到10这个用户)
分离数据对应的位置
key对应的位置
如何进入recovery 模式
串口输入 reboot recovery(进入后也可以OTA升级)
如何在工厂菜单里面进行本地OTA升级
setenforce 0(关掉selinux)
将OTA包拷到U盘下,将U盘插入TV
进入工厂菜单点击OTA菜单按钮
三.一些提高效率的命令
- 挂载remount
mount -o rw,remount /system(挂载system分区)
mount -o rw,remount /perm(挂载perm分区)
- 快速打开一个app
am start -n 应用包名/应用Activity名
am start -n com.coocaa.factory/.SkyFactory(打开工厂菜单)
am start -n com.android.tv.settings/.MainSettings(打开主页settings)
am start -n com.google.android.tvlauncher/com.google.android.tvlauncher.MainActivity(打开home主页)
am start -n com.google.android.youtube.tv/com.google.android.apps.youtube.tv.cobalt.activity.MainActivity(打开youtube)
- input text(快速输入账号密码)
input text rd120170907(如何rd1的密码)
- 查看当前界面属于那一个应用
dumpsys window|grep mFocusedWindow
这个命令可以从显示出来的包名以及类名,查看是属于那一个app。从而可以确认是我们的应用还是谷歌或者第三方的应用
- 截图命令
screencap -p /storge/u盘名
目前好像只能截主页的图
- 模拟按键 inputevent(附件键值,getevent)
input keyevent 178 (模拟按下键值为178的键,附件为各键对应的键值)
四.MTK cli封装的一些命令
- hbbtv下抓log
对于hbbtv里面的bug,直接logcat录的log是看不出什么的。必须在复现前输入以下命令:
su
echo 7 > /proc/sys/kernel/printk
touch /data/tkui.print
sync
ttyman
按“tap”进入mw cli
mw.oh.el 1
重启系统后输入
su
echo 7 > /proc/sys/kernel/printk
logcat -c
开始复制问题,复制到问题后在
输入logcat。
- 无声问题抓取logcat
一般无声音直接在串口logcat也是无用的。所以如果随机出现无声还是请及时联系开发
- 升级以及读取6m60的版本号的命令
su
setenforce 0
echo 7 > /proc/sys/kernel/printk
ttyman
b.scm 0
pmx.vb1.6m60.slupg 后面接文件路径(升级6m60)
pmx.vb1.6m60.slver(读取6m60版本号)
- 串口替换panel.bin等的方法
连接串口,当打印出来后回车并输入su,再回车;
输入cat /proc/partinfo,找到panel对应的分区号,一般panel为31。
U盘拷贝入要替换的panel.bin,将U盘插到TV上, 使用如下命令替换: 输入 setenforce 0 然后回车 输入 dd if=/storage/0000-0000/panel.bin of=/dev/mmcblk0p31 然后reboot重启
注意:0000-0000为U盘名称,要替换成你自己的,31也好替换成你需要的
- 命令调节pcm和dolby
su
echo 7 > /proc/sys/kernel/printk
cli
b.scm 0
aud.io.spdif.iecs 2 1
- 给TV设置一个系统中本身就带的panel
su
echo 7 > /proc/sys/kernel/printk
cli
b.scm 0
pmx.l(展示所有可选择的panel)
pmx.s.p 211(一般根据屏选择对应的编好)
- 初始化功放命令
su
echo 7 > /proc/sys/kernel/printk
cli
b.scm 0
aud.io.adac.ai