編輯:關於Android編程
UI相關問題(畫錯了,畫花了,沒畫, 黑屏, 白屏,花屏等),透過普通的mobile log是很難定位到問題的.需要借助layer dump / window log / view system log來輔助分析.
注意: 因為log量很大, 所以為了快速定位問題范圍, 要詳細描述log對應的操作過程, 並在附上log時一並說明發生顯示問題的時間點.
[SOLUTION]
抓取Layer dump的方法如下:
Android 2.3版本:
請先幫忙確認,alpsrameworksaseservicessurfaceflinger 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
抓取View system log的方法如下:
打開ViewRootImpl.java中的DEBUG_XXX為true,並重新編譯framework.jar模塊,相應的log是在mobile log的main log裡.
本文將介紹運動傳感器(Motion Sensors)、位置傳感器(Position Sensors)、環境傳感器(Environment Sensors)。如需訪問官方原
轉載請注明出處,謝謝~~目錄本文概述 動畫補充說明 屬性動畫的View加載方式 TypeEvaluator的使用 TimeInterpolator LayoutTrans
以前在使用ListView當中,如果我們的列表數據發生了改變,我們會去調用Adapter.notifyDataSetChanged()去更新UI界面上的列表數據,當然這個
1.介紹:本博客使用XListView模仿Android版QQ好友動態的ListView效果。效果截圖如下:效果圖1效果圖2這裡面主要涉及的是ListView的布局問題,