Android编译chromium

一、申请云服务器

        在Windows或者Mac下编译Android客户端是不支持的,官方推荐的是使用Ubuntu来进行编译,因此我们的编译采用的是Ubuntu服务器,事实证明镜像必须是ubuntu,如果为centos则不支持,ubuntu支持一下版本:

Android编译chromium_第1张图片

         我这边申请的是腾讯云服务器,如下:

         至少为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

三、安装depot_tools

        Chromium使用depot_tools的脚本包来管理checkout和审查代码,因此拉代码前需要安装好此工具。首先拉取代码:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

四、添加路径到PATH环境变量中

1、打开~/.zshrc

vim  ~/.zshrc

2、输入

export PATH="$PATH:/path/to/depot_tools"

3、保存并使其生效

source ~/.zshrc

五、拉取Chromium源码

        新建目录然后拉取代码,近30G的源码,这里过程非常长,看大家网速了。如果想快点拉完,可以在fetch的时候添加--no-history指令不拉取历史记录,这样会快很多。我这没加,申请的云服务器,在公司耗时40分钟下载完毕。

mkdir ~/chromium && cd ~/chromium
fetch --nohooks android

六、下载Android依赖

        拉完源码后,执行以下指令安装编译Android APK所需的依赖及下载其他所需的二进制文件。

build/install-build-deps-android.sh
gclient runhooks

七、配置GN编译脚本

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。

        这块执行会报如下错误:

Android编译chromium_第2张图片

         一定要配置第二步代理源,默认的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

        通过以下命令我们可以编译Chromium的APK:

autoninja -C out/Default chrome_public_apk

        这一过程非常慢,我执行了1小时50分钟才结束。看到下面的log,并且没有任何报错,就证明已经编译完成了:

         APK产物ChromePublic.apk在out/Default/apks目录下面:

        安装在手机里面如下图: 

Android编译chromium_第3张图片Android编译chromium_第4张图片

 这样编译完毕,最后附上版本信息:

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

参考文章:

  • https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/android_build_instructions.md
  • https://codezjx.com/posts/build-chromium-for-android/

你可能感兴趣的:(android,android,ubuntu,chromium)