Windows编译Chromium浏览器
2023年11月17日参考链接
源码链接
源码链接(github)
构建文档链接(可以再源码下方找到相应的链接)
拉取教程
完整教程
指定版本安装
视频播放问题
chromium官方版本计划
准备
准备系统
可能需要调整windows系统至Unicode模式,具体方法如下(Win11):
- 设置
- 时间和语言
- 语言和区域
- 管理语言设置
- 更改系统区域设置
- 勾选使用Unicode UTF-8
- 重启
下载构建环境
前往构建文档链接,找到depot_tools
并下载。
运行一次gclient
更新环境:
gclient
visual studio需要准备一些环境,参考构建文档
需要为Windows SDK添加Debug Tools,可以在控制面板中设置
安装开发环境后,需要根据你安装的环境设置环境变量:vs2022_install, vs2019_install等
设置环境变量:
set vs2022_install=PATH_TO_VS
set PATH=/path/to/depot_tools;%PATH%
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
准备代理
准备代理,需要设置git代理和shell代理以及系统代理
git config --global http.proxy socks://127.0.0.1:10808
git config --global https.proxy socks://127.0.0.1:10808
set http_proxy=http://127.0.0.1:10808
set https_proxy=http://127.0.0.1:10808
创建一个.boto文件(可以不设置,可能会出现问题):
[Boto]
proxy = http://127.0.0.1:10809
设置环境变量:
set NO_AUTH_BOTO_CONFIG=/path/to/.boto
设置Git
需要设置以下内容:
git config --global core.autocrlf false
git config --global core.safecrlf true
git config --global core.filemode false
git config --global core.fscache true
git config --global core.preloadindex true
下载源码
通过代理拉取最新源码
运行以下代码拉取chromium代码
fetch chromium
如果只构建最新的代码,可以设置--no-history
fetch --no-history chromium
如果出现错误,运行以下命令同步:
gclient sync
拉取指定版本的源码:
gclient sync --revision src@GIT_COMMIT_OR_REF
可以带上-D选项删除无用文件
可以考虑使用--no-history
和,减少下载代码时间--shallow
带上–nohooks暂时不进行依赖注入
运行依赖注入:
gclient runhooks
在src目录下运行git rebase-update
可以从上游更新仓库。更新前应先切换到main
分支
git rebase-update
可以使用git map
命令查看是否更新到最新的状态
拉取指定版本源码
克隆
克隆代码
git clone --depth 100 -b xxx.xxx.xxx.xx https://chromium.googlesource.com/chromium/src.git src
–depth用于拉取一部分log
–b指定版本
更新不完整克隆的仓库
git fetch --depth 100 origin xxx.x.xxxx.xxx
git checkout xxx.x.xxxx.xxx
生成文件
gclient config --unmanaged https://chromium.googlesource.com/chromium/src.git
拉取依赖
gclient sync -D --nohooks
gclient runhooks
可以考虑使用--no-history
和,减少下载代码时间--shallow
配置编译
屏蔽缺少Google API KEY提示:
set GOOGLE_API_KEY="no"
set GOOGLE_DEFAULT_CLIENT_ID="no"
set GOOGLE_DEFAULT_CLIENT_SECRET="no"
快速编译可以参考以下命令:
gn gen out\Default --args="symbol_level = 0 blink_symbol_level = 0 v8_symbol_level = 0 is_debug = false"
但是这样可能无法播放视频,可以设置以下选项:
proprietary_codecs = true ffmpeg_branding = "Chrome"
既:
gn gen out\Default --args="symbol_level = 0 blink_symbol_level = 0 v8_symbol_level = 0 is_debug = false proprietary_codecs = true ffmpeg_branding = \"Chrome\""
如果需要更快的构建可以设置。当然不建议设置,这会在一定程度上影响浏览器的速度:
enable_nacl = false
可以添加以下内容作为正式版:
is_official_build = true
如果出错,但是有提示,可以按照提示信息完成设置
"custom_vars": {
"checkout_pgo_profiles": True,
},
其他选项可以查看构建文档来决定。
编译
运行以下命令:
autoninja -C out\Default chrome
生成安装包:
autoninja -C out\Release mini_installer
一些情况下,使用最新的gclient
编译chromium时,由于Python版本的变更,可能导致无法成功编译,可以试图将gclient的python版本回退到3.11前
shell windows参考
set PATH=XXX;%PATH%
set vs2022_install=XXX
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set http_proxy=http://127.0.0.1:10808
set https_proxy=http://127.0.0.1:10808
git config --global http.proxy socks://127.0.0.1:10808
git config --global https.proxy socks://127.0.0.1:10808
git config --global core.autocrlf false
git config --global core.safecrlf true
git config --global core.filemode false
git config --global core.fscache true
git config --global core.preloadindex true
git clone --depth 100 -b XXX.X.XXXX.XX https://chromium.googlesource.com/chromium/src.git src
gclient config --unmanaged https://chromium.googlesource.com/chromium/src.git
gclient sync -D --nohooks --no-history
gclient runhooks
gn gen out\Release --args="symbol_level = 0 blink_symbol_level = 0 v8_symbol_level = 0 is_debug = false proprietary_codecs = true ffmpeg_branding = \"Chrome\" is_official_build = true"
autoninja -C out\Release mini_installer -j16
运行
out\Default\chrome.exe
备注
可以根据需要修改chrome的代码来满足自己的需求。
禁用部分浏览器扩展的自动更新
修改的文件:
src/extensions/browser/updater/update_service.cc
修改函数:UpdateService::StartUpdateCheck
在循环内检测扩展id是否为需要禁用更新的扩展id,是则直接跳过更新
从源码关闭 google api 缺失检测
修改的文件:
src/chrome/browser/ui/startup/infobar_utils.cc
找到以下内容并注释即可:
if (!google_apis::HasAPIKeyConfigured()) {
GoogleApiKeysInfoBarDelegate::Create(infobar_manager);
}
[…] 源码链接 chrome源码链接 另一篇相关文章 […]