在Windows或者Mac下编译Android客户端是不支持的,官方推荐的是使用Ubuntu来进行编译,因此我们的编译采用的是Ubuntu服务器,事实证明镜像必须是ubuntu,如果为centos则不支持,ubuntu支持一下版本:
我这边申请的是腾讯云服务器,如下:
至少为8核的,100G硬盘,我这边申请的高配版16核;32G;300G。
申请的腾讯云服务器,默认的源为mirrors.tencentyun.com对应的IP为内网的,访问不到,设置no_proxy可以取消,或者重新设置其他代理源,如下清华大学代理源,阿里云等,按照文档一步步的配置:
https://blog.huangz.me/2020/change-ubuntu-software-source.html
然后执行sudo apt-get。
可能会需要某些资源无法下载,参考:
https://blog.csdn.net/ak739105231/article/details/105513215/
切换到目录,删除不能下载的文件重新执行下。
接着可能出现:
dpkg: error processing package python3-scour (--configure)
参考:
https://www.cnblogs.com/live41/p/14237280.html
Chromium使用depot_tools的脚本包来管理checkout和审查代码,因此拉代码前需要安装好此工具。首先拉取代码:
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
1、打开~/.zshrc
vim ~/.zshrc
2、输入
export PATH="$PATH:/path/to/depot_tools"
3、保存并使其生效
source ~/.zshrc
新建目录然后拉取代码,近30G的源码,这里过程非常长,看大家网速了。如果想快点拉完,可以在fetch的时候添加--no-history指令不拉取历史记录,这样会快很多。我这没加,申请的云服务器,在公司耗时40分钟下载完毕。
mkdir ~/chromium && cd ~/chromium
fetch --nohooks android
拉完源码后,执行以下指令安装编译Android APK所需的依赖及下载其他所需的二进制文件。
build/install-build-deps-android.sh
gclient runhooks
1、Chromium使用Ninja作为主要的构建工具,并通过GN来生成.ninja配置文件。
(1)通过gn args out/Default指令,会启动系统的默认编辑器进入配置文件编辑模式,并在out/Default目录下初始化此版本的编译,生成args.gn文件,这个时候输入以下的配置参数并保存,GN会帮我们初始化好所有的.ninja配置文件。
target_os = "android"
target_cpu = "arm"
(2)令快速完成配置文件的初始化
gn gen --args='target_os="android" target_cpu="arm" is_debug=false' out/Default
abi | target_cpu |
arm64-v8a | arm64 |
armeabi-v7a | arm |
x86 | x86 |
x86_64 | x64 |
is_debug: 设置true时编译debug版本,false时编译release版本。默认为true。这块设置为false。
这块执行会报如下错误:
一定要配置第二步代理源,默认的mirrors.tencentyun.com源访问不到。配置后,执行:
sudo apt-get install -y pkg-config
在重新输入上面(2)中的命令就可以了。
2、查看构建环境的默认参数
通过以下指令我们可以把参数输出到文件中进行查看:
gn args --list out/Default > env.txt
3、对历史构建进行清理
通过clean指令可以对编译环境进行清理,会删除所有编译的中间产物,仅保留args.gn、build.ninja等基础的配置文件,以便我们进行一次完整的重编译。
gn clean out/Default
4、查看给定target或config的详细信息
通过desc指令可以查看某个target的所有详细信息:
gn desc out/Default //net:net > desc.txt
各个目录文件的含义:
https://daimajiaoliu.com/daima/4799de5c410041c
通过以下命令我们可以编译Chromium的APK:
autoninja -C out/Default chrome_public_apk
这一过程非常慢,我执行了1小时50分钟才结束。看到下面的log,并且没有任何报错,就证明已经编译完成了:
APK产物ChromePublic.apk在out/Default/apks目录下面:
安装在手机里面如下图:
这样编译完毕,最后附上版本信息:
VersionName: 96.0.4657.0
Chrome: 465700000
ChromeModern: 465700010
Monochrome: 465700020
TrichromeChrome: 465700030
AndroidWebviewStable: 465700000
AndroidWebviewBeta: 465700010
AndroidWebviewDev: 465700020
Apk下载地址:https://download.csdn.net/download/yoonerloop/33159534
参考文章: