魔改chromium——源码拉取及编译

魔改chromium------基础环境搭建

上一节在完成了基础环境搭建之后,这一节内容是将源码拉取到我们本地,为后续修改chromium源码做准备,这节内容非常漫长,速度快慢取决于你的网络和机器配置,如果网络和机器不好的话,编译和拉取代码的时间可能会超过十几个小时,拉取源码过程大约花了40分钟,机器上编译chromium过程花了6个多小时,才编译出chromium浏览器,所以,有一台好的机器和网络非常重要。

设置git全局环境变量

首先在新下载的powershell中执行以下命令,设置一下git全局环境变量,一行一行执行,本地代理端口号改成自己的即可

csharp 复制代码
git config --global http.proxy http://127.0.0.1:10808
git config --global https.proxy http://127.0.0.1:10808
git config --global http.sslVerify false # 禁用 HTTPS 请求的 SSL 证书验证
git config --global core.autocrlf false # 禁用换行符的自动转换
git config --global core.filemode false # 禁用 Git 对文件权限模式(如可执行权限)的检测
git config --global branch.autosetuprebase always # 控制新分支的默认行为,使其在拉取(pull)时自动使用 rebase 而不是 merge

这两个可以选择性开启
git config --global core.fscache true # 启用文件系统缓存功能
git config --global core.preloadindex true # 启用索引预加载功能

设置好了之后,在depot_tools同级目录中新建一个chromium目录

创建boto.cfg和设置boto.cfg

创建boto.cfg文件写入内容,本地代理的端口号proxy_port参数改成自己的就可以

ini 复制代码
[Boto]
proxy = 127.0.0.1
proxy_port = 10808

新增环境变量NO_AUTH BOTO_CONFIG,值为boto.cfg文件路径

拉取源码

设置好了之后,首先将powershell当前目录切换到我们新建的chromium目录,然后执行以下命令,就可以开始拉取源码了,本地代理的端口号记得改成自己的就可以

ruby 复制代码
$env:HTTP_PROXY="http://127.0.0.1:10808"; $env:HTTPS_PROXY="http://127.0.0.1:10808"

fetch --no-history chromium

拉取中的状态,如果你的网络不好,这将会是一个非常漫长的过程,需要耐心等待

拉取完之后会显示这个

拉取完之后,还会自动执行Hooks

当这2个都是百分之百,就说明成功了,下一步就可以执行编译了。

生成配置

在chromium目录下执行以下命令,设置生成配置

scss 复制代码
cd src && gn gen out/Default

编辑配置

执行成功之后,运行一下命令编辑配置

sql 复制代码
gn args out/Default

运行之后他会打开一个txt的文件,这里面就是写后面要编译的条件,这是官方的编译条件配置参考链接www.chromium.org/developers/...

将这些内容粘贴进去,然后运行

ini 复制代码
# 系统
target_os="win"
# 架构
target_cpu="x64"
# 是否开启调试
is_debug=false
# 不允许远程调试
enable_remoting=false
# 使用Chrome官方的编译优化建议
is_official_build=true
# 分散链接编译
is_component_build=false
#不使用官方API秘钥
use_official_google_api_keys=false
#不使用官方API秘钥
google_api_key=false
#不使用官方API秘钥
google_default_client_secret=false
#关闭支持NACL,这是一种Chrome插件,因为安全性,稳定性存在问题,已经很少使用了
enable_nacl=false
#支持H264编码
proprietary_codecs=true
#解码器
ffmpeg_branding="Chrome"
#使用无符号或最少符号实现更快的构建
symbol_level=0
#删除v8符号
v8_symbol_level=0
#删除WebCore符号
blink_symbol_level=0
#Chrome品牌标识和实验性标志
disable_fieldtrial_testing_config=true

之后可能会报这么一个错误

记事本打开chromium目录下的 .gclient 文件

将内容新增到这个位置

修改保存之后,根据前面报错日志中的提示,再运行一次以下命令

复制代码
gclient runhooks

gclient runhooks运行成功之后,再从之前的编辑配置步骤重新执行一下

编译chromium

以上都正常之后,就可以开始编译了,执行以下命令即可,这是一个非常漫长的过程,所以如果你是笔记本,请连接好你的电源,保证你的网络一直是畅通的,保持屏幕常亮,关闭所有杀毒软件的目录扫描,关闭所有会让你电脑息屏的软件

sql 复制代码
autoninja -C out/Default chrome

大约53000多个组件要编译,时间的话,需要几个小时到几十个小时不等,具体看你的机器配置,全程几乎跑满CPU,编译好了之后结果会生成在 chromium目录下的 src/out/Default 目录。然后运行chrome.exe, 正常之后,说明我们编译配置和编译环境是ok的,就可以到下一节膝盖源码的内容了

下一节就是修改chromium源码,实现一些我们想要实现的功能

相关推荐
佚名涙2 小时前
go中锁的入门到进阶使用
开发语言·后端·golang
qq. 28040339846 小时前
CSS层叠顺序
前端·css
喝拿铁写前端7 小时前
SmartField AI:让每个字段都找到归属!
前端·算法
猫猫不是喵喵.7 小时前
vue 路由
前端·javascript·vue.js
草捏子7 小时前
从CPU原理看:为什么你的代码会让CPU"原地爆炸"?
后端·cpu
嘟嘟MD7 小时前
程序员副业 | 2025年3月复盘
后端·创业
烛阴7 小时前
JavaScript Import/Export:告别混乱,拥抱模块化!
前端·javascript
bin91538 小时前
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例12,TableView16_12 拖拽动画示例
前端·javascript·vue.js·ecmascript·deepseek
胡图蛋.8 小时前
Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?
java·spring boot·后端
无责任此方_修行中8 小时前
关于 Node.js 原生支持 TypeScript 的总结
后端·typescript·node.js