目录
[1. 前提与结论](#1. 前提与结论)
[2. 基础情况(版本、位置、体积)](#2. 基础情况(版本、位置、体积))
[2.1 体积(实测)](#2.1 体积(实测))
[3. 源码下载遇到的问题](#3. 源码下载遇到的问题)
[3.1 常见问题(以后换机器也会碰到)](#3.1 常见问题(以后换机器也会碰到))
[3.2 踩过的坑](#3.2 踩过的坑)
[4. 首次编译](#4. 首次编译)
[4.1 编译配置](#4.1 编译配置)
[4.2 遇到的问题与处理](#4.2 遇到的问题与处理)
[4.3 首次全量编译时长](#4.3 首次全量编译时长)
[5. 改浏览器:分层编译](#5. 改浏览器:分层编译)
[5.1 层对照](#5.1 层对照)
[5.2 和「最快编译」匹配的改法](#5.2 和「最快编译」匹配的改法)
[5.3 改代码时的注意事项](#5.3 改代码时的注意事项)
[6. 开发内容差异](#6. 开发内容差异)
[7. 磁盘清理注意事项](#7. 磁盘清理注意事项)
[7.4 可以删 / 不能删(对照表)](#7.4 可以删 / 不能删(对照表))
[8. 汇总](#8. 汇总)
1. 前提与结论
本机设备:
处理器 Intel(R) Core(TM) i9-14900HX (2.20 GHz)
机带 RAM 32.0 GB (31.7 GB 可用)
图形卡 NVIDIA GeForce RTX 4060 Laptop GPU (8 GB)
Intel(R) UHD Graphics (128 MB)
系统类型 64 位操作系统, 基于 x64 的处理器
版本 Windows 11 家庭版 中文版
版本号 25H2
操作系统版本 26200.9168
测试结论:
从官方渠道 拿到 Chromium 源码并成功编译出可运行的 chrome.exe 。源码工作树约 26 GB ,首次全量编译 6 小时 51 分钟。之后改业务功能走增量编译,一般是分钟级,不用每次再等 7 小时。
如果关注「浏览中采集接口/网络、页面元素采集」,一般属于 Chrome 业务层 / 注入脚本 / 或 C# 外壳(分钟级编译) ,一般不必改 base/ 等底层头文件**(7小时级的编译)**。
2. 基础情况(版本、位置、体积)
| 项 | 内容 |
|---|---|
| 产品版本 | Chrome 154.0.8012.0(src/chrome/VERSION) |
| Git 远程 | https://github.com/chromium/chromium.git(Google 官方 GitHub 镜像) |
| 编译产物 | out\Release\chrome.exe |
| 工具链 | depot_tools(官方 chromium/tools/depot_tools) |
2.1 体积(实测)
| 路径 | 大小 | 说明 |
|---|---|---|
| src(不含 .git) | 26.08 GB,约 117 万文件 | 目测「三十来 GB」 |
| 官方压缩包 chromium-src.tar.gz | 1.38 GB | 可删,源码已解压 |
| depot_tools | 0.65 GB | 编译工具,勿删 |
| src\out\Release | 12.89 GB | 首次编译输出 + 增量编译缓存,勿删 |
| 整个 F:\chromiumDev | 约 38.3 GB | 源码 + 产物 + 工具 + 压缩包 |
| chrome.exe | 3.9 MB | 启动器,偏小是正常的 |
| chrome.dll | 434.1 MB | 真正的浏览器主体 |
说明:26 GB 是源码,不是装好的浏览器。编完后 out 另占约 13 GB(本次关了调试符号 symbol_level=0,比全符号小很多)。
3. 源码下载遇到的问题
官方推荐流程是:depot_tools → fetch chromium / gclient sync。国内访问 chromium.googlesource.com 的 git 大包极不稳定。
3.1 常见问题(以后换机器也会碰到)
- 磁盘必须是 NTFS,且剩余空间要按「源码 30GB + 编译输出数十 GB + 系统盘余量」预留。FAT32/exFAT 不行。
- 路径不要放在中文目录、不要太深。例如本机源码特意放到
F:\chromiumDev - 必须开长路径(本机已开 LongPathsEnabled)。
- Python 商店别名会抢走 python。要用 depot_tools 自带的 python3.bat。
- 必须本机 Visual Studio C++ 桌面开发 + ATL/MFC,且 SDK 版本要和这份源码一致。当前 main 要求 Windows SDK 10.0.28000。
- 国内 git 传输在约 200--270 MB 处频繁断开(RPC failed / curl 56 / early EOF),HTTP/2 更容易掉。
- 不要用 来路不明的「成品源码包」。
3.2 踩过的坑
| 问题 | 现象 | 处理 |
|---|---|---|
| googlesource fetch / git clone 大包失败 | 传到约 200--270 MB 掉线 | 全程走本地代理 127.0.0.1:7890,强制 HTTP/1.1;仍不够稳定 |
| 浅克隆 blob:none 只有目录没有文件 | 工作区空、chrome/browser 不存在 | 单文件 git cat-file -p 可用,但 50 万文件太慢 |
| git cat-file --batch 失败 | 部分克隆下 batch 报 missing / exit 128 | 放弃 batch,改为官方源码树归档 |
| 整目录 git checkout | 一次拉太大包,或 directory not empty | 不再整树 checkout |
| 最终成功的下载 | --- | 下载官方归档 https://chromium.googlesource.com/chromium/src.git/+archive/0795cc1....tar.gz(约 1.38 GB,约 5 分钟),解压到 F:\chromiumDev\src(约 6.5 分钟) |
| gclient sync 缺文件 | 解析 DEPS 时找不到某些版本文件 | 补齐 build/config 等由 gclient 写入的目录后重跑 |
| 解压两个测试文件名含特殊 Unicode | tar 报 Invalid empty pathname | 忽略;那是 web_tests,不影响 chrome 目标 |
下载阶段时间:
- 归档下载:(约 5 分 12 秒)
- 解压:(约 6 分 29 秒)
- gclient sync + hooks:(约 10 分钟)
Git 仓库元数据来自 GitHub 官方镜像(blob:none 克隆),文件内容与 googlesource 同一提交归档对齐,不是第三方网盘包。
4. 首次编译
4.1 编译配置
is_debug=false
is_component_build=false
symbol_level=0
blink_symbol_level=0
目标:autoninja -C out\Release chrome
使用本机 VS(DEPOT_TOOLS_WIN_TOOLCHAIN=0),而不是 Google 打包工具链。
4.2 遇到的问题与处理
| 阶段 | 问题 | 处理 |
|---|---|---|
| gn gen | 找不到 include\10.0.28000.0\um | 当前 Chromium 154 硬性要求 SDK 10.0.28000(头文件里有 NTDDI_WIN11_BR)。本机原先只有 22621 / 26100 |
| SDK 安装脚本 | /features OptionId.WindowsSoftwareDevelopmentKit 无效 | 新版安装器没有这个功能名;改为图形界面或 /features + |
| SDK 安装路径 | Browse 灰色,不能改到 F 盘 | Windows Kits 必须跟已有 SDK 装在 C:\Program Files (x86)\Windows Kits\10\。体积约数 GB,当时 C 盘剩余约 60 GB,放得下。源码和编译输出仍在 F 盘 |
| 第一次 autoninja | icacls 输出按 UTF-8 解码失败(中文 Windows) | 将 testing/scripts/common.py 中该调用改为 encoding='mbcs';PYTHONUTF8 关掉。约 24 秒失败后于 20:39:13 重开 |
| 编译过程 | DIA SDK 头文件 overloaded-virtual 警告 | 可忽略,不是失败 |
4.3 首次全量编译时长
| 项 | 时间 |
|---|---|
| gn gen | 约 26 秒,32357 个目标 |
| 一次完整编译墙钟 | 6 小时 51 分钟 |
这是第一次从零编 chrome 目标的时间。不是以后每次改一行都要 7 小时。
编译后的目录非常大,占用空间 13G 左右,总文件数量大约 30万 左右:

编译后,包括中间的各种第三方依赖,整个独立目录占用空间大约 40G 左右:

编译后的文件(src\out\Release\chrome.exe),打开后效果(感觉比google的发行版本启动慢很多):

5. 改浏览器:分层编译
「最快编译」= 增量编译 :保留 src\out\Release,不改 gn --args,不 ninja -t clean。
5.1 层对照
| 层级 | 典型修改位置 | 增量编译 | 适合关注的数据 | 不适合 / 风险 |
|---|---|---|---|---|
| A. 外壳(已做) C# + WebView2 | 不改 Chromium | 秒~1 分钟(只编自己的 exe) | 网络(CDP Network.*)、页面元素(注入 JS:点击/输入/选择器)、自绘 HUD | 不是独立 chrome.exe;内核行为与系统 Edge WebView2 一致 |
| B. 注入 / 扩展 | 启动参数加载扩展;或固定注入脚本 | 常常不用重编 | 与 A 类似:XHR/fetch/页面 DOM 事件、自绘绿框 | 页面可用 CSP 限制脚本;看不到所有浏览器内部请求 |
| C. Chrome 业务层 | chrome/browser、浏览器 UI | 数分钟~十几分钟 | 标签、导航、部分网络事件、用户可见 UI | 不要把采集逻辑写进到处 include 的头文件 |
| D. Content 层 | content/browser、content/renderer | 十几分钟~1 小时+ | 更完整的导航、进程、部分网络与渲染进程消息 | 容易误伤多进程架构 |
| E. 网络栈 net/ | HTTP 事务、Cookie、代理 | 改 .cc 还好;改公共头文件会大范围重编 | 最全的请求/响应、时序 | 超过「页面 API」语义 |
| F. Blink 渲染 | third_party/blink | 改核心头文件接近再来一次小时级 | DOM/布局/命中测试最准 | 不需要为了「点了哪个按钮」去改排版内核 |
| G. base/、GN 参数、换 SDK | 底层或全量配置 | 接近首次 7 小时 | --- | 业务不应走这一层 |
5.2 和「最快编译」匹配的改法
- 最快:继续 WebView2。
- 若必须 chrome.exe:优先扩展/注入(B)或 chrome/browser 里加观察者 + 注入脚本(C),数据类型与现有 Demo 对齐:网络请求、点击/输入元素、选择器、文案。
- 尽量不要去改 base/、Blink 核心、net/ 公共头文件。
5.3 改代码时的注意事项
- 只改 .cc / .js,尽量不改被上百个文件 include 的 .h。
- 不要删 out\Release,不要改 is_debug / symbol_level 等 gn 参数。
- 中文 Windows 下脚本读系统命令输出要用系统代码页(本次 icacls 就是这个问题)。
- 编译时别让系统休眠。
- 二次开发目录与 Chromium 源码目录分开:业务工程在 一个目录,源码在一个目录。
6. 开发内容差异
使用嵌入浏览器组件,与源码变异的工作内容差异:
| 内容 | 量级感受 |
|---|---|
| 官方源码获取 + 依赖 + 环境(VS/SDK/代理) | 本机实际跨一下午到晚上(含网络与 SDK 安装器人工确认) |
| 首次成功编译 chrome.exe | 纯编译 6h51m;含环境问题排除则是 |
| 采集 Demo(WebView2:网络 + 元素 + 页内展示) | 与「改 Chromium 再编 7 小时」不是同一条路,迭代快 |
| 将同等能力做到独立 chrome.exe | 若走 B/C 层:每次验证编译多为分钟级;若走 D/E/F:人周起,且重编变长 |
| 指纹/反检测类需求 | 暂未尝试 |
- 「具备官方源码编译能力」≠「改一处功能再等 7 小时」。
- 7 小时是第一次全量;日常功能迭代取决于改到哪一层。
- 磁盘:源码 + 产物目前约 38 GB 在 F 盘;系统盘还要给 SDK、页面文件留余量。
7. 磁盘清理注意事项

首次完成编译后,虽然源码文件放在了F盘,但是C盘经过7小时的编译,导致C盘空间也被吞掉了 40 G 左右 (从原来的 65G 变成了26G )。清理文件时尤其要注意以下内容:
不是垃圾、不能当临时文件清掉的:
- out\Release:下次改代码能在几分钟内编完,全靠它。
- Windows SDK 10.0.28000 的头文件和库:没有它,gn gen 会再次失败。
- C:\Windows\Installer:系统用来记录「装过什么」,手删会留下残废安装。
算残留、可以清的:
- chromium-src.tar.gz
- winsdksetup.exe
- C:\Users\wanbi\AppData\Local\Temp\windowssdk
- 系统「存储 → 临时文件」里的临时文件、传递优化缓存
7.4 可以删 / 不能删(对照表)
| 动作 | 路径 | 大约能腾出 |
|---|---|---|
| 禁止 | src\out\Release | ---(会换回 7 小时全量编译) |
| 禁止 | Windows Kits\10\include\10.0.28000.0 与对应 lib | ---(以后编不了) |
| 禁止手删 | C:\Windows\Installer | ---(破坏 VS/SDK 卸载修复) |
| 可以 | chromium-src.tar.gz | 约 1.4 GB(F 盘) |
| 可以 | winsdksetup.exe | 很小(F 盘) |
| 可以 | Temp\windowssdk | 约 50 MB(C 盘) |
| 系统清理 | 设置 → 系统 → 存储 → 临时文件 | 视扫描结果 |
8. 汇总
- 源码是官方 Chromium 154.0.8012.0 ,工作树约 26 GB。
- 第一次编出 chrome.exe 用了 6 小时 51 分钟;以后改采集类业务功能,走增量,不必每次全量。
- 如果要网络/元素采集,优先在外壳或 Chrome 业务层做;尽量不要改底层头文件,尽量不去触发「每次编译 7 小时」。