IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Chromium内核浏览器编译记(一)采坑实录 -> 正文阅读

[系统运维]Chromium内核浏览器编译记(一)采坑实录

转载请注明出处:https://blog.csdn.net/kong_gu_you_lan/article/details/123862868

本文出自 容华谢后的博客

0.写在前面

本篇文章是用来记录编译Chromium源码的步骤和踩过的坑,以防止后续再用到的时候忘记,同时也希望能够帮助到遇到同样问题的同学。

官方推荐使用Ubuntu系统来编译源码,在Windows或者Mac环境下编译Android客户端是不支持的,我使用的是VMware虚拟机,在上面安装了Ubuntu 20.04.4 64位操作系统,分配了200G的硬盘空间,16G内存,12核心CPU,编译时间大概在5小时左右。

1.准备工作

因为Chromium的源码都在墙外,所以在下载源码之前,先要在Ubuntu系统上开启代理,本文中使用的是Clash工具,在GitHub中可以搜索到Linux版本客户端。

1.1 安装Git

使用以下命令安装:

sudo apt-get install git

设置Git网络代理:

git config --global http.proxy http://127.0.0.1:端口号

git config --global https.proxy https://127.0.0.1:端口号

下载源码的过程中,可能会报Git缓存的异常,可以通过以下命令把缓存设置的大一些:

sudo git config --global http.postBuffer 5242880000

sudo git config --global https.postBuffer 5242880000

2.1 配置depot_tools

Chromium使用了depot_tools来管理代码,先通过Git拉取代码:

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

配置环境变量:

export PATH="$PATH:$HOME/depot_tools"

注意:文章中是把depot_tool下载到了【home/用户名】目录下,所以使用【$HOME】代表,环境变量要根据实际下载的路径修改。

源码的位置在这里:

源码位置

2.源码下载

2.1 拉取Chromium源码

当前处于【home/用户名】目录下,执行以下命令,创建chromium文件夹并进入:

mkdir ~/chromium && cd ~/chromium

拉取代码:

fetch --nohooks android

还可以设置不拉取历史记录,这样下载会快些:

fetch --nohooks --no-history android

提示下图中进度,则说明已经成功开始下载了:

下载源码

2.2 下载Android依赖

build/install-build-deps-android.sh

gclient runhooks

3.源码编译

Chromium使用Ninja作为主要的构建工具,并通过GN来生成.ninja配置文件,先初始化下配置文件:

gn gen --args='target_os="android" target_cpu="arm"' out/Default

关于target_cpu与本机代码指令集的对应关系,可以参照下列表格:

属性说明
abitarget_cpu
arm64-v8aarm64
armeabi-v7aarm
x86x86
x86_64x64

除了target_os和target_cpu之外,我们还可以根据编译类型(如debug、release)设置一些其他的参数:

  • is_debug: 设置true时编译debug版本,false时编译release版本,默认为false。

  • is_component_build: 设置true时会把声明为components的目标作为共享库动态加载,一般在编译debug版本时,会设置为true,这样每次改动编译链接花费的时间就会减少很多。若为false,则组件将采用静态链接。

  • is_official_build:设置true时会使用Chromium官方的编译优化,false时不设置。

初始化完成后,我们使用以下命令来编译Chromium APK:

autoninja -C out/Default chrome_public_apk

会提示下图中的进度:

编译中

经过漫长的等待,本文用了大概5个小时,如果没有出现任何报错的话,会在控制台看到以下信息:

ninja: Entering directory `out/Default'
[58707/58707] STAMP obj/chrome/android/chrome_public_apk.stamp

证明apk已经编译完成,名称为 ChromePublic.apkout/Default/apks 目录下。

编译时会产生一些缓存文件,可以通过以下命令进行清理,清理完成后,仅保留args.gn、build.ninja等基础的配置文件,以便我们进行一次编译:

gn clean out/Default

更多GN指令可以查看:https://gn.googlesource.com/gn/+/master/docs/quick_start.md

4.遇到的问题

4.1 磁盘空间

至少要分配100G的硬盘空间,Chromium Android相关的源码大概在30G左右,刚开始编译的时候,我只分配了60G的硬盘空间,编译过程中生成了几十G的缓存文件,直接占满了硬盘,导致虚拟机崩溃,无奈又重装系统。

4.2 depot_tools环境变量

如果拉取源码的时候,提示找不到fetch指令,那一定是环境变量的问题了,仔细看下路径设置的对不对。

4.3 Git网络代理

记得一定要给Git设置网络代理,不能拉取源码会一直超时,梯子我用的收费的Ghelper,里面有Clash的订阅。

4.4 下载源码或编译时中断了怎么办

下载源码执行下面的指令就可以了:

gclient sync

编译中断再执行下编译指令,会继续编译:

autoninja -C out/Default chrome_public_apk

4.5 编译过程中提示:No such file or directory: ‘gcc’

安装下gcc就妥了:

sudo apt install gcc

4.6 编译过程中提示:No such file or directory: ‘gperf’

同样的,安装下gperf:

sudo apt install gperf

4.7 编译过程中提示:No such file or directory: ‘./clang_x86_v8_arm/gen-regexp-special-case’

缺少什么安装什么,遇到其他类似的报错,也是同样操作:

sudo apt install clang

5.写在最后

把apk安装看下效果,可以看到是最新的102.0.4966.0版本内核:

Chrome首页

关于Chrome

到这里,Chromium源码的编译就完成了,有问题可以给我留言评论,下一篇文章讲一讲如何定制修改源码。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:49:45  更:2022-04-01 23:54:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:26:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码