学习一下Chromium的源码,先从自己构建Chromium开始
depot_tools获取
depot_tools是用来管理Chromium代码库和开发过程的工具,我们首先获取它
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
然后将它配置到环境变量里,首先打开bash_profile
vim ~/.bash_profile
然后再里面添加你的depot_tools路径
PATH="/path/to/depot_tools:${PATH}"
export PATH
退出保存一下再执行
source ~/.bash_profile
这就搞定了
chromium源码获取
在你心仪的位置创建一个文件夹存放chromium源码
mkdir myChromium && cd myChromium
然后用depot_tools中的fetch命令拉取chromium源码
fetch --no-history chromium
如果这中间中断了下载,后续只需要使用gclient工具就可以继续同步之前未下载完的部分(gclient是一个python脚本,用来管理模块依赖项的工作区,每个模块依赖项是从不同的子版本和git仓库里独立检查的)
gclient sync
这中间你可能还会遇到一个问题,就是在running hooks的时候出错,提示如下:
package_version: Could not download URL (https://storage.googleapis.com/nativeclient-once/object/binutils_arm_x86_64_apple_darwin_b33eac0121acfb07112b84a130824382abab91e2.tgz): No active exception to reraise
就是没法下载这个链接下的.tgz,但是你会发现如果直接浏览器访问这个链接是可以直接下载的。后面发现这大概是证书的问题。python3不使用系统的openssl库,而是依赖于自己的库,没有访问os级别的证书,这时我直接用的python2去下载就可以了。
Chromium构建
depot_tools里面的Ninja工具是用来构建Chromium的,下载完源码后执行以下命令
cd src
# 这里的out/mychromium是你自定义的目录
gn gen out/mychrome --ide=xode
然后会在你的定义的路径下生成文件夹,找到里面的out/mychrome/args.gn文件,写入:
is_debug = true
is_component_build = true
symbol_level = 2
然后我们就可以进行激动人心的构建阶段了,你要预留100G的磁盘空间,而且这个时间比较长,我的机子上耗费了6个多小时
autoninja -C out/mychrome chrome
构建好之后,执行下面的命令即可运行你构建好的Chromium了
out/mychrome/Chromium.app/Contents/MacOS/Chromium