当前位置: 首页 > news >正文

Chromium for Android 浏览器的编译和安装

Chromium for Android 浏览器的编译和安装

  • Chromium for Android 浏览器的编译和安装
    • 环境要求和配置
    • Chromium for Android源码下载
      • 安装 depot_tools
      • 获取代码
      • 转换现有的Linux检出
      • 安装额外的构建依赖
      • 运行钩子
    • Chromium for Android源码编译
      • 设置编译环境
    • 编译 Chromium
    • Chromium for Android安装到设备

Chromium for Android 浏览器的编译和安装

这篇文章介绍Android版本Chromium浏览器的源码下载、编译、安装的过程。

环境要求和配置

要在Linux上构建Chromium项目的Android客户端,系统需要满足以下要求:

  1. 硬件要求:
  • 处理器:x86-64架构的机器。
  • 内存:至少8GB的RAM(推荐超过16GB以获得更好的性能)。
  • 存储:至少100GB的可用磁盘空间。
  1. 软件要求:
    操作系统:大多数开发工作在Ubuntu上进行。其他Linux发行版可能也可以使用,但需要参考Linux安装说明以确保兼容性。
    工具:
  • Git:用于版本控制和代码管理。
  • Python:用于构建脚本和其他开发工具。
  1. 注意事项:
    在Windows或Mac上构建Android客户端是不支持的,并且无法正常工作。建议在Linux环境中进行开发和构建。

这些要求确保你的开发环境足够强大,可以处理Chromium项目的构建过程,特别是在处理Android客户端时。确保系统满足这些要求将有助于避免构建过程中的常见问题,并提高开发效率。

Chromium for Android源码下载

以下代码下载需要连接外网才能下载

安装 depot_tools

  1. 下载depot_tools 仓库:
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
  1. 将 depot_tools 添加到PATH:

假设你将 depot_tools 克隆到了 /path/to/depot_tools,可以通过以下命令将其添加到PATH(建议将这行代码添加到 ~/.bashrc 或 ~/.zshrc 中):

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

获取代码

  1. 创建并进入 Chromium 目录:
mkdir ~/chromium && cd ~/chromium
  1. 获取 Android 代码:
    使用 fetch 命令获取代码:
fetch --nohooks android

如果不需要完整的仓库历史记录,可以使用 --no-history 标志来节省时间。
注意:即使在快速的网络连接下,该命令也可能需要30分钟,在较慢的连接下可能需要数小时。

  1. 进入 src 目录:
    获取完成后,会在工作目录中创建一个隐藏的 .gclient 文件和一个名为 src 的目录。接下来的操作假定你已经切换到 src 目录:
cd src

转换现有的Linux检出

如果你已有一个Linux的检出,可以通过在 .gclient 文件中添加 target_os = [‘linux’, ‘android’] 来添加Android支持:

echo "target_os = [ 'linux', 'android' ]" >> ../.gclient

安装额外的构建依赖

检出代码后,运行以下命令以获取所有构建Linux和Android所需的依赖项:

build/install-build-deps.sh

运行钩子

在至少运行一次 install-build-deps 之后,可以运行Chromium特定的钩子,这将下载额外的二进制文件和其他可能需要的东西:

gclient runhooks

通过以上步骤,你应该能够成功设置Chromium项目的开发环境,特别是针对Android客户端的构建。确保每一步都正确执行,以避免后续构建过程中的问题。

Chromium for Android源码编译

设置编译环境

Chromium 使用 Ninja 作为其主要构建工具,并使用一个名为 GN 的工具来生成 .ninja 文件。你可以创建任意数量的构建目录,并使用不同的配置。要创建一个用于构建 Android 版 Chrome 的构建目录,请运行 gn args out/Default 并编辑文件以包含以下参数:

 target_os = "android"is_debug = falsetarget_cpu = "arm64"  # See "Figuring out target_cpu" below#use_remoteexec = true  # Enables distributed builds. See "Faster Builds".symbol_level = 0enable_android_apk_bundles = trueis_official_build = trueandroid_channel = "stable"enable_r8 = truechrome_pgo_phase = 0proprietary_codecs = trueffmpeg_branding = "Chrome"enable_media_router = trueenable_cast_receivers = trueenable_widevine = true

对于每个新的构建目录,你只需运行一次这些命令,Ninja 会根据需要更新构建文件。你可以将 Default 替换为其他名称,但它应是 out 的子目录。有关其他构建参数,包括发布设置,请参阅 GN 构建配置。默认情况下将是一个调试组件构建。有关 GN 的更多信息,请在命令行中运行 gn help 或阅读快速入门指南。

编译 Chromium

使用 Ninja 构建 Chromium,可以通过以下命令进行:

autoninja -C out/Default chrome_public_apk

你可以通过在命令行中运行 gn ls out/Default 来获取所有其他构建目标的列表。要编译其中一个目标,将 GN 标签传递给 Ninja 时不需要前面的“//”(例如,对于 //chrome/test:unit_tests,使用 autoninja -C out/Default chrome/test:unit_tests)。

Chromium for Android安装到设备

编译后生成apk路径:

out/Default/apks/ChromePublic.apk

可以直接通过adb install 安装

相关文章:

Chromium for Android 浏览器的编译和安装

Chromium for Android 浏览器的编译和安装 Chromium for Android 浏览器的编译和安装环境要求和配置Chromium for Android源码下载安装 depot_tools获取代码转换现有的Linux检出安装额外的构建依赖运行钩子 Chromium for Android源码编译设置编译环境 编译 ChromiumChromium fo…...

实景视频与模型叠加融合?

[视频GIS系列]无人机视频与与实景模型进行实时融合_无人机视频融合-CSDN博客文章浏览阅读1.5k次,点赞28次,收藏14次。将无人机视频与实景模型进行实时融合是一个涉及多个技术领域的复杂过程,主要包括无人机视频采集、实景模型构建、视频与模型…...

Scala的隐式类

package hfd //隐式类 //任务:给之前的BaseUser添加新的功能,但是不要直接去改代码 //思路:把BaseUser通过隐式转换,改成一个新类型,而这个新类型中有这新的方法 //implicit class一个隐式转换函数类 //作用&#xff1…...

常见软件设计模式介绍:三层架构、MVC、SSM、EDD、DDD

三层架构(View Service Dao) 三层架构是指:视图层 view(表现层),服务层 service(业务逻辑层),持久层 Dao(数据访问层) 表现层:直接跟前…...

Springboot技术栈常见问题及搭建步骤

一. SpringBoot介绍 1.1. 引言 为了使用SSM框架去开发, 准备SSM框架的模板配置 为了使Spring整合第三方框架, 单独的去编写xml文件 导致SSM项目后期xml文件特别多, 维护xml文件的成本是很高的 SSM工程部署也是很麻烦, 依赖第三方的容器 SSM开发方式很是笨重 1.2 SpringBoot …...

session 共享服务器

1.安装 kryo-3.0.3.jar asm-5.2.jar objenesis-2.6.jar reflectasm-1.11.9.jar minlog-1.3.1.jar kryo-serializers-0.45.jar msm-kryo-serializer-2.3.2.jar memcached-session-manager-tc9-2.3.2.jar spymemcached-2.12.3.jar memcached-session-manager-2.3.2.jar …...

vue2:v-for实现的el-radio-group选中时显示角标,并自定义选中按钮的字体颜色和背景色

项目中需要实现一组预定义查询,每一个查询按钮在选中时右上角显示一个角标,展示当前查询返回的数据条目。 1、text-color="#3785FF" fill="#E6EAF1" 处理选中时的字体颜色和背景色,如上图,分别为蓝色和浅灰色。 2、badge中:value="selectedRadio…...

【Linux】-学习笔记10

第八章、Linux下的火墙管理及优化 1.什么是防火墙 从功能角度来讲 防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出 从功能实现角度来讲 火墙是系统内核上的一个模块netfilter(数据包过滤机制) …...

鸿蒙NEXT开发案例:九宫格随机

【引言】 在鸿蒙NEXT开发中,九宫格抽奖是一个常见且有趣的应用场景。通过九宫格抽奖,用户可以随机获得不同奖品,增加互动性和趣味性。本文将介绍如何使用鸿蒙开发框架实现九宫格抽奖功能,并通过代码解析展示实现细节。 【环境准…...

深度解析:RTC电路上的32.768KHz时钟的频偏及测试

1、什么是RTC RTC是Real-Time Clock(实时时钟)的缩写,通常在电子产品中,是用时钟电路(外部采用时钟芯片,比如AiP8563)或时钟模块(SOC内部包含了时钟模块,只需要外接32.768KHz晶振)来…...

Scala的泛型

需求:定义一个名为getMiddleEle 的方法用它来获取当前的列表的中间位置的值中间位置的下标 长度/2目标:getMiddleEle(List(1,2,3,4,5)) > 5/2 2 > 下标为2的元素是:3 getMiddleEle(List(1,2,3,4)) > 4/2 2 > 下标为2的元素是:3格式如下: 定义一个函数的格式:def…...

OpenGL ES详解——glUniform1i方法是否能用于设置纹理单元

glUniform1i 方法确实可以用于设置纹理单元(texture unit)。在OpenGL中,纹理单元是图形硬件的一部分,它允许你同时绑定多个纹理,并在着色器程序中通过uniform变量来选择使用哪个纹理。 通常,纹理单元通过整…...

探索 Janus-1.3B:一个统一的 Any-to-Any 多模态理解与生成模型

随着多模态技术的不断发展,越来越多的模型被提出以解决跨文本与图像等多种数据类型的任务。Janus-1.3B 是由 DeepSeek 推出的一个革命性的模型,它通过解耦视觉编码并采用统一的 Transformer 架构,带来了一个高度灵活的 any-to-any 多模态框架…...

论文信息搜集

系列博客目录 文章目录 系列博客目录1.秩典型相关分析及其在视觉搜索重排序中的应用《Rank canonical correlation analysis and its application in visual search reranking》2.利用边信息的规范秩估计在多维谐波恢复中的应用《Canonical Rank Estimation Using Side Informa…...

实操给自助触摸一体机接入大模型语音交互

本文以CSK6 大模型开发板串口触摸屏为例,实操讲解触摸一体机怎样快速增加大模型语音交互功能,使用户能够通过语音在一体机上查询信息、获取智能回答及实现更多互动功能等。 在本文方案中通过CSK6大模型语音开发板采集用户语音,将语音数据传输…...

图表的放大和刷新功能

正常图表渲染显示: // 漏斗ading动画 let myChartone; // 获取配置项 let optionone; // 获取漏斗的数据 let order; let pay_order; let pay_order_num; let pay_order_num_num; let optiones; // 漏斗渲染 function polt(data) {// 从名为data的对象中获取ordata属…...

SQLServer利用QQ邮箱做SMTP服务器发邮件

环境 Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64) SQL Server Management Studio 15.0.18384.0 SQL Server 管理对象 (SMO) 16.100.46367.54 Microsoft .NET Framework 4.0.30319.42000 操作系统 Windows Server2019 ———————————————— 前言&#xf…...

flutter 多文本,其中文本下划线往下移动

变态需求 flutter中再满足多行文本,文本内有多个样式,并且多个样式可触发事件的情况,将其中的一部分文本的下划线往下移 方式一: 实现 使用RichText组件,主要是看中里面的WidgetSpan可以穿child为一个widget 实现源…...

7.OPEN SQL

总学习目录请点击下面连接 SAP ABAP开发从0到入职,冷冬备战-CSDN博客 目录 ​编辑 1.OPEN-SQL 简单回顾 R3体系 OEPN-SQL 2.OPEN-SQL 读取数据 2.1Select 语句 select 1条数据 多条数据与into AS别名 2.2INTO 结构体 内表 例子 2.3FROM 选择动态表…...

Python轻松获取抖音视频播放量

现在在gpt的加持下写一些简单的代码还是很容易的,效率高,但是要有一点基础,不然有时候发现不了问题,这些都需要经验积累和实战,最好能和工作结合起来,不然很快一段时间就忘的干干净净了,下面就是…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...