本文聊一聊如何编译WebKit,并调试 WebKit 的 WebContent 进程,以解决WKWebView的疑难问题。
作者编译过WebKit,并写文章记录。但当时是跟着网上的几篇文章按部就班地执行,对每一步都比较懵懂;能跑起来实属运气,如果中途发生问题,那就不知如何解决了。
现在再次尝试构建WebKit工程,跟着以前的步骤竟无法完成,还是因为当时知其然不知其所以然。
因此,本文尝试再对编译WebKit的过程做一次梳理,并把每一步的问题尽量分析。此外,作者抛弃所有对外部资源的参考(往往都过期了),仅跟着WebKit官网 - WebKit 的资料操作。
从官网进入 Get Started 这一主题:Getting Started | WebKit,本文将唯一地引用这里的描述。
代码Clone
WebKit的源码早已从SVN迁移到github。GitHub - WebKit/WebKit: Home of the WebKit project, the browser engine used by Safari, Mail, App Store and many other applications on macOS, iOS and Linux.
git clone 这一步除了慢也没什么问题。
编译准备
WebKit 分支选择
基于iOS系统版本的Tag
作者本身是在main分支上构建的,下图中的tag没有实际编译。但这些tag肯定是和iOS系统版本严格对应的,可以根据自己需要的iOS版本来check out。
一个问题是,当前(2023.10.27)iOS 17 已全量发布,iOS 17 对应的tag还是没有。
⚠️ 猜测这里可能是Apple为了安全,防止未知漏洞被利用,因此不放出最新系统和WebKit的对应关系。有更懂的兄弟欢迎补充。
基于WebKit版本的Tag
WebKit的每个 Release 都有tag。若需 debug 最新的 iOS 系统,可以通过WebKit的版本在找到对应代码。
历史iOS与WebKit版本的对应关系,可以在这里查询: