自行构建 chromium 教程,还是自己编译的浏览器好

看了官方文档,一路走来不得不说坑很多。以下所有命令均在 cmd 命令提示符下运行。

首先做好准备工作:
1,新版 chromium 需要 Visual Studio 2022 勾选如下(划红线的必选):


2,准备好大约 200G 的空间用于存放源码和编译。电脑内存最好 32G 起步。


3,安装配置 git 工具。
git config –global user.name “My Name” #设置你的名字
git config –global user.email “[email protected]” #设置你的邮箱
git config –global core.autocrlf false
git config –global core.filemode false
git config –global branch.autosetuprebase always
git config –global core.longpaths true # 解除 Windows 限制,配置 git 以允许长路径支持


4,下载 depot_tools 。解压到一个目录,比如 d:\depot_tools。并配置系统环境 PATH。
Windows 打开命令提示符 cmd ,输入 control sysdm.cpl,在 PATH 系统变量中添加 d:\depot_tools 这个目录,如果你的不一样,请自行改变。
Linux 直接 export PATH=”$PATH:/path/to/depot_tools”。这个临时变量,重启需要再次添加。也可以 git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git 拉取源码。

5,更新 depot_tools。
gclient sync

6,创建源码目录,在转到新创建的目录。
mkdir chromium && cd chromium

6,下载 chromium 源码。如果没有科学上网的可能下载不了。我这里给个百度网盘吧!
fetch chromium 或者 fetch chromium –no-history (这个可以节省时间)这个是拉取最新分支。如果要要旧版请参照这个 git clone –depth 100 -b 103.0.5060.66 https://chromium.googlesource.com/chromium/src.git src
如果不小心断掉了链接,可以用 gclient sync 来继续下载。

7,构建编译文件,设置编译参数。
Windows
cd src && gn gen out\Default (测试版)
gn args out\Release (正式版)需要输入编译参数如下
target_os=”win”
target_cpu=”x64″
is_component_build=false
is_debug=false
is_official_build=true


Android
gn gen –args=’target_os=”android” target_cpu=”arm64″ out/Default


如果需要构建调试版本添加改变以下参数

is_debug = true
is_component_build = true
symbol_level = 2

8, 构建可执行文件。

autoninja -C out\Default chrome (测试版)
out\Release chrome (正式版)

一些错误解决方案,如下:

A,No downloadable toolchain found. In order to use your locally installed version of Visual Studio to build Chrome please set DEPOT_TOOLS_WIN_TOOLCHAIN=0.

这个错误是环境变量的错误,也就是没找工具。我这里是这么解决的:
1,将 d:\depot_tools 这个环境变量放置在最前头。添加系统环境变量 DEPOT_TOOLS_WIN_TOOLCHAIN=0 。
2,卸载本身安装 Python,然后再执行 gclient sync (设置环境变量后,请重新打开命令提示符)。此时它会重新构建工具链。

B,构建速度慢

1,关闭 Windows Defender。12 13 14代intel看下大小核心调度。
2,设置 set NINJA_SUMMARIZE_BUILD = 1 && autoninja -C out\Default base,让其显示构建过程。或者执行 python depot_tools\post_build_ninja_summary.py -C out\Default
3,更多详细,参见原文

C,UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x92 in position 125: illegal multibyte sequence 出现这个编码错误不用管,也可以编译成功的。源码某些用的是 Python2,所以会有这个错误。要修正你需要找到源文件,但是跳出这个错误并没有带出源文件。

D,如果遇到 git 源码不一致问题。
gclient sync -D –force –reset
使用上述命令强行覆盖

给电脑添加AirPlay支持,使得IPhone,Mac可以投放音乐到电脑

准备:

  1. PC机,安装好VMware Workstation Pro,并虚拟一个Ubuntu20.04 Server系统,并设置网络为桥接。
  2. 声卡,一般PC都自带声卡吧。

可以使任何可以运行 Ubuntu 的设备,自带声卡,能连网。

配置音频

sudo apt install alsa-utils
sudo alsamixer

alsamixer

使用方向键操作。

如果没有声音,需要按 F6 切换到输出设备并调整音量。

在调整完音量后我们可以测试一下

sudo speaker-test -D front:Pebbles -c 2

其中输出设备(front)可以用下面的命令查看:

sudo aplay -L | grep :CARD

配置 AirPlay 服务

能正常出声后就能接着进行下面的操作了。

安装软件包

sudo apt install avahi-daemon shairport-sync

编辑 /etc/shairport-sync.conf

general =
{
  name = "ITJesse-Server";
  output_backend = "alsa";
  mdns_backend = "avahi";
}
alsa =
{
  output_device = "hw:1";
  output_rate = 44100;
};

需要说明的只有 alsa 部分,output_device 是你想要使用的音频输出设备,可以用 sudo aplay -l 命令列出所有可用设备:

**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC662 rev3 Analog [ALC662 rev3 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Pebbles [JBL Pebbles], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0

此处我想要使用 JBL Pebbles 这个设备,它显示为 card 1,所以我在配置中需要填入 hw:1

需要说明的是,使用 hw 选中的设备会被独占,其他进程将无法访问。我这里没有混音的需求,于是就偷懒了(逃

重启服务后就能在苹果设备的输出选项里看到服务器的名字了。

sudo systemctl restart shairport-sync

当然前提是设备和服务器接入同一局域网。

故障排除

没有声音。控制台报错:

shairport-sync[7603]: Can't set the D/A converter to 44100.

原因是我的输出设备不支持 44100 的采样率。查询了官方文档后得知,JBL Pebbles 这款 USB 音箱只支持 48000 的采样率。于是我们就要配置重采样。

配置方法在官方仓库的 Issue 中有提到,这里仅贴出配置方法。

编辑文件 /etc/asound.conf 添加以下内容:

pcm_slave.jabra
{
    pcm "hw:1"
    rate 48000
}

pcm.jabra_44k1 {
    type rate
    slave jabra
}

这里的 pcm "hw:1" 的配置方法同上,这样我们就创建了一个重采样设备。
重新载入 alsa:

sudo alsactl restore

接着需要让 shairport 使用这个设备,编辑 /etc/shairport-sync.conf
修改为:

alsa =
{
  output_device = "jabra_44k1";
  rate = 44100
};

然后重启服务

sudo systemctl restart shairport-sync

此方案音频有延迟,其实真的HomePod也是有延迟。新版系统(MacOS 15.5以上)修正了

在使用 iPhone 播放音乐的过程中,可以明显感受到操作延迟。具体表现为在切换歌曲或者暂停的时候会有 2 秒左右的延迟产生。这在播放视频时会导致不能忍受的音画不同步。

但是在 Safari 中播放 Youtube 时发现,系统貌似会自动同步音视频。在开始播放的时候视频会卡住两秒左右,然后和音频一起播放。但是在其他任何应用场景我都没有再找到这种自动同步的动作。

因此,该方案大概只适用于音乐播放。

市面上有AirServer可以在Windows上实现此功能了。但是此篇免费啊!哈哈哈