ubuntu20.04修改编译chromium源码实战

首先,利用vmware搭建ubuntu20.04的虚拟机

由于chromium的源码比较大,在git的时候需要分配数据交换的大小,如果小了就下不下来。所以最好给这台虚拟机分配12G内存以上。存储100G以上。ubuntu的iso文件上ubuntu官网下载即可。如果你当前机器本身就是ubuntu20.04,那么这一步就可以跳过。

构建全局上网不受限的环境

由于chromium源码被墙,想要clone下来需要自备全局上网不受限的环境。

本机做代理,ubuntu设置网络代理为当前机器

在本机中执行ipconfig,可以看见VMnet8这张网卡,就是vmware中NAT模式的网卡。
ubuntu20.04修改编译chromium源码实战_第1张图片
然后在Ubuntu中设置代理:
ubuntu20.04修改编译chromium源码实战_第2张图片
其中1080是你的全局不受限上网软件作为代理时监听的端口。

此时你在Ubuntu中测试一下看是否能够访问chromium官方网站

如果此时没有问题。那么你就直接照着官网的操作接着操作就行。你也可以参考下面的内容,是我的实践。

拉取源码必须要在一个网络环境比较好且稳定的地方

安装depot_tools

这个工具是谷歌专门用来便于下载和同步chromium源码的工具(其他的项目我不知道)。

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

然后在当前用户的根目录下,打开 ~/.bashrc 并将depot_tools的bin目录放到path下。也就是写入

export PATH="$PATH:${HOME}/depot_tools"

然后回到目录中,执行

source ~/.bashrc

使配置生效。

获取源码

在当前用户的根目录下(最好别用root用户)创建一个你放源码的文件

mkdir ~/chromium && cd ~/chromium

然后用fetch工具来获取源码,fetch工具是depot_tools中的工具

fetch --nohooks --no-history chromium

如果提示fetch不存在,那么只有可能你的depot_tools没有下载成功或者没有加入到系统path中

这里需要注意的是,该命令因你所处的网络环境,可能会长达数小时,我200M宽带下了三小时。所以获取源码的时候一定要找一个网络环境比较好且稳定,同时你也不会离开。晚上睡觉的时候下载是一个不错的体验。

下载依赖

我们下载下来的源码中,有个src目录,进去之后执行

./build/install-build-deps.sh

如果该命令没有下载大量的(接近1.5G)包,且出现了

E: Could not configure 'libc6:i386'. 
E: Could not perform immediate configuration on 'libgcc-s1:i386'. Please see man 5 apt.conf under APT::Immediate-Configure for details. (2)

这样的错误,这个问题可以归咎于ubuntu20.04系统的问题,你需要首先先执行

apt-get dist-upgrade -o APT::Immediate-Configure=0

然后再执行一遍下载依赖的./build/install-build-deps.sh脚本即可。

等到依赖安装完毕,就可以看源码了。

下载clion查看源码

如果你在ubuntu上面没有自己喜欢的看c/c++源码的软件,那么可以使用clion。clion是jetbrains全家桶之一,所以稳定性还是有保证的。值得注意的是:在ubuntu下关闭clion的启动脚本的进程并不能关闭clion本身,有时候clion很流氓,关不掉的时候,只能用 ps 命令查看所有的clion进程,然后全部杀掉。

ubuntu20.04修改编译chromium源码实战_第3张图片

chromium源码结构

chromium下载下来的代码非常巨大,但是大部分都是测试代码。相关的资料,去官网看开发者文档就行。控制浏览器行为的代码一般是在blink相关的目录下。我就是对blink下的源码进行了修改,定义了符合自己应有场景的函数行为。

编译chromium

首先执行

gclient runhooks

下载hook并执行,完成之后,执行下面的命令即可

gn gen out/Default
# 这一步大概等待10s-60s左右
autoninja -C out/Default chrome
# 初次编译,这一步大约需要十几个小时

编译完成之后,进入到out/Default目录即可。可以看见名为chrome的可执行文件。

你可能感兴趣的:(puppeteer,chromium,chromium)