清华大学《Chromium指纹浏览器开发教程》固定版本拉取、编译、调试、打包全过程记录

21.Chromium指纹浏览器开发教程之触摸屏点指纹定制 Chromium指纹浏览器开发教程之触摸屏点指纹定制 阅读详情

参考文档

https://chromium.googlesource.com/chromium/src/+/main/docs/windows_build_instructions.md

系统要求

  • 一台配备至少 8GB 内存的 x86-64 机器。强烈建议使用 16GB 以上的内存。
  • 硬盘上至少需要 100GB 的可用空间,且硬盘格式必须为 NTFS。FAT32 格式不适用,因为部分 Git 包文件大于 4GB。
  • 如下所述的合适版本的 Visual Studio。
  • Windows 10 或更高版本。

100G 硬盘,还得让vs2022装在C盘,如果你没搞个1T的系统盘,还真不好弄,编译完成后能达到200G左右,所以想玩这个先把C盘更换为1T的NVME,否则再加上CPU垃圾,编译能搞一天

安装VS2022

官网现在下不了vs2022 社区版,自己网上搜,这个百度云给一个

通过网盘分享的文件:VisualStudioSetup.exe
链接: https://pan.baidu.com/s/1-JqUnGqMSlu3zlL48uT-Cg?pwd=92de 提取码: 92de 
--来自百度网盘超级会员v9的分享

下面的C++桌面开发库依赖我截图了,完全按书上来的

书上当时还是c++ clang 17.0.3 我们这里变成了19,但是我们编译的 chromium 19 依赖clang 17,所以直接用visual studio 编译不了,会报clang 语言不能低于19,但是用 autoninja 不会有这个问题,ninja 用chromium自带的clang 编译器,没有这个要求

下载 Windows 11 SDK

我使用vs2022默认自带的10.0.22621.0 SDK(如上图),编译后也没啥大问题,书本要求的SDK找不到了

https://learn.microsoft.com/zh-cn/windows/apps/windows-sdk/downloads

安装完后,找这些SDK的路径啥的,一定要用everything工具,否则找死人

Chromium 源码对应的SDK版本是那个?这个在源码中是写死的,可以按照这个来下载对应的SDK,找不到完全匹配的也没关系,只要第三位匹配即可,第四位是bug修复而已

安装SDK时,记得勾选 Debugging Tools for Windows,如果不小心忘了,只能卸载后重装

下载 depot_tools 

下载地址:https://storage.googleapis.com/chrome-infra/depot_tools.zip,下载完毕后,放在你想要编译的文件夹下,然后将这个路径追加到环境变量Path里面去,可以让cmd找到相应的可执行文件和命令

另外环境变量要配置 DEPOT_TOOLS_WIN_TOOLCHAIN=0,意思是使用本地工具链编译的意思

同时把vs2022的软件地址也配置到系统变量里

vs2022_install=xxxxx\2022\Community (自己也用everything搜索吧)

具体讲解(AI)

在编译 Chromium 时,DEPOT_TOOLS_WIN_TOOLCHAIN=0 是一个非常关键的环境变量。简单来说,它决定了编译系统是**“吃官方提供的外卖”还是“用你自己厨房里的灶台”**。


核心作用:禁用 Google 预置工具链

1. 默认逻辑:Google 托管工具链 (=1 或未设置)

默认情况下,Google 的 depot_tools 倾向于维持一个高度受控的环境。

  • 自动化: 当你运行 gclient runhooks 时,它会尝试从 Google 的服务器下载一个特定版本的 Visual Studio 和 Windows SDK 的压缩包。

  • 一致性: 这样可以确保全球所有的 Chromium 开发者使用的编译器(MSVC/Clang)和 SDK 版本完全一致,避免因为你本地安装了不同版本的 VS 而导致编译出来的二进制文件有差异。

  • 局限: 这个功能通常只对 Google 内部员工或拥有特殊访问权限的人开放(或者是针对特定的开源版本有条件的自动化)。对于普通开发者,往往会因为没有权限下载这个包而报错。

2. 你的选择:使用本地工具链 (=0)

当你设置 DEPOT_TOOLS_WIN_TOOLCHAIN=0 时,你是在告诉 depot_tools:

“不要去网上下载工具链了,直接用我电脑上已经安装好的 Visual Studio 和 Windows SDK。”


为什么要设置它?(意义所在)

对于像你这样在自己 Windows 环境下编译的开发者,设置这个参数通常是强制性的,原因如下:

  • 权限问题: 如前所述,大多数外部开发者无法通过 depot_tools 自动获取 Google 打包好的工具链。

  • 版本控制: 你可以灵活地在自己的机器上安装特定版本的 Visual Studio(如 VS 2022)和对应的 SDK 版本。

  • 节省空间与带宽: 既然你已经手动安装了几个 GB 的 VS 和 SDK,就没有必要让脚本再去尝试下载一份重复的、可能还下不下来的备份。


设置后的连锁反应

当你声明了 =0 之后,Chromium 的构建系统(GN/Ninja)会启动自动搜索模式:

  1. 自动寻找 VS: 它会在默认路径(如 C:\Program Files\Microsoft Visual Studio\2022\Community)下寻找编译器。

  2. 验证版本: 它会检查你本地的 SDK 版本是否符合源码中 src/build/config/win/visual_studio_version.gni 等文件要求的最低版本。

  3. 依赖报错: 如果你本地没装 SDK,或者版本太低,设置 =0 后运行 gn gen 就会直接弹回错误,提示找不到特定的 SDK 版本。


操作指南

如果你要在 Windows 上开始编译,通常的操作步骤是:

第一步:设置环境变量

在 CMD 中:

set DEPOT_TOOLS_WIN_TOOLCHAIN=0

或者在 PowerShell 中:

PowerShell

$env:DEPOT_TOOLS_WIN_TOOLCHAIN=0

第二步:配合必要的“寻找”参数

有时候仅仅设置 =0 还不够,你可能还需要告诉系统你的 VS 装在哪(如果是非默认路径):

DOS

set vs2022_install=C:\Path\To\Your\Visual Studio

总结

模式DEPOT_TOOLS_WIN_TOOLCHAIN行为适用人群
托管模式1 (默认)尝试从 Google 下载专用 VS/SDK 包Google 员工或特定 CI 环境
本地模式0强制使用本地安装的 VS 和 SDK绝大多数外部开发者(包括你)

下一步建议:

既然你已经了解了这个参数,建议你在执行 gn gen out/Default 之前,先确认你的 Windows SDK 已经安装了 "Debugging Tools for Windows",这是本地编译最容易漏掉的一个组件。

需要我帮你写一个检查本地环境是否就绪的脚本吗?

配置 gclient

gclient 是一个 git 多仓库管理器,git是针对一个仓库的管理,gclient是针对多仓库的相互依赖,编译过程,控制依赖顺序等。

gclient config https://github.com/森哥/my-electron-project.git

这个命令可以在当前文件夹下面创建一个src文件夹,用来存放源代码,同时还会生成一个 `.gclient` 文件,里面存放一些配置信息,这里配置的仓库是一个超级仓库,里面会有个其他仓库的依赖文件

gclient config https://chromium.googlesource.com/chromium/src.git

再配置一个缓存文件夹,这个缓存文件夹是啥意思呢?

因为gclient是管理多仓库的,既然是多仓库,那么每个仓库可能依赖的库是相同的库,比如v8,那么这个v8就不用每个仓库都拉一份,只要有1个下载完后,那么其他仓库只需要将位置指向git_cache/v8 即可,这样就大大节省了流量和重复下载的次数

gclient config --cache-dir C:\chromium119\git_cache

拉取具体版本的chromium

若你中途闪退导致代码下载不完整,建议你重新执行下面这个命令,如果去掉 --revision 这个参数,很可能导致版本对不齐

这里src就是指当前文件下的src目录,@119.0.6045.123 是说这个仓库的代码要对齐 `119.0.6045.123` 这个版本

gclient sync --revision src@119.0.6045.123 --with_tags --with_branch_heads

gn 生成执行清单

# 记得要在src目录里面执行这个命令才可以
gn args out/debug

其他参数请参考 https://blog.youkuaiyun.com/wangsenling/article/details/157469326

is_debug = true
enable_nacl = false  # 禁用NativeClient,加快构建速度
target_cpu = "x64" # 将目标CPU架构设置为x64
is_component_build = true  # 启用组件构建,而不是打成一个整体包,避免最后的长连接步骤
symbol_level = 1           # 节省磁盘空间
proprietary_codecs = true # 启用专有的音视频编码器支持,启用后,Chromium将能够解码和播放一些专有格式的音视频文件,如 H.264

autoninja 就可以编译了

这里的 chrome 的意思,是chrome浏览器源码仓库的意思,因为拉下来的代码可多了,有v8,安卓浏览器,最小安装版本啥的,所以这里要指定就编译 chrome 即可,想知道还有哪些参数,看  https://blog.youkuaiyun.com/wangsenling/article/details/157469326

autoninja -C out/debug chrome

编译发布版本

1. 需要一个密钥key,同时修改 gn args 参数,密钥需要去google cloud——>APIs & Services——>Credentials

is_debug = false
enable_nacl = false  # 禁用NativeClient,加快构建速度
target_cpu = "x64" # 将目标CPU架构设置为x64
is_component_build = false  # 启用组件构建,而不是打成一个整体包,避免最后的长连接步骤
proprietary_codecs = true # 启用专有的音视频编码器支持,启用后,Chromium将能够解码和播放一些专有格式的音视频文件,如 H.264
ffmpeg_branding="Chrome"
is_official_build=true
google_api_key="xxx"
goolge_default_client_id="xxx"
google_default_client_secret="xxxx"


未完待续

20.Chromium指纹浏览器开发教程之屏幕信息指纹定制 Chromium指纹浏览器开发教程之屏幕信息指纹定制 阅读详情

相关推荐

13.Chromium指纹浏览器开发教程之canvas指纹定制

Chromium指纹浏览器开发教程之canvas指纹定制

浏览器开发教学 1862

【202211】国内镜像源地址

Ubuntu、Python、Nodejs、MySQL、Git、Chromium、Docker、Homebrew 等一系列的常用最推荐的镜像源。可能是最好的国内镜像站,最吸引人的特点是1)帮助文件最全面最好用;2)镜像源数量最多。也有个别其他镜像源没有的,比如 ChromeDriver,似乎在其他镜像站没找到过。不足之处是镜像源数量较少,比腾讯源少,很多软件目前都没有,比如 GitLab。软件数量和帮助文件尽管略逊于清华源,但还不错了,比阿里源好不少。软件数量还行,比阿里源多。

人在电子厂,已经码到失联 7971

指纹浏览器开发第一步- Chromium 编译教程(Windows)

本教程详细介绍了如何在 Windows 系统上从源码编译 Chromium 浏览器,涵盖了系统环境准备、Visual Studio 和 Windows SDK 的安装、depot_tools 配置、源码下载、GN 构建、Ninja 编译以及生成安装包等全流程。文章参考了 Chromium 官方文档,并结合国内开发者常见的网络环境提供了科学上网和代理配置技巧,确保能够顺利拉取代码并完成编译。

2501_91594820的博客 1780

虚谷号主机模式实战:从单板机到桌面电脑的完整配置与优化指南

单板计算机(SBC)凭借其低功耗、高集成度和丰富的硬件接口,在嵌入式开发、物联网和教育领域广泛应用。其核心原理在于将完整的计算机系统集成于一块主板上,通过Linux操作系统提供软件生态支持。这种架构的技术价值在于,它能够在特定约束条件下,将硬件控制与通用计算能力相结合,为原型开发、教学演示和轻量级应用提供高性价比的解决方案。应用场景涵盖从传感器数据采集、边缘计算到交互式学习终端等多个方面。本文聚焦于将虚谷号这类单板机配置为独立的桌面主机,深入探讨其系统选型、性能调优及硬件桌面化集成等工程实践,其中涉及对GP

weixin_30701575的博客 624

Seelen UI:Rust+Tauri打造的Windows平铺窗口管理器,GitHub 18000+ Star

平铺窗口管理器是一种将窗口自动排列、避免重叠的桌面环境工具,能显著提升多任务处理效率。其原理是通过系统级API实时控制窗口位置与大小,结合快捷键和工作区实现键盘流操作。在Windows平台上,这类工具长期稀缺,而Rust与Tauri的技术组合带来了轻量、高性能的新可能。Seelen UI正是这一方向的代表项目,它用Rust处理底层窗口逻辑,Tauri构建界面,内存占用仅80-120MB,并支持自定义顶栏、启动器与多种平铺布局。对于需要同时操作多个窗口的开发者或效率爱好者,它提供了一套可深度定制的桌面效率方案

weixin_34268579的博客 312

10.Chromium指纹浏览器开发教程之定制命令行传参

Chromium指纹浏览器开发教程之定制命令行传参

浏览器开发教学 1874

指纹浏览器自定义开发实战:内核改造与 API 集成技术指南

在跨境电商、广告投放、自动化测试等场景中,通用指纹浏览器往往难以满足个性化业务需求。对于开发者而言,基于开源内核二次开发自定义指纹浏览器,能实现更精准的指纹控制、更灵活的环境配置与系统集成。本文从技术实操角度,详解指纹浏览器的自定义开发流程,包括内核改造、指纹参数定制、API 对接等核心环节,助力开发者快速落地定制化解决方案。内核基础优先选择 Chromium(推荐版本 120+),其生态成熟、文档丰富,支持 Windows、macOS、Linux 多平台适配;

2501_94224099的博客 627

6.Chromium指纹浏览器开发教程之源码目录详解

Chromium指纹浏览器开发教程之源码目录详解

浏览器开发教学 1103

PDF view | Chrome PDF Viewer |Chromium PDF Viewer等指纹修改

修改下String filename = "internal-pdf-viewer-jdtest";

杰克东的专栏 1160

3.Chromium指纹浏览器开发教程之chromium119版本源码拉取

Chromium指纹浏览器开发教程之chromium源码拉取

浏览器开发教学 1281

Ubuntu零基础入门到精通【5.3讲】: 彻底搞懂 apt、apt-get 与 dpkg 的区别——Ubuntu 包管理体系全面解析!

🏆 本文收录于 《滚雪球学 Ubuntu》 专栏。 本专栏面向有一定计算机基础,但尚未系统学习 Linux / Ubuntu 的读者,采用“滚雪球式学习法”:先装好、再会用、再理解、再优化、再实战,带你从第一次进入 Ubuntu 桌面 / 终端开始,逐步掌握 Ubuntu 的日常使用、命令操作、软件安装、系统配置、开发环境搭建与服务器部署能力。

**My Coding Family** 1184

12.Chromium指纹浏览器开发教程之RendererProcessHost传递

Chromium指纹浏览器开发教程之RendererProcessHost传递

浏览器开发教学 1153

【指纹浏览器开发】Chrome浏览器二次开发与Chromium源码编译指南:Windows平台环境搭建及优化技巧

内容概要:本文档详细介绍了在 Windows平台上检出和构建 Chromium浏览器的完整流程,包括系统要求、环境配置、代码获取、构建设置以及优化建议。首先明确了硬件和软件需求,如内存、磁盘空间、Visual Studio版本等。接着阐述了如何安装和配置必要的开发工具,如 Git、depot_tools等,并指导读者完成 Chromium源码的检出。文档还提供了多种优化构建速度的方法,包括调整 GN参数、使用 sccache、Reclient等工具。最后,讲解了如何运行浏览器、执行测试以及生成安装包,并简要介绍了在 Visual Studio中编辑和调试 Chromium的方法。 适合人群:具备一定编程基础,尤其是对 C++和 Windows开发环境有一定了解的研发人员,以及对浏览器底层技术感兴趣的开发者。 使用场景及目标:①帮助开发者在本地环境中搭建 Chromium开发环境,进行二次开发或定制化开发;②提高构建效率,减少构建时间和资源消耗;③为开发者提供详细的调试指南,方便排查和解决问题。 其他说明:本文档适用于 Windows平台,提供了详尽的操作步骤和命令行指令,确保开发者能够顺利地完成 Chromium的编译和调试。同时,针对常见的构建问题给出了具体的解决方法,帮助开发者克服可能遇到的技术障碍。此外,文档还提到了一些优化技巧,如启用 fsmonitor、untracked cache等,进一步提升开发体验。

【教程】新的Selenium!整合了隐藏浏览器指纹等功能

很好用的一个库

xfxuezhang.cn 7531

基于 C++ chromium 开发的指纹浏览器工具.zip

基于 C++ chromium 开发的指纹浏览器工具 C++是一种广泛使用的编程语言,它是由Bjarne Stroustrup于1979年在新泽西州美利山贝尔实验室开始设计开发的。C++是C语言的扩展,旨在提供更强大的编程能力,包括面向对象编程和泛型编程的支持。C++支持数据封装、继承和多态等面向对象编程的特性和泛型编程的模板,以及丰富的标准库,提供了大量的数据结构和算法,极大地提高了开发效率。12 C++是一种静态类型的、编译式的、通用的、大小写敏感的编程语言,它综合了高级语言和低级语言的特点。C++的语法与C语言非常相似,但增加了许多面向对象编程的特性,如类、对象、封装、继承和多态等。这使得C++既保持了C语言的低级特性,如直接访问硬件的能力,又提供了高级语言的特性,如数据封装和代码重用。13 C++的应用领域非常广泛,包括但不限于教育、系统开发、游戏开发、嵌入式系统、工业和商业应用、科研和高性能计算等领域。在教育领域,C++因其结构化和面向对象的特性,常被选为计算机科学和工程专业的入门编程语言。在系统开发领域,C++因其高效性和灵活性,经常被作为开发语言。游戏开发领域中,C++由于其高效性和广泛应用,在开发高性能游戏和游戏引擎中扮演着重要角色。在嵌入式系统领域,C++的高效和灵活性使其成为理想选择。此外,C++还广泛应用于桌面应用、Web浏览器、操作系统、编译器、媒体应用程序、数据库引擎、医疗工程和机器人等领域。16 学习C++的关键是理解其核心概念和编程风格,而不是过于深入技术细节。C++支持多种编程风格,每种风格都能有效地保证运行时间效率和空间效率。因此,无论是初学者还是经验丰富的程序员,都可以通过C++来设计和实现新系统或维护旧系统。3

SCL3400硬件避坑指南:引脚兼容性测试+模式切换异常处理

本文针对村田SCL3400双轴倾角计在实际硬件设计中的常见问题,提供了详细的避坑指南。重点解析了从SCL3300迁移时的引脚兼容性真相,包括SPI时序、电源去耦等关键差异,并深入探讨了模式切换中超量程错误的复现原因与软件容错方案。同时,指导了如何根据应用场景配置低通滤波器,并给出了无自动唤醒功能下的可靠电源与长线SPI通信管理策略。

weixin_29190573的博客 292

8.Chromium指纹浏览器开发教程之Visual Studio调试多进程

Chromium指纹浏览器开发教程之Visual Studio调试多进程

浏览器开发教学 579

人工智能情感分析实战:文本情绪识别

人工智能情感分析,特别是文本情绪识别,已成为理解和处理人类情感信息的重要工具。通过数据预处理、特征提取、模型训练与评估等步骤,我们可以有效地从文本数据中提取情感信息,为各种应用场景提供有价值的洞察。随着技术的不断进步和创新,情感分析的应用前景将更加广阔,为我们的生活和工作带来更多便利和机遇。

shejizuopin的博客 1097

010.编译指纹浏览器-绕过常见无头检测

【代码】010.编译指纹浏览器-绕过常见无头检测。

w1101662433的博客 3037

Antlr4入门(二)基本概念解析

在上一章中(Antlr4入门(一)IDEA中Antlr的安装与使用),我们安装了Antlr,并编写运行了第一个程序“Hello world”。而在本章中,我们将学习语言类应用程序相关的重要过程、术语和数据结构。 一. 术语 语言(language)是由一系列有意义的语句组成,语句(sentence)由词组组成,词组(phrase)是由更小的子词组(subphrase)和词汇符号(vocabulary symbols)组成。 举个例子,英语就是一种语言,“Keep on going never gi.

qq_37771475的博客 5208

C++实现SM4国密算法实战指南

通过以上实现,开发者可以快速在C++项目中集成SM4国密算法,满足金融、政务等领域的安全需求。实际部署时建议通过国家密码管理局的合规性检测,并定期更新密钥管理策略。库(支持国密算法),需提前安装并配置开发环境。

skyksksksksks的博客 1487

循环嵌套(多层 for 循环)

表:order(订单表,order_id, user_id)、user(用户表,user_id, user_name)✅ 优化:先查所有订单,拿到所有 user_id 批量 in 查询,内存 join。✅ 优化:先把优惠券转 HashMap,单层循环查找(hash 查找 O (1))SQL 只有 2 次,O (1) 数据库查询,内存遍历 O (n)。需求:查询所有订单列表,同时带出每个订单对应的用户名称。需求:订单列表、优惠券列表,把订单匹配对应的优惠券名称。复杂度:O (M+N),非常快。

weixin_43732943的博客 52

PTPX功耗分析实战——从脚本配置到报告解读

本文详细介绍了PTPX功耗分析的全流程,从脚本配置到报告解读,帮助工程师快速掌握芯片设计中的功耗估算技术。文章涵盖了环境搭建、波形文件处理、功耗报告解析等关键环节,并提供了实战经验和优化建议,特别适合需要提升PTPX功耗分析效率的开发者。

weixin_29248313的博客 279
上一篇: Node.js 跨进程通信(IPC)深度进阶:从“杀人”的 kill 到真正的信号
下一篇: Git flow command error: ‘flow‘ is not a git command 问题解决
森叶
博客等级 码龄18年 1万+粉丝 300原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

森叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值