1、如何dump SKP?
我们知道绘制的操作,主要都是在SkiaPipline::renderframe中进行的
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
|
控制开关变量如下:
/frameworks/base/libs/hwui/Properties.h
|
2.抓取步骤:
1.adb shell setprop "debug.hwui.capture_skp_enabled" 1
//打开SKP抓取开关
2.adb shell setprop "debug.hwui.capture_skp_frames" 10
//设置抓取的几帧,我们这里设置的抓取10帧,如果有多帧需求,按需求设置
3.adb shell stop;start
//重启Android system保证前面的prop生效
4.保证三方应用有sdcard写入权限,进入ALL permission,确定FILES AND MEDIA部分的权限都有打开,这非常重要,这涉及到数据是否能成功写入
5.然后进入复现场景界面,执行
adb shell "setprop debug.hwui.skp_filename '/sdcard/capture1.skp'“ //设置抓取路径以及保存的文件名,当设置好后,会立即抓取!!!随后将其pull出来
6 浏览器地址栏输入(需要外网)进入工具界面:https://debugger.skia.org/
将dump后所得到的skp文件,导入查看结果。
对于一般的APP UI 界面(非surfaceView、非WebView)DataPath是
App->View->Skia->GPU->SF
所以如果异常场景时skp正常,则可以说明是Skia以后的流程出现问题。