编译 chromium(目录 E:\chromium)
官网步骤说明
https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md
vs安装网址
https://my.visualstudio.com/Downloads/Featured?mkt=zh-cn
git安装网址
https://git-scm.com/download/win
chromium 109 版本之后
新建目录
mkdir chromium_116.0.5845.89_new
解压下载好的 depot_tools.zip 或者clone
解压:打开 powershell 执行
powershell Expand-Archive -Path depot_tools.zip -DestinationPath E:\chromium_116.0.5845.89_new\depot_tools
clone:打开 git 执行
git config --global http.proxy 'http://proxy.lansha.app:33052'
git config --global https.proxy 'http://proxy.lansha.app:33052'
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
设置系统变量(之前设置过可以忽略)
在系统变量的 path 里面添加 E:\chromium_116.0.5845.89_new\depot_tools 并且置顶。
在系统变量里面新建一个值,名字是 DEPOT_TOOLS_WIN_TOOLCHAIN,值是 0
设置代理
打开 depot_tools/.cipd_impl.ps1 文件 ,
找到 115 行左右 ,看到:
Invoke-WebRequest -UserAgent $UserAgent -Uri $URL -OutFile $TmpPath
添加代理信息:-Proxy "http://proxy.lansha.app:33052" ,
添加后结果如下:
Invoke-WebRequest -UserAgent $UserAgent -Uri $URL -OutFile $TmpPath -Proxy "http://proxy.lansha.app:33052"
打开 cmd 执行以下命令
cd E:\chromium_116.0.5845.89_new
set http_proxy=http://proxy.lansha.app:33052
set https_proxy=http://proxy.lansha.app:33052
mkdir chromium && cd chromium
直接获取最新版本:
fetch chromium
获取指定版本:
git clone --depth 10 -b 109.0.5407.1 https://chromium.googlesource.com/chromium/src.git src
git describe --tags
gclient config --unmanaged https://chromium.googlesource.com/chromium/src.git
创建并设置 .boto 文件(之前创建过可直接设置路径)
在 depot_tools 目录新建 .boto
[Boto]
proxy=proxy.lansha.app
proxy_port=33052
返回 cmd 设置路径
set NO_AUTH_BOTO_CONFIG=E:\chromium_116.0.5845.89_new\depot_tools\.boto
更改一处 bat 脚本(不改会报错)
进入 chromium\src\third_party\depot_tools 打开 dirmd.bat
将 call "%~dp0\cipd_bin_setup.bat" > nul 2>&1
改为 call "%~dp0\cipd_bin_setup.bat"
添加代理
进入 chromium\src\third_party\depot_tools 打开 .cipd_impl.ps1 文件
找到 115 行左右,看到:
Invoke-WebRequest -UserAgent $UserAgent -Uri $URL -OutFile $TmpPath
添加代理信息: -Proxy "http://proxy.lansha.app:33052" ,
添加后结果如下:
Invoke-WebRequest -UserAgent $UserAgent -Uri $URL -OutFile $TmpPath -Proxy "http://proxy.lansha.app:33052"
(
如果没有这个,就是另一种方法
找到 108 行左右,看到:
$wc.DownloadFile($Url, $Path)
在其上添加如下代码:
$proxy = (New-Object System.Net.WebProxy)
$proxy.Address = "http://proxy.lansha.app:33052"
$wc.proxy = $proxy
)
对更改内容进行测试提交
测试一下还有没有问题
python3 src/testing/generate_location_tags.py --out src/testing/location_tags.json
cd src\third_party\depot_tools
git add .
git commit -m "test"
cd ../../../
git add .
git commit -m "test"
gclient sync
这里插入一个小补丁,允许不同电脑的 chromium 配置共享(不需要可以直接跳过)
需要改两个文件,引入两个包并更改三个地方
1、components/metrics/machine_id_provider_win.cc
添加:
#include "base/command_line.h"
// static
bool MachineIdProvider::HasId() {
添加:
if (!base::CommandLine::ForCurrentProcess()->HasSwitch("enable-machine-id")) {
return false;
}
return true;
}
// static
std::string MachineIdProvider::GetMachineId() {
添加:
if (!base::CommandLine::ForCurrentProcess()->HasSwitch("enable-machine-id")) {
return std::string();
}
2、services/preferences/tracked/device_id_win.cc
添加:
#include "base/command_line.h"
MachineIdStatus GetDeterministicMachineSpecificId(std::string* machine_id) {
DCHECK(machine_id);
添加:
if (!base::CommandLine::ForCurrentProcess()->HasSwitch("enable-machine-id")) {
return MachineIdStatus::NOT_IMPLEMENTED;
}
设置编译参数
进入 cmd 执行
cd src
gn args out/Default
这时会弹出一个记事本,让你写参数,我使用的参数如下:
enable_platform_ac3_eac3_audio = true
enable_platform_hevc = true
enable_iterator_debugging = false
enable_mse_mpeg2ts_stream_parser = true
enable_nacl = true
ffmpeg_branding = "Chrome"
is_component_build = false
is_debug = false
proprietary_codecs = true
symbol_level = 0
target_cpu = "x64"
enable_hangout_services_extension = true
enable_widevine = false
rtc_use_h264 = false
use_openh264 = true
chrome_pgo_phase = 0
is_official_build = true
current_cpu = "x64"
visual_studio_version = "2022"
blink_symbol_level = 0
enable_platform_mpeg_h_audio = true
pgo_build = true
rtc_build_examples = false
thin_lto_enable_optimizations = true
is_chrome_branded = false
fieldtrial_testing_like_official_build = true
use_thin_lto = true
use_lld = true
enable_profiling = false
google_api_key = "no"
google_default_client_id = "no"
google_default_client_secret = "no"
use_official_google_api_keys = false
enable_nacl = false
写完之后保存关闭即可
开始编译
ninja -C out/Default chrome mini_installer -j 12
运行测试
在 src/out/Default 目录中可以找到 chrome.exe 双击运行即可
里面的几个重要文件:
chrome.exe (可执行文件)
mini_installer.exe (最小安装包)
setup.exe (升级程序)
chromium 109 版本之前(含 109 版本)
新建目录
mkdir build
cd build
设置 git 代理 (进入 git bash)
git config --global http.proxy 'http://proxy.lansha.app:33052'
git config --global https.proxy 'http://proxy.lansha.app:33052'
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
git clone -b 105.0.5180.1 --depth=5 https://chromium.googlesource.com/chromium/src
取消 git 代理
git config --global --unset http.proxy
git config --global --unset https.proxy
在 build 目录新建 .boto
[Boto]
proxy=proxy.lansha.app
proxy_port=33052
在 build 目录新建 .gclient
solutions = [
{
"managed": False,
"name": "src",
"url": "https://chromium.googlesource.com/chromium/src.git",
"custom_deps": {},
"deps_file": ".DEPS.git",
"safesync_url": "",
},
]
进入 depot_tools 找到 .cipd_impl.ps1
进入第 102 行,添加
$proxy = (New-Object System.Net.WebProxy)
$proxy.Address = "http://proxy.lansha.app:33052"
$wc.proxy = $proxy
进入 cmd
设置中文输出
chcp 65001
设置代理和环境变量
set DEPOT_TOOLS_WIN_TOOLCHAIN = 0
set NO_AUTH_BOTO_CONFIG=E:\chromium\build\.boto
set http_proxy=http://proxy.lansha.app:33052
set https_proxy=http://proxy.lansha.app:33052
gclient sync
进入 src\third_party\depot_tools
找到 .cipd_impl.ps1
进入第 102 行,添加
$proxy = (New-Object System.Net.WebProxy)
$proxy.Address = "http://proxy.lansha.app:33052"
$wc.proxy = $proxy
右键打开 git
git config --global --add safe.directory '*'
git add .
git commit -m "test"
回到 cmd
gclient runhooks
cd src
(vs安装路径不在c盘)
进入 E:\chromium\src\build , 找到 vs_toolchain.py
1、将 大概 163 行中的
path = os.path.expandvars('%ProgramFiles(x86)%' +
'/Microsoft Visual Studio/%s' % version)
直接修改为vs的路径
path = os.path.expandvars('E:/vs2019/Microsoft Visual Studio/%s' % version)
2、将 大概 217 行中的 program_files_path_variable 改成
program_files_path_variable = 'E:/vs2019'
gn args out/Default
这时会弹出一个记事本,让你写参数:
enable_platform_ac3_eac3_audio = true
enable_platform_hevc = true
enable_iterator_debugging = false
enable_mse_mpeg2ts_stream_parser = true
enable_nacl = true
ffmpeg_branding = "Chrome"
is_component_build = false
is_debug = false
proprietary_codecs = true
symbol_level = 0
target_cpu = "x64"
enable_hangout_services_extension = true
enable_widevine = false
rtc_use_h264 = false
chrome_pgo_phase = 0
is_official_build = true
current_cpu = "x64"
visual_studio_version = "2019"
blink_symbol_level = 0
enable_platform_mpeg_h_audio = true
rtc_build_examples = false
thin_lto_enable_optimizations = true
is_chrome_branded = false
use_thin_lto = true
use_lld = true
enable_profiling = false
google_api_key = "no"
google_default_client_id = "no"
google_default_client_secret = "no"
use_official_google_api_keys = false
enable_nacl = false
保存关掉
ninja -C out/Default chrome mini_installer -j 12
(如果编译报错,进行如下操作)
打开浏览器链接
https://developer.microsoft.com/zh-cn/windows/downloads/sdk-archive/
找到 Windows 10 SDK 版本 2104 (10.0.20348.0) 下载 SDK
进入目录 E:\chromium\src\build\toolchain\win
打开文件 setup_toolchain.py
找到 args.append('10.0.20348.0') 将里面的版本号改成 10.0.20348.0
保存,重新在 E:\chromium\src 目录打开cmd
执行命令
gn args out/Default
ninja -C out/Default chrome mini_installer -j 12