这篇文章主要记录在chromium源码下载以及编译过程中遇到的问题。一直都对chromium的源码感兴趣,在没有封闭外网之前,下载了一个版本,很老了,重新进行更新又不得行,再加上公司的产品线路需要了解chromium的相关知识,又加上疫情封控在家,就又升起了下载并编译chromium源码的想法(其实在这些年的过程中都尝试过下载,但由于各种原因(外网经常被封等)没有下载成功)。
刚开始,一直按照官网上的介绍文档(https://chromium.googlesource.com/chromium/src/+/main/docs/windows_build_instructions.md)来进行代码的迁移,但始终在迁移代码时,会遇到git外网下载中断的问题,又要重新开始,很麻烦。后面经过查询资料,现在的chromium源码迁移到git上面了,而国内的电信网络访问git时没有问题的,因此萌生了一种替代的想法,在经过下载测试的过程中,竟然能行,因此记录一下成功的下载(大概经历了6-7天才搞完)。
Chromium是一款来自 “The Chromium Project” 的开源图形网络浏览器,基于Blink渲染引擎。它也是商业软件 Google Chrome 浏览器得以组成的基础。目前Chromium分为4个版本(详见https://www.chromium.org/getting-involved/dev-channel/):
首先是根据可官方文档中的说明,在下载Chromium源代码之前,需要能够访问chromium的官网(即FQ),然后就是系统需要满足一定的要求,我这里使用的是Windows系统,就按照Windows的要求来做,另外我使用的WireGard工具来访问google。
depot_tools是Google官方提供的一个用来checkout、compile、run和submit的工具集,它主要用于管理与 Chromium 源代码存储库和 Chromium 开发过程中需要安装的编译工具。它可以更好的帮助我们学习和调试Chromium代码。有关它的详细介绍详见:https://www.chromium.org/developers/how-tos/depottools/#introduction。
windows环境下,有两种方式可以下载该工具:
1、在浏览器中输入https://storage.googleapis.com/chrome-infra/depot_tools.zip,即可下载depot_tools工具;
2、使用git命令将该工具迁移到指定的目录,使用的命令行如下:
` git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git`
下载完成后,则将depot_tools的路径设置到系统环境变量中,我的设置路径如下图所示:
设置完环境变量后,按照同样的方式要设置DEPOT_TOOLS_WIN_TOOLCHAIN的环境变量并设置为0.这个环境变量是告诉depot_tools是使用本地安装的Visual Studio。要不然depot_tools会使用一个google-internal版本。环境变量如下图所示:
然后还要根据电脑上安装Visual Studio版本来设置一个环境变量,来告诉depot_tools使用的是哪一个版本。由于我电脑上安装的是VS2022,因此我的环境变量如下图所示:
环境变量配置完成后,则打开命令提示符,输入gclient命令,用于安装处理代码所需的所有Windows的工具,包括msysgit和python。
然后新建一个chromium目录,并在命令提示行工具中导向这个目录。
注意,这里就不用按照官方文档的命令fetch chromium去下载源代码了(就算是FQ,国内也很难下载下来),这里我使用的是git命令去git服务器去下载代码(这一部分可以不用FQ,国内也能下载,且速度不差),命令如下:
git clone "https://github.com/chromium/chromium.git"`
等待上面的命令执行完成(根据网速来,我这里大概1-2小时下载完毕),并下载完成后,会产生一个chromium的目录,该目录上包含了chromium的源代码。然后将该目录的名字修改成src,就相当于源码下载完成。但这个下载没有下载windows下的各种依赖、三方库等的源码,因此,在该目录,运行下面的命令(z该命令需要FQ):gclient sync --jobs 16,来下载对应的依赖库。这里下载失败了,就始终去运行这个命令,然后就会下载成功。下载成功后,我的目录结构如下图所示:
Chromium使用Ninja作为其主要的构建工具,以及一个名为GN的工具来生成文件。
如果不需要产生sln文件,就使用如下的命令来产生对应的编译文件:
gn gen out/Default/X64
然后使用以下的命令来产生对应的chromium的运行程序:
autoninja -C out\Default chrome
因为我要产生sln文件并进行代码调试,我使用以下的命令来产生sln文件(备注:这里的终端建议使用管理员身份运行)。产生后的文件夹列表如下图所示:
gn gen --ide=vs out/Default/X64
产生文件夹成功后,会有10902个项目,编译起来也是个大麻烦。我一开始编译(我的电脑16G内存,被占的满满的)并编译了8-9小时,建议晚上编译,白天会工作不了。我的电脑用vs2022打开整个项目,如下图所示:
无论上面两种哪一种进行编译,然后进行exe运行,运行结果如下图所示:
1、https://chromium.googlesource.com/chromium/src/+/main/docs/windows_build_instructions.md