本文已首发于: 秋码记录
说在前面的话
或许你在看到文章标题中的windows8.1
,难免会让你望而却步
。
谁说不是呢!毕竟按chromium官方文档
要求,win8.1
是达不到编译 chromium
高版本的要求的。
但不管怎么样,我的win8.1
电脑最终还是编译出了chromium
,足以说明win8.1
系统编译chromium
是可行的。
虽然在编译
期间,占有了电脑大量使用时间,好在我都是在白天出门前,电脑开着让它静静
地build
。
让我庆幸的是,在那漫长的编译过程
中,竟没有因error
huofailed
而中断,就连warning
也是瞧不见身影。
编译
途中出现error
或failed总是
再所难免`的,但却平添了我们去解决该问题的时间。
下载 chromium 源码
据Chromium
官方文档来看,是需要至少100G
的空闲磁盘
,为此,我查看电脑里的几个盘,最终还是选择了C
盘,清理了很大一部分空间出来,也就是你现在看到的下图这般。

新建一个名为chromium
的文件夹,名字你可以随意起,这个倒无所谓的!

chromium 官方文档
是通过fetch chromium
来下载代码,但是这种下载是chromium
最新代码,还包括历史log
,虽然可以带上--no-history
参数,它终究还是拉取最新代码。
在当前文件夹内,空白地方鼠标右键
,再弹出的选项列表里,选择Git Bash here
,再弹出的对话框中输入以下命令。
- 第一种方案:
bash
git clone --depth 100 -b 103.0.5060.68 https://chromium.googlesource.com/chromium/src.git src
直接从chromium 官网
拉取源码,下载的速度取决于
你的网络
。
- 第二种方案(我采取这种方案,为的是节省
网络流量
):
bash
git clone --depth 100 -b 103.0.5060.68 https://gitee.com/mirrors/chromium.git src
# 还原git仓库地址
cd src
git remote set-url origin https://chromium.googlesource.com/chromium/src.git
cd ..
参数说明:
--depth 100
意思是拉取深度为100
,这将会拉取一些log
,因为编译脚本会基于仓库的log
反查版本发布时间。如果这个值太小,可能会查不到,因而报错。所以,建议设为100
或更大些。或者,直接去掉这个参数,但这样将拉取全部的log
,特别慢。-b 103.0.5060.68
指定拉取的tag
版本。
不管你采取了那种方案,在git
或cmd
总是要设置好网络
,至于怎么设置网络
,可以查看秋码记录,这里将不再赘述,毕竟后面同步第三方依赖
,是必须要用到网络
的!
若你的电脑安装过了git
工具,可以在Git Bash
,输入上述任何一种方案。

假使你电脑没安装过git
,那么直接在cmd
中,输入上述任何一种方案。

生成 .gclient
文件
其实,这一步骤在Chromium
文档里是没有的,之所以需要手动来生成.gclient
这个文件,那是由于我们在拉取chromium
代码时,是指定了版本号
,拉取时不会自动生成这个文件。
而Chromium
文档上使用fetch chromium
命令来拉取
代码后,会在当前文件夹自动生成一个src
文件夹和.gclient
文件,虽然可以加上--no-history
参数来排除历史记录,但它拉取
的总是最新的chromium
代码,或许不支持你当前的系统,故而我选择了一个特定版本。
bash
gclient config --unmanaged https://chromium.googlesource.com/chromium/src.git
执行完上述命令后,在于src
文件夹同级下,自动生成了一个.gclient
文件。


同步第三方依赖
若你的网络
还算可以的话,按照chromium 文档
的拉取方案,且拉取过程中没有中断过,是不需要这一步的。
而你若采取的跟我一样的方案,那么这一步骤是必不可少的,这也就是我为什么说,你最终还是要设置好网络
原因所在了。
bash
gclient sync
执行指令后,要下载几个 G
的依赖包,比较慢,窗口也会输出 Still working on
的提示,防止假死被误关:

这当中可能需要耗费几个小时
,它的快慢
取决于你的网速快慢。
当然咯,gclient sync
过程中出现了很多error
和failed
,我将另外撰写一篇关于在windows下编译chromium出现的问题汇总
,这里将不再叙述。
你把error
或failed
给解决了,依旧在cmd
执行gclent sync
命令继续下去。
gclient sync
执行期间,你可以出门去逛逛商场、爬爬山、或去电影院看场电影。
等你回来是,看到跟下图一样的话,那么说明gclient sync
命令执行成功了。
