Android UI画面显示问题需要给mtk提供的相关资讯?

来源:互联网 发布:网络特性怎么做营销 编辑:程序博客网 时间:2024/05/22 10:29

前言
         欢迎大家我分享和推荐好用的代码段~~
声明
         欢迎转载,但请保留文章原始出处:
         CSDN
http://www.csdn.net
         雨季o莫忧离:http://blog.csdn.net/luckkof

正文

 

UI相关问题(画错了,画花了,没画黑屏白屏,花屏等),透过普通的mobile log是很难定位到问题的.需要借助layer dump / window log / view system log来辅助分析.

注意因为log量很大所以为了快速定位问题范围要详细描述log对应的操作过程并在附上log时一并说明发生显示问题的时间点.

[SOLUTION]

抓取Layer dump的方法如下:

Android 2.3版本:

请先帮忙确认,alps\frameworks\base\services\surfaceflinger\tests\layerdump下有没有Android.mklayerdump.cpp两个文件。

如果没有这两支文件,请帮忙告知我司,我司同仁会先把这两支文件发给您,然后请您帮忙再按照以下的做法抓取layerdump相关的信息。

I) 在目前贵司可以复现显示问题的工程根目录下,执行以下命令:./makeMtk -t xxx mm frameworks/base/services/surfaceflinger/tests/layerdump  (其中xxx表示工程名)。命令执行完成后,將會在 out/target/product/xxx/system/bin/ 下生成一个名为test-layerdump的可執行檔。

 

II) test-layerdump用命令push到手机的system/bin下:adb push test-layerdump system/bin

 

III) 在复现问题的画面,执行以下命令:

adb shell chmod 777 system/bin/test-layerdump

adb shell test-layerdump

adb shell dumpsys SurfaceFlinger > SF_layerdump_all.log

 

IV) 将生成的 /data/*.png  /data/*.uyvy 這些圖檔,以及生成的SF_layerdump_all.log信息打包发给我司。

 

请注意,/data下导出每个layer png图片,需要使用命令:adb pull 命令,例如:导出/data/5.png图片,是用的命令是: adb pull data/5.png D:/ , 这个命令表示把/data/5.png导出到D盘下.

 

 

Android 2.3之后的版本:

I) 请帮忙创建一个名为:SF_layerdump_all.bat.txt txt档案,内容如下:

SET raw=%1

SET layerdump=%2

 

IF "%raw%"=="" SET raw=0

IF "%layerdump%"=="" SET layerdump=-1

 

adb shell setprop debug.sf.layerdump.raw %raw%

adb shell setprop debug.sf.layerdump %layerdump%

adb shell dumpsys SurfaceFlinger > SF_layerdump_all.log

adb shell mkdir /data/SF_dump

adb shell mv /data/*.png /data/SF_dump

adb shell mv /data/*.i420 /data/SF_dump

adb shell mv /data/*.yv12 /data/SF_dump

adb shell mv /data/*.RGBA /data/SF_dump

adb shell mv /data/*.RGB565 /data/SF_dump

rmdir /S /Q SF_layerdump_all

md SF_layerdump_all

move SF_layerdump_all.log SF_layerdump_all

adb pull /data/SF_dump SF_layerdump_all/

adb shell rm /data/SF_dump/*

 

II) 创建好并保存txt后,重命名为SF_layerdump_all.bat,把这个bat放到电脑的windows桌面上。

 

III) 手机连接usb,在可以复现这个显示问题的画面(也就是当一个竖屏应用显示成横屏时),双击执行SF_layerdump_all.bat,然后把生成的文件夹打包发给我们(文件包里有一些Png图片,对应每个layersnap shot,还有一个log文件)。

对于一闪而过的画面显示问题,很难抓到问题现场的Layer dump,可以尝试通过adb命令:adb shell dumpsys SurfaceFlinger > desktop/sf.txt    可以现在console上输入这串命令,当一闪而过的问题画面出现时,回车执行,多尝试几次,看能否抓到问题画面的layer dump.

注意:要使用eng build来抓取layer dump!

 

 

抓取window log的方法如下:

 1) 修改代码并编译

打开WindowManagerService.java中的DEBUG_XXX true,重新编译services.jar模块,相应的log是在mobile logmain log.

 

 2)   不修改代码,动态打开debug开关 (重新开机后需要再次设置)

 

-  先到工模里打开mobile log
- 通过命令行打开下面的debug的开关,如下操作:
    adb shell dumpsys window -d enable 0 1 2 3 4 5 6  8 9 10 11 12 13 14 16 17 19 21 22 23 24 26 29 30 32 33  34 
    adb shell dumpsys window -d disable 18
- 复现问题并抓取mobile log
 
注意:window log的内容比较多,为了方便定位问题,请一定要记录问题发生的准确时间点,并在附上window log时作出说明。
 

抓取View system log的方法如下

打开ViewRootImpl.java中的DEBUG_XXXtrue,并重新编译framework.jar模块,相应的log是在mobile logmain log.

 


0 0
原创粉丝点击