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客户端,系统需要满足以下要求:
- 硬件要求:
- 处理器:x86-64架构的机器。
- 内存:至少8GB的RAM(推荐超过16GB以获得更好的性能)。
- 存储:至少100GB的可用磁盘空间。
- 软件要求:
操作系统:大多数开发工作在Ubuntu上进行。其他Linux发行版可能也可以使用,但需要参考Linux安装说明以确保兼容性。
工具:
- Git:用于版本控制和代码管理。
- Python:用于构建脚本和其他开发工具。
- 注意事项:
在Windows或Mac上构建Android客户端是不支持的,并且无法正常工作。建议在Linux环境中进行开发和构建。
这些要求确保你的开发环境足够强大,可以处理Chromium项目的构建过程,特别是在处理Android客户端时。确保系统满足这些要求将有助于避免构建过程中的常见问题,并提高开发效率。
Chromium for Android源码下载
以下代码下载需要连接外网才能下载
安装 depot_tools
- 下载depot_tools 仓库:
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
- 将 depot_tools 添加到PATH:
假设你将 depot_tools 克隆到了 /path/to/depot_tools,可以通过以下命令将其添加到PATH(建议将这行代码添加到 ~/.bashrc 或 ~/.zshrc 中):
export PATH="$PATH:/path/to/depot_tools"
获取代码
- 创建并进入 Chromium 目录:
mkdir ~/chromium && cd ~/chromium
- 获取 Android 代码:
使用 fetch 命令获取代码:
fetch --nohooks android
如果不需要完整的仓库历史记录,可以使用 --no-history 标志来节省时间。
注意:即使在快速的网络连接下,该命令也可能需要30分钟,在较慢的连接下可能需要数小时。
- 进入 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一个隐式转换函数类 //作用࿱…...

常见软件设计模式介绍:三层架构、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 ———————————————— 前言…...

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的加持下写一些简单的代码还是很容易的,效率高,但是要有一点基础,不然有时候发现不了问题,这些都需要经验积累和实战,最好能和工作结合起来,不然很快一段时间就忘的干干净净了,下面就是…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...

Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践,很多人以为AI已经强大到不需要程序员了,其实不是,AI更加需要程序员,普通人…...

HTTPS证书一年多少钱?
HTTPS证书作为保障网站数据传输安全的重要工具,成为众多网站运营者的必备选择。然而,面对市场上种类繁多的HTTPS证书,其一年费用究竟是多少,又受哪些因素影响呢? 首先,HTTPS证书通常在PinTrust这样的专业平…...
大数据驱动企业决策智能化的路径与实践
📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:数据驱动的企业竞争力重构 在这个瞬息万变的商业时代,“快者胜”的竞争逻辑愈发明显。企业如何在复杂环…...