日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

MTK平台如何定位显示花屏和界面错乱等绘制异常的问题?

發(fā)布時間:2023/12/13 综合教程 40 生活家
生活随笔 收集整理的這篇文章主要介紹了 MTK平台如何定位显示花屏和界面错乱等绘制异常的问题? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

[DESCRIPTION]
在測試手機各項功能過程中,經(jīng)常會遇到概率性復現(xiàn)“屏幕畫花了,界面畫錯亂了等繪制異常問題”,而且概率還非常小;
這類問題請不要直接提交eService,而是先請測試人員及工程師保留住測試現(xiàn)場,然后根據(jù)此條FAQ的步驟進行排查;

通常貴司提交問題的時候所提供的資料太少,無法直接定位問題,與其提交了eService之后再又去花時間復現(xiàn),不如在復現(xiàn)問題的當下,就先按照FAQ的步驟做一個初步排查和分析。
如果在排查過程中,分析問題遇到困難,再將已經(jīng)排查的結(jié)果以及排查過程中每一步所生成的資料和復現(xiàn)問題的log一并提交到eService。

這樣的話我們就能獲得較全面的資料并接著之前的排查結(jié)果做進一步分析,不然的話,我們還是需要貴司安排測試人員再花時間去復現(xiàn),然后按照步驟抓取我們需要的資料,這大大降低了雙方的工作效率,所以這條FAQ就是為了減少雙方的工作量。

下圖是顯示相關的流程圖:

[SOLUTION]

在如下3個大的check步驟中,請分別按照每一步的操作來進行排查;如果貴司有定位到某一個問題點,請在提eService時,將問題排查過程寫清楚,并提供相應的資料到eService附件中,以便MTK做進一步分析。

1.通過DDMS或GAT tool獲取異常界面的屏幕截圖

[Android 5.0版本之前]DDMS 截圖方法如下:Device --> Screen capture,點擊Screen capture,就能抓到當前刷到LCM 屏上的那幀數(shù)據(jù),或者通過Eclipse中的DDMS工具的screen capture功能,點擊操作面板上的“照相機”圖標即可。

=>如果屏幕截圖是ok的,那么問題點就在LCM driver或timing,具體問題要具體分析。

=>如果屏幕截圖not ok,那么你需要進入第2步去獲取并查看FrameBuffer中的數(shù)據(jù)。

[Android 5.0版本及以后]

Android L版本上抓取到的DDMS截圖,不是ovl output,而是GPU composer之后的畫面。

若要抓取ovl output,可以輸入如下命令

adb shell

system/bin/lcdc_screen_cap /data/fb.bin

2.獲取FrameBuffer中的數(shù)據(jù)

對于android 4.1及以后的版本,通過如下方法抓取FrameBuffer中的數(shù)據(jù):

先做如下操作,再dump framebuffer數(shù)據(jù)

先進入手機中Settings->Developer options->Disable HW overlays

再勾選Disable HW overlays

抓取framebuffer 數(shù)據(jù): adb shell cat /dev/graphics/fb0 > /data/fb.bin 然后將fb.bin adb push出來,通過工具查看fb.bin

=>如果此步驟的屏幕截圖是ok,那說明是LCM controller做overlay時出了問題。

需要把寄存器值打出來(保存在kernel log中),再抓kernel log做進一步分析

打印寄存器的值:

請在當前刷屏時,將LCM controller寄存器打印出來,寄存器打印命令如下:

adb shell

echo reg:lcd>sys/kernel/debug/mtkfb

這條命令會將LCM controller的寄存器打印到kernel log中

抓kernel log的方式:要么開啟mobile log,要么單獨用adb命令抓取kernel log;

用adb命令抓取kernel log的方法是:adb shell cat /proc/kmsg > kernel_log.txt

如果分析問題原因是出在這一步,遇到困難時,請將抓取的資料都提供到eService附件中。

=>如果此步驟的屏幕截圖not ok,那么就需要進入第3步,抓取layerdump。

3、抓取layerdump

在異常界面下,手機連接usb,執(zhí)行抓取layerdump,抓取的方法根據(jù)android的版本不同而不同,下面會分別列出不同版本的抓取方法:

android 4.0~4.4的版本,分別介紹在windows環(huán)境下和linux 環(huán)境下如何抓取layerdump

在Windows系統(tǒng)環(huán)境下,將如下內(nèi)容copy到新建文本文件中,然后保存文件為SF_layerdump_all.bat

保持手機連接usb并且在異常界面下,在電腦端雙擊鼠標執(zhí)行該腳本(請在Windows系統(tǒng)下執(zhí)行),就會在腳本所在路徑下生成一個文件SF_layerdump_all

將SF_layerdump_all和復現(xiàn)問題的mobile log一并提供到eService附件中。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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/*

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

注意:如果異常畫面是動態(tài)的,不是那種靜止不動的畫面,那么可以嘗試多執(zhí)行幾次layerdump,盡量爭取能抓到發(fā)生問題時的畫面的layerdump

如果不方便在Windows系統(tǒng)下抓取layerdump,那么就在linux系統(tǒng)的Terminal 下,按照如下步驟執(zhí)行下面的指令:

在復現(xiàn)問題前,下如下這條命令,做設置并打開layerdump的開關:

adb shell setprop debug.sf.layerdump.raw 1

adb shell setprop debug.sf.layerdump -1

在即將開始復現(xiàn)問題前,先將下面的指令準備好,在復現(xiàn)問題的畫面,敲回車執(zhí)行這條命令,就是做layerdump的動作,

如果復現(xiàn)問題的畫面是動態(tài)的,請多下幾次這條命令,盡量把復現(xiàn)問題的畫面dump下來

adb shell dumpsys SurfaceFlinger >SF_layerdump_all.log

執(zhí)行了上面的第3條命令之后,會在手機的/data/SF_dump目錄下生成一些xxx.png或*.i420,*.yv12,*.RGBA,*.RGB565等文件,請把data/SF_dump這個目錄pull出來提供給我們,還有SF_layerdump_all.log文件也一并需要提供。

android 5.0及以后的版本,在windows環(huán)境下如何抓取layerdump

在Windows系統(tǒng)環(huán)境下

若異常畫面是靜態(tài)穩(wěn)定的,將如下內(nèi)容copy到新建文本文件中,然后保存文件為SF_bqdump_L.bat

@echo off

adb shell rm /data/SF_dump/* adb shell setprop debug.bq.dump "@surface"

adb shell "dumpsys SurfaceFlinger" > SF_bqdump_all.log

adb shell setprop debug.bq.dump ""

rmdir /S /Q SF_bqdump_all md SF_bqdump_all move SF_bqdump_all.log SF_bqdump_all adb pull /data/SF_dump SF_bqdump_all/ adb shell rm /data/SF_dump/*

echo "Please view dump files in folder 'SF_bqdump_all'" pause

若異常畫面是一閃而過的,則需用如下腳本dump畫面刷新過程的幾十幀畫面,下面是設置30幀:SF_cont_bqdump_L_30.bat

復現(xiàn)問題后,雙擊執(zhí)行下面的腳本,接著按命令行提示“按電腦任意鍵繼續(xù)”,然后等幾秒鐘,系統(tǒng)會自動dump復現(xiàn)過程的所有幀到指定目錄

@echo off

adb shell rm /data/SF_dump/*

:: Modified this line to set surface count,default is 30 adb shell setprop debug.bq.dump "@surface#30"

adb shell "dumpsys SurfaceFlinger > /dev/null"

pause

adb shell setprop debug.bq.dump "@surface"

adb shell "dumpsys SurfaceFlinger" > SF_bqdump_all.log

adb shell setprop debug.bq.dump ""

rmdir /S /Q SF_bqdump_all md SF_bqdump_all move SF_bqdump_all.log SF_bqdump_all adb pull /data/SF_dump SF_bqdump_all/ adb shell rm /data/SF_dump/*

echo "Please view dump files in folder 'SF_bqdump_all'" pause

注意:抓取到layerdump后,請將layerdump的所生成的文件SF_layerdump_all(在Linux環(huán)境下就是手機的data/SF_dump目錄和SF_layerdump_all.log文件)和復現(xiàn)問題的mobile log一并提交到eService上來。

抓到layerdump之后,根據(jù)layerdump的結(jié)果,再做下一步分析;

如果layerdump看到的目標畫面not ok,則參考如下FAQ做進一步確認,看是app本身的問題還是UI framework繪制的問題;

[DESCRIPTION]
在遇到界面顯示異常等問題的時候,需要排查界面異常是由哪個處理過程所引起的,畫面顯示的過程,大致上可以分為:
1、上層app定義view 大小、位置,和畫面對應的layout;
2、View system處理view的這些屬性,計算view tree的大小、位置、處理view的繪制邏輯;
3、native framework處理繪圖指令,未開啟硬件加速繪制時,是使用Skia圖形庫來執(zhí)行繪圖指令;如果開啟了硬件加速,則是GPU來執(zhí)行繪圖指令

當前這個FAQ就是要提供方法來抓取View hierarchy,排查第1、2這兩個步驟是否出現(xiàn)問題
[SOLUTION]
抓取方法是:
1、將手機用usb連接至電腦,確保手機軟件版本是eng load,或者userdebug load,才可以抓View hierarchy,如果是user load,且沒有打開對應的debug權(quán)限,則不可以抓;

2、打開Android sdk提供的Android Debug Monitor工具或Eclipse,進入DDMS這個視圖界面;

3、打開Devices顯示界面,在Devices的進程列表上方的那一排button中,找到最右邊的button,將鼠標懸浮在button上方,顯示的文字是"Dump View Hierarchy for UI Automator";

4、在復現(xiàn)了畫面顯示異常的界面,保持畫面不動,點擊第3步中的那個button開始dump,完了之后系統(tǒng)會自動打開所dump到的文件,文件名是dump_xxx.uix,xxx通常是一串數(shù)字;

5、將鼠標移到文件名上,會懸浮顯示出此文件的存放 folder 名稱及路徑,folder 命名格式為: uiautomatorviewer_xxxxx,xxxxx也是一串數(shù)字,將此folder打包提供給我們分析即可;


如果是自己分析該文件,那么直接在已經(jīng)打開了的文件中,查看異常位置處的view的狀態(tài)和屬性是否正確即可,將鼠標移動到view的位置時,view會被紅色虛線框highligh出來,右邊的屬性列表中會顯示出該view的各項屬性。

總結(jié)

以上是生活随笔為你收集整理的MTK平台如何定位显示花屏和界面错乱等绘制异常的问题?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕一级片 | 免费污片在线观看 | 国产一卡二卡 | 婷婷精品在线 | 日本热久久 | 成年人免费黄色片 | 日韩av在线导航 | 午夜激情在线播放 | 久久久久久久久久久久97 | 黑人极品videos精品欧美裸 | 免费av网址大全 | 国产www免费 | chien国产乱露脸对白 | 护士人妻hd中文字幕 | 精品一区在线看 | 初尝人妻少妇中文字幕 | 中文字幕第一区 | 韩国精品av | 亚洲一区二区中文字幕 | 国产综合久久久 | 天天综合网久久综合网 | 国产精品尤物视频 | 丝袜诱惑一区 | 女人床技48动态图 | 日韩毛毛片 | 亚洲欧洲精品视频 | 久久1024| 亚洲综合日韩在线 | 精品成人一区二区三区 | 亚洲国产理论 | 欧美草比视频 | 欧美一本 | 色小姐综合网 | 国产永久免费无遮挡 | 曰曰操 | 在线观看成人 | 丰满少妇毛片 | 国产精品免费一区二区区 | 亚洲18在线看污www麻豆 | 最新激情网站 | av在线播放网址 | 日韩中文字幕一区二区 | 在线观看黄色大片 | 中文在线字幕 | 国产精品久久久久久久天堂 | 97伊人超碰 | 五月婷婷小说 | 蕾丝视频污| 五十路六十路七十路熟婆 | 亚洲丝袜在线观看 | 小说肉肉视频 | 黄色靠逼视频 | 欧美色图视频在线 | 中文字幕国产亚洲 | 99在线视频精品 | 这里只有精品999 | 男女av免费 | 亚洲 欧美 自拍偷拍 | 女人被男人躁得好爽免费视频 | 国精无码欧精品亚洲一区蜜桃 | 久草剧场 | 永久精品网站 | 欧美男人天堂 | 影音先锋中文字幕在线视频 | 国产黄片一区二区三区 | 亚洲精品国产精品乱码桃花 | 天堂av官网 | 亚洲精品在线免费观看视频 | 日韩三级国产精品 | 精品一区二区三区欧美 | 欧美肥老妇视频九色 | 国产乱人伦精品一区二区 | 琪琪色网 | 日韩三区在线 | 91欧美精品 | 久久裸体视频 | 日操夜操天天操 | 短裙公车被强好爽h吃奶视频 | 日韩av高清在线播放 | 精品国产一区二区三区性色 | www四虎影院 | 精品不卡一区二区 | 第一福利在线视频 | 欧美精品一级二级三级 | 国产乱国产乱300精品 | 久久丁香 | 性爱视频免费 | 午夜日韩在线 | 欧美69式性猛交 | 日本www高清视频 | 在线免费观看国产视频 | 国产99在线观看 | 女同视频网站 | 国产免费无码一区二区视频 | 国产区福利 | 九九国产视频 | 免费看毛片网站 | 国产乱色精品成人免费视频 | 青青视频在线播放 |