Android编译chromium
一、申请云服务器
在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
三、安装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。
这块执行会报如下错误:
一定要配置第二步代理源,默认的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目录下面:
安装在手机里面如下图:
这样编译完毕,最后附上版本信息:
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编译chromium相关推荐
- Chromium Android编译指南
先决条件 需要有一台装有Linux操作系统环境的主机来做编译,这个环境的搭建配置方法可以参考Linux-specific build instructions.目前还不支持在其它(Mac/Window ...
- chromium android分析,Chromium Android工程迁移编译过程
本文从Chromium编译的中间产物入手深入分析.学习Chromium Android版本的工程化定制流程.初始工作依赖于Chromium的ninja.GYP构建系统,在构建完成后基于编译中间产物,迁 ...
- 编译Chromium for Android
编译Mingw-w64失利,打算编译一下Chromium玩一下 首先需要在Linux平台上编译 前置工具 git python2.7 **良好的网络条件** 一.安装depot_tools git c ...
- Chromium on Android: 认识Chromium WebView
Android KitKat一项重要的更新就是WebView采用Chromium/Blink渲染引擎,本文简要的叙述了新版WebView的主要特性.需要进一步改进的地方以及WebView的代码结构等. ...
- Xamarin.Android编译CPU类型选择方式
Xamarin.Android编译CPU类型选择方式 在Xamarin.Android编译的时候,默认提供了5种CPU类型供大家选择.它们分别为armeabi.armeabi-v7a.arm64-v8 ...
- Xamarin.Android编译提示找不到mscorlib.dll.so文件
Xamarin.Android编译提示找不到mscorlib.dll.so文件 错误信息:AOT module 'mscorlib.dll.so' not found: Cannot load lib ...
- 【错误记录】Android 编译时技术报错 ( 注解处理器 process 方法多次调用问题 )
文章目录 一.报错信息 二.问题分析 三.解决方案 注解处理器 AbstractProcessor 中的 process 方法可能会调用多次 , 在生成代码时 , 一定要注意 , 检测到 注解节点 后 ...
- 【错误记录】Android 编译时技术版本警告 ( 注解处理器与主应用支持的 Java 版本不匹配 )
文章目录 一.报错信息 二.问题分析 三.解决方案 一.报错信息 在使用 Android 编译时技术 , 涉及 编译时注解 , 注解处理器 ; 开发注解处理器后 , 编译报如下警告 ; 该警告不会影响 ...
- android 模块不编译错误,Android 编译出错版本匹配问题解决办法
Android 编译出错版本匹配问题解决办法 解决问题的关键在于版本匹配, compileSdkVersion compileSdkVersion targetSdkVersion 这三个参数的整数值 ...
最新文章
- 树莓派上 安装并 运行opencv
- git编辑器选哪个_[Git]Git创建和修改代码库
- s3c6410 jpeg编码 linux,S3C6410 裸机硬件JPEG解码
- c#中connect函数_Flink算子使用方法及实例演示:union和connect
- Python游戏编程入门,让你秒变电脑大神!
- vue-cli3.0(创建项目)如何引入element-ui(指令篇)
- 这才是牛逼程序员的标配!
- 【论文阅读】PrivPy: General and Scalable Privacy-Preserving Data Mining
- java基础----对象的创建过程(初始化、析构、清理)
- shell获取当前目录名的几种方法
- 2018DeeCamp笔试题目第二套B卷
- 转行学IT,你真的准备好了吗?
- 如何使用FonePaw Video Converter Ultimate将 2D 电影转换为 3D
- eNSP不同网段主机互联-DHCP
- 【企业管理】北邮国际学院大二上期末复习
- 获取商品ID下所有的sku精准库存api
- 图文详解!10大高性能开发核心技术+
- Git生成ssh ksy后进行项目管理
- “万金油”的String,为什么不好用了?
- maven的setting.xml文件配置