UI-related problems (incorrect image, spent image, no image, black screen, white screen, or floral screen) are difficult to locate through ordinary mobile log. layer dump, window log, and view system log must be used for analysis.
Note: Because the log volume is large, you must describe the operation process of the log in detail to quickly locate the problem range, and describe the time when the problem is displayed when attaching the log.
[SOLUTION]
The method for capturing Layer dump is as follows:
Android 2.3:
Please help confirm that there are two files under alpsrameworksaseservicessurfaceflinger estslayerdump: Android. mk and layerdump. cpp.
If you do not have these two files, please inform us that our colleagues will first send them to you, and then ask you to help capture information related to layerdump in the following ways.
I) IN THE PROJECT root directory where you can reproduce the problem, run the following command :. /makeMtk-t xxx mm frameworks/base/services/surfaceflinger/tests/layerdump (xxx indicates the project name ). After the command is executed, a readable line named test-layerdump will be generated under out/target/product/xxx/system/bin.
II) push the test-layerdump command to the system/bin of the mobile phone: adb push test-layerdump system/bin
III) execute the following command to reproduce the problem:
Adb shell chmod 777 system/bin/test-layerdump
Adb shell test-layerdump
Adb shell dumpsys SurfaceFlinger> SF_layerdump_all.log
IV) package the generated/data/*. png and/data/*. uyvy parameters and the generated SF_layerdump_all.log information to us.
Note: to export a layer png image from/data, run the adb pull command. For example, to export a/data/5.png image, run the following command: adb pull data/5.png D:/. This command exports/data/5.png to drive D.
Versions later than Android 2.3:
(I) Create a txt file named SF_layerdump_all.bat.txt with the following content:
SET raw = % 1
SET layerdump = % 2
IF % raw % = SET raw = 0
IF % layerdump % = SET layerdump =-1
Adb shell setprop debug. sf. layerdump. raw %
Adb shell setprop debug. sf. 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) after creating and saving the txt file, rename it SF_layerdump_all.bat and put the bat on the windows desktop on your computer.
III) connect the mobile phone to usb. Double-click SF_layerdump_all.bat to display the problem on the screen (that is, when the portrait screen is displayed as a horizontal screen, then, package the generated folder and send it to us (the file package contains some Png images, corresponding to the snap shot of each layer, and a log file ).
For a transient display problem, it is difficult to catch the Layer dump at the scene of the problem. You can use the adb command: adb shell dumpsys SurfaceFlinger> desktop/sf.txt can now enter this command string on the console. When a transient problem occurs, press enter to execute the command and try it several times, check whether the layer dump of the problem picture can be captured.
Note: Use eng build to capture layer dump!
The method for capturing window logs is as follows:
1) modify the code and compile it.
Open DEBUG_XXX in WindowManagerService. java to true and re-compile the services. jar module. The corresponding log is in the main log of mobile log.
2) do not modify the code. Enable the debug switch dynamically (you need to set it again after reboot)
-Open the mobile log in the module first.
-Open the following debug switch through the command line:
Adb shell dumpsys window-d enable 0 1 2 3 4 5 6 8 9 10 11 12 13 14 16 17 19 22 23 24 26 29 30 32 33 34
Adb shell dumpsys window-d disable 18
-Reproduce the problem and capture the mobile log. Note: The window log contains a large amount of content. To locate the problem easily, make sure to record the exact time of the problem, the window log is attached with a description.
The method for capturing the View system log is as follows:
Open DEBUG_XXX in ViewRootImpl. java to true, and re-compile the framework. jar module. The corresponding log is in the main log of mobile log.