魔改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源码,实现一些我们想要实现的功能

相关推荐
小二·9 小时前
Python Web 开发进阶实战:AI 原生安全防护 —— 在 Flask + Suricata 中构建智能网络威胁狩猎平台
前端·人工智能·python
葡萄城技术团队9 小时前
SpreadJS V19.0 新特性解密:设计器容器行列合计,让报表数据汇总更灵活
前端
晚霞的不甘9 小时前
Flutter for OpenHarmony:从零到一:构建购物APP的骨架与精美UI
前端·javascript·flutter·ui·前端框架·鸿蒙
Marktowin9 小时前
控制权限系列之(2)手把手教你使用基于角色的权限控制
后端
小二·9 小时前
Python Web 开发进阶实战:AI 原生硬件接口 —— 在 Flask + MicroPython 中构建边缘智能设备控制平台
前端·人工智能·python
ElasticPDF-新国产PDF编辑器10 小时前
基于 PDF.js 的 PDF 文字编辑解决方案,纯前端 SDK,跨平台、框架无关、Web 原生
前端·javascript·pdf
带带弟弟学爬虫__10 小时前
速通新Baidu Frida检测
前端·javascript·vue.js·python·网络爬虫
仙俊红10 小时前
Spring Cloud 核心组件部署方式速查表
后端·spring·spring cloud
好学且牛逼的马10 小时前
ES6 核心语法精讲
前端·ecmascript·es6
GISer_Jing10 小时前
一次编码,七端运行:Taro多端统一架构深度解析与电商实战
前端·aigc·taro