关于 Chromium

Chromium 是 Google 为发展浏览器 Google Chrome 而发布的自由开源软件, 以 BSD 许可协议等数种许可发行. Chromium 与 Google Chrome 共享大部分代码和功能, 但功能和商标之间有一些细微差别.

Google 基于 Chromium 开发 Chrome 浏览器, 后者具有更多功能. 除 Chrome 外, Microsoft Edge 和 Opera 等多种浏览器也基于 Chromium 开发. Chromium 的更新速度很快, 每隔数小时即有新的开发版本发布. 由于新功能会先在 Chromium 上测试, 等待认证后才会应用在 Google Chrome 上, 所以 Chromium 相当于 Google Chrome 的先行版.

Chromium 项目主页: https://www.chromium.org/
Git 仓库地址: https://chromium.googlesource.com/chromium/src.git
分支说明: https://chromiumdash.appspot.com/branches

编译 (针对 Windows 操作系统)

前置系统要求

  • 具有至少 8 GB 内存, 强烈建议超过 16 GB
  • 硬盘至少有 100 GB 的可用空间, Windows 上尽可能使用 NTFS 格式
  • 适当版本的 Visual Studio 和 Windows SDK, 后面会讲
  • 系统为 Windows 10 或更高版本

查询相关信息

不要直接使用 git clone 克隆仓库, 而是根使用下文的方法来获取代码
因为编译时依赖的第三方库并不在这个 git 仓库里, 需要使用专用工具来获取
而且, 由于 chromium 的代码量很大, 所以使用 git clone 会很慢, clone 失败也是很常见的事情

用浏览器打开 https://chromium.googlesource.com/chromium/src.git , 在左侧 Tags 列表找到你希望编译的版本的链接

例如, 103.0.5060.66 版本对应的链接就是 https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5060.66

根据指引, 最终找到 Windows 平台的构建说明页面: https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5060.66/docs/windows_build_instructions.md

因为不同的 tag 对 Visual Studio 和 Windows SDK 的版本要求可能不一样, 所以我们必须找到对应版本的编译说明页面

安装必要工具链

Visual Studio

需要安装 Visual Studio 2017 (>=15.7.2), 可以使用 Visual Studio 2019 (>=16.0.0) 推荐 Visual Studio 2022, 有时 VS 版本太高了也不行, 例如 Chromium 95 的编译不能用 VS2022

我自己安装的是 Visual Studio 2022 Enterprise, 下载地址: https://visualstudio.microsoft.com/downloads/

安装的时候, 左侧工作负荷中勾选 使用 C++ 的桌面开发, 右侧勾选 C++ ATL 生成工具 (全名可能是 适用于最新v143生成工具的 C++ ATL ...), 其他项默认就可以了, 若系统分区空间有限的, 可以调整 Visual Studio 安装位置

安装完成后请记得配置系统环境变量

变量名: vs2022_install
变量值: <你 VS 的安装位置>

其中,
变量名可选 vs2017_installvs2019_installvs2022_install, 根据你安装的 Visual Studio 版本来定
<你 VS 的安装位置> 形如: C:\Program Files\Microsoft Visual Studio\2022\Enterprise

Windows SDK

页面中要求安装 10.0.20348.0 这个版本的 Windows SDK, 下载地址是: https://developer.microsoft.com/windows/downloads/sdk-archive/

注意, 别下载错了, 必须安装指定版本的 SDK, 低了高了都不行!

安装的时候, 直接选默认项就行了, 确保勾选了 “Debugging Tools For Windows”

安装完成后记得设置环境变量

变量名: WINDOWSSDKDIR
变量值: <你 Windows SDK 的安装位置>

其中,
<你 Windows SDK 的安装位置> 形如: C:\Program Files (x86)\Windows Kits\10

depot_tools

depot_tools 是 Chromium 项目的辅助工具, 包含了一些用于获取代码, 编译代码的脚本

下载地址 https://storage.googleapis.com/chrome-infra/depot_tools.zip, 将其解压至某个目录

注意: 不要使用鼠标拖拽或复制粘贴, 否则其中 .git 目录可能不会正常复制过来, 请使用 zip 压缩包管理工具直接解压到目标目录

解压完成后, 将 depot_tools 目录添加到 PATH 环境变量. 确保要在你已经安装的 git 和 python 前面, 因为 depot_tools 内置了 git 和 python 包. 为了省事, 我直接把它放到最前面

当然, 是否要覆盖掉系统自带的 git 和 python, 这个取决于你自己, 一般来说也不会出现问题

还需要再添加一个环境变量 DEPOT_TOOLS_WIN_TOOLCHAIN, 其值为 0, 作用是让 depot_tools 使用本地安装的 Visual Studio 版本 (默认情况下, depot_tools 将尝试使用 google 内部版本)

取得源代码并编译

若要使用代理, 请执行以下代码 (仅在当前命令行窗口有效)
若要永久使用代理, 请将代理链接添加到系统环境变量中

1
2
set http_proxy=<proxy>
set https_proxy=<proxy>

其中, <proxy> 为你的代理链接地址

接下来, 在 depot_tools 目录下 (最好), 执行 gclient 命令初始化 (这个命令仅用执行一次)

此处假定你已经配置好了 git 选项, 例如你的用户名和邮箱, 否则请先配置

1
2
3
4
5
6
7
8
9
10
11
12
# 配置git用户名和email, 如已配置请跳过
git config --global user.name "My Name"
git config --global user.email "my-name@chromium.org"

# 检出代码时不自动转换换行符(为true时Windows下会将检出文件的换行符\n转成\r\n)
git config --global core.autocrlf false

# 忽略文件权限的变化
git config --global core.filemode false

# 所有的分支都支持rebase
git config --global branch.autosetuprebase always

接下来切换到你准备存储源代码与编译产物的目录, 执行以下命令

1
2
3
mkdir chromium && cd chromium
git clone --depth 100 -b 103.0.5060.66 https://chromium.googlesource.com/chromium/src.git src

  • --depth 100 意思是拉取深度为100, 这将会拉取一些 log, 因为编译脚本会基于仓库的 log 反查版本发布时间. 如果这个值太小, 可能会查不到, 因而报错. 所以, 建议设为 100 或更大些. 或者, 直接去掉这个参数, 但这样将拉取全部的 log, 特别慢.
  • -b 103.0.5060.66 指定拉取的 tag 版本, 如果不想编译指定版本可以直接拉取最新代码

拉取完成后, 执行以下命令来生成 .gclient 文件

1
gclient config --unmanaged https://chromium.googlesource.com/chromium/src.git

接下来, 执行以下命令来拉取所有第三方依赖

1
gclient sync

等同于

1
2
gclient sync --nohooks
gclient runhooks

执行指令后, 要下载几个 G 的依赖包, 比较慢, 窗口也会输出 "Still working on" 的提示, 防止假死被误关

根据自身网络环境不同, 下载完成可能需要几个小时, 请耐心等待. 如果执行意外中断, 可以重复执行上述指令继续下载

进入 chromium/src 目录编译

1
gn gen out\Default

该命令生成调试版的 chromium 浏览器, 持续时间可能会比较长, 请耐心等待
若中途意外中断, 可以使用 autoninja -C out\Default chrome 命令继续编译

生成完成后可以运行 src\out\Default\chrome.exe 来启动 chromium, 关于中显示为开发者内部版本

若要编译正式版浏览器, 仍然进入 src 目录

执行

1
gn args out\Release

弹出一个记事本文件编辑框, 让我们输入编译参数, 填写:

1
2
3
4
5
target_os="win"
target_cpu="x64"
is_component_build=false
is_debug=false
is_official_build=true

保存后会报错, 根据提示再 .gclient 文件中添加配置项 "checkout_pgo_profiles": True

然后执行 gclient runhooks 拉取依赖, 完成后, 重新执行 gn args out\Release
最后, 执行 autoninja -C out\Release mini_installer 编译.

可在 out\Release\mini_installer.exe 得到安装程序