从Android 4.4开始,系统的WebView组件就采用了Chromium/Blink引擎。Chromium的代码及其庞大,理解起来也有些难度。借助于gdb调试,通过跟踪代码的运行,打印调用堆栈,有助于理解代码的执行流程。另外libchromiumwebview.so的编译链接及其耗时间,所以那种打log的方式除非不得已,还是要尽量少用。虽然Chromium for Android以及Chromium桌面版都采用了多进程模型,但Chromium WebView却是采用的单进程模型,所以调试上简单了很多。
下面以Android 5.1为例,调试脚本如下:
#!/bin/bash
# check env setup first
if [ ! "$ANDROID_BUILD_TOP" ]; then
echo "please source build/envsetup.sh to set env var first!"
exit
fi
GDBSERVER_LOG=temp.log
BROWSER_PACKAGE_NAME=