Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android UI畫面顯示問題需要給mtk提供的相關資訊? M

Android UI畫面顯示問題需要給mtk提供的相關資訊? M

編輯:關於Android編程

 

 

 

 

UI相關問題(畫錯了,畫花了,沒畫, 黑屏, 白屏,花屏等),透過普通的mobile log是很難定位到問題的.需要借助layer dump / window log / view system log來輔助分析.

注意: 因為log量很大, 所以為了快速定位問題范圍, 要詳細描述log對應的操作過程, 並在附上log時一並說明發生顯示問題的時間點.

[SOLUTION]

抓取Layer dump的方法如下:

Android 2.3版本:

請先幫忙確認,alps rameworksaseservicessurfaceflinger estslayerdump下有沒有Android.mk和layerdump.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圖片,對應每個layer的snap 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 log的main 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_XXX為true,並重新編譯framework.jar模塊,相應的log是在mobile log的main log裡.

 


 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved