Android Chromium编译

发布时间 2023-07-10 00:05:29作者: 柴承训

前言

最近关注了一下Chrome浏览器,发现已经内置支持H265编码了。想我以前做过Android Chromium v84的H265支持,整个过程非常麻烦,从下载源码到编译处处是坑。今天看到Chromium已经功能更完善,想着不如编一个最新版本,准边记录一下编译过程,为后来者提供一点便利。

准备工作

谷歌已经提供了完备的编译教程, 按照它的流程下来是能编译成功的。

先说一下我的编译环境,虚拟机环境 Ubuntu 23(官方推荐的时18 20 22,但是亲测23也可以编译成功)。

首先下载代码需要代理,我用的是

如果用的是其他软件,请自行搜索虚拟机怎么使用主机代理。

开启后打开Allow Lan,允许同一个局域网下的其他设备访问代理,记下这个端口号(7890)。


然后在终端中输入ipconfig,找到VMware Network Adapter VMnet8,记下这个IP(192.168.149.1)


接着打开Ubuntu的网络设置,

下载工具

接着就可以下载谷歌官方的工具depot_tools
~/下创建目录chromemkdir ~/chrome&& cd ~/chrome
进入chrome后执行命令git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
然后将这个路径加入到PATH里:export PATH="$PATH:/path/to/depot_tools"

拉取代码

接下来就可以获取代码了,如果按照官方文档下载的话,可能要下载非常大的代码量,我编译时由于只想使用最新版,所以在下载命令里加入了--no-history,这样下载时间会缩短很多。完整命令如下:

mkdir chromium && cd chromium
fetch --nohooks --no-history android

这里多说一句,如果你没带--no-history命令,拉取完代码后~/chrome/chromium下会生成一个src目录,使用

gti fetch origin --tags
git tag

可以查看tag,并且选择自己想要的tag检出,比如git checkout 97.0.4962.93

下载完代码后,进入src目录
cd src
然后安装编译chromium所需要的依赖包
build/install-build-deps.sh --android
安装完之后需要再次同步代码,但是由于我们使用了代理,同步时候会报错,需要先执行一步:
在随便一个目录下创建.boto文件,在文件里输入:

[Boto]
proxy=192.168.149.1
proxy_port=7890

然后设置export NO_AUTH_BOTO_CONFIG=/path/to/.boto

现在就可以执行gclient sync同步代码了。

编译

最后就可以编译代码了
执行gn args out/Default
这时会打开文本编辑框,输入内容:

target_os = "android"
target_cpu = "arm64"
# 不把警告作为错误,不然很有可能报错
treat_warnings_as_errors = false

输入完后保存退出即可。
最后的最后,执行命令autoninja -C out/Default chrome_public_apk,就可以开始愉快的编译了。整个过程非常长,大概3、4个小时。
编译完成后,在out/Default/apks/下就可以得到我们的Chromium.apk了,竟然有将近1G,可怕。

运行一下