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

魔改chromium——基础环境搭建

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

设置git全局环境变量

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

    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参数改成自己的就可以

[Boto]
proxy = 127.0.0.1
proxy_port = 10808

在这里插入图片描述

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

在这里插入图片描述

拉取源码

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

$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每个文件夹大概作用的介绍

目录名称描述
android_webview集成 Android 平台的外观展示
apps参考如何构建 Chrome 应用程序
ash包含了 Chrome OS 的窗口管理器和其他用户界面相关的代码
baseChromium 中的基础库,包含了许多通用的数据结构、工具函数等
build包含了构建 Chromium 时使用的脚本和配置文件
build_overrides用于存放特定配置或定制化构建所需的构建脚本和覆盖文件
buildtools用于构建和编译 Chromium 项目的工具和脚本
ccChromium 的渲染合成层
chrome这个目录包含了 Chrome 浏览器特定的功能和 UI,如书签、扩展程序、设置等
chromecast与 Google Chromecast 相关的代码和功能
chromeos负责 Chrome OS 相关的功能和特性
codelabs用于存储代码示例、教程和演示性的实验项目
components用于存放浏览器各种组件,如 PDF 渲染器、插件系统、媒体播放器
contentChromium 内层的代码,包含了浏览器核心功能,例如网络通信、多媒体处理等
courgette数据压缩和差分算法相关的代码
crypto用于处理加密和密码学相关操作,包含各种加密算法的实现和安全相关的功能
dbus用于处理 D-Bus(Desktop Bus)相关功能的部分
device提供跨平台底层硬件 API 抽象层
docs用于存储各种文档、说明和指南,通常用于开发者、贡献者或者维护者参考
extensions用来存放浏览器扩展(Extensions)相关代码
fuchsia_web为 Fuchsia 操作系统提供支持的一部分
gin一个用于实现 JavaScript 和 C++ 之间的互操作的库
google_apis用于存储与 Google API 相关的代码和配置
google_update负责处理 Google 更新相关的功能
gpuChromium 的 GPU 加速相关的代码,用于提高浏览器的性能
headless实现 Chromium 的无头(headless)模式
infra存储与基础设施、自动化测试以及持续集成/持续部署(CI/CD)相关的代码和配置文件
internal存放一些内部工具、测试或者辅助代码,而不是直接与浏览器的核心功能相关
ios存储与 iOS 平台相关的代码和资源
ios_internal存储与 iOS 平台相关的内部实现代码和工具
ipc用于实现进程间通信(IPC)的关键组件之一
mediaChromium 的媒体框架,包括音频和视频播放等功能
mojo一个跨进程通信框架,用于在 Chromium 浏览器的不同进程之间进行高效的通信
native_client存放 Native Client(NaCl)相关代码的地方
native_client_sdkNative Client 的软件开发工具包(SDK)
netChromium 开发的网络库,使用 WebKit 下的 test_shell 时可以单独使用
out编译输出的目录
pdfPDF 文档相关的代码和功能
ppapiPepper 插件 API(PPAPI)的实现
printing处理打印相关的功能
remoting包含与远程桌面相关的代码
rlz处理 RLZ(Referrer Language Zwiebelbrot)相关功能
sandbox包含了 Chromium 的沙盒功能,用于增强浏览器的安全性
services包含了 Chromium 的后台服务代码,处理一些后台任务和服务
signing_keys用于存储签名密钥相关的文件
skiaChromium 浏览器对图形处理的基础支持,如 2D 图形渲染、图像处理等
sql提供 SQLite 相关的模块
storage数据存储和持久性相关的代码,提供了与本地数据交互的功能
styleguide存放代码风格指南和规范的相关文件
testing包含了 Chromium 的测试代码,用于自动化测试和测试框架
third_party包含了 Chromium 使用的第三方库和工具,如 Skia、WebRTC、SQLite 等
tools包含了用于开发、测试和调试 Chromium 的工具和脚本
ui包含了 Chromium 的用户界面相关的代码,包括窗口、UI 控件等
urlGoogle 开源的 URL 解析和规范库
v8Google 开发的一款基于 JavaScript 的解释引擎
webkit将网页内容转换为可视化的页面,并提供与用户交互的基础功能,用来解析 HTML/CSS 等

生成配置

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

cd src && gn gen out/Default

在这里插入图片描述

编辑配置

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

gn args out/Default

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

在这里插入图片描述

将这些内容粘贴进去,然后保存并关闭记事本,他就会自动执行接下来的操作

   # 系统
   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

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

autoninja -C out/Default chrome

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

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值