chromium源码编译android平台动态库

2023-11-12

chromium源码编译

参考博客:https://www.jianshu.com/p/5fce18cbe016

  • 拜祭一下祖先和各路神仙,还有上帝,毕竟代码是在他的地盘;
  • 一定一定要保证网路是通畅的,不能出现中断;

环境配置

  1. 本身编译环境Ubuntu 16.04,预留50G以上的磁盘空间; 
  2. 一个稳定的科学上网工具(需要自行领悟);
  3. 耐心;

一、配置访问google环境

1. git设置全局代理

// 设置git代理
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'

// 测试是否通畅,测试完后记得删掉对应文件,保证通畅即可,不必全部下载完成
git clone https://chromium.googlesource.com/chromium/src.git

// 最终记得取消git代理
git config --global --unset http.proxy
git config --global --unset https.proxy

2. https请求设置代理

export https_proxy=127.0.0.1:12333

// 测试是否通畅,测试完成后记得删掉对应文件,或者使用curl也可,保证https可以请求到GFW之外即可
wget https://www.google.com

二、下载源码

1. 设置depot_tools包

//获取depot_tools代码管理工具
clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
//配置path,替换实际地址
export PATH=$PATH:/media/psf/Home/code/chromium/depot_tools

2. 下载chromium源码

mkdir chromium
cd chromium
// 下载源码,这个过程网络不能中断,中断会重新下载,最终大约会下载40G左右的文件
fetch --nohooks android

3. 同步代码

要保证gclient sync --force没有错误地执行完成。

//同步一下代码,也可以用于下载过程中的意外中断
gclient sync --force

三、编译源码

  • 如果之前都正常gclient sync完成以后就可以进入编译阶段了。 
cd src
// 使用ninja编译,配置gn参数
gn args out/Default
  • 之后需要配置gn参数,配置完成保存
target_os = "android"
target_cpu = "arm"  # (default)
is_debug = true  # (default)

# Other args you may want to set:
is_component_build = true
#is_clang = true
symbol_level = 1  # Faster build with fewer symbols. -g1 rather than -g2
#enable_incremental_javac = true  # Much faster; experimental
  • 安装依赖阶段
sudo ./build/install-build-deps-android.sh

//以下只针对编译1.7jar包的需求,实际上目前chromium已经切换到java 1.8,所以不需要切换版本,切换后会有问题
//由于openjdk-7已经不再提供,所以需要手动安装open-jdk-7
sudo add-apt-repository ppa:openjdk-r/ppa  
sudo apt-get update 
sudo apt-get install openjdk-7-jdk 

//类似于android源码编译过程,之后指向open-jdk-1.7,可以用java -version验证是否切换成功
sudo update-alternatives --config javac
sudo update-alternatives --config java
//没有javaws的切换
sudo update-alternatives --config javaws
sudo update-alternatives --config javap
sudo update-alternatives --config jar
sudo update-alternatives --config jarsigner
  • 正式编译
// 编译对应的库
ninja -C out/Default/ net
ninja -C out/Default/ url
// 实际没有这个库名字
ninja -C out/Default/ zlib

四、问题汇总:

1. CIPD selfupdate failed. Trying to bootstrap the CIPD client from scratch...问题:

export DEPOT_TOOLS_UPDATE=0

2. 网络连接错误:

wget url查看网络返回是否通畅,不通畅就需要配置一下代理了~

3. gn.py: Could not find gn executable at: /media/data/Projects/OpenSource/chromium/src/buildtools/linux64/gn问题

//执行指令
gclient runhooks 

4. Unable to create '/media/psf/Home/code/chromium/code/src/thirdparty/androidtools/.git/index.lock': File exists.问题

删掉对应lock文件即可

5. You have PROXY values set in your environment,.....

// 不处理也是可以的。
// 找一个位置创建文件boto.cfg,填入代理信息:
[Boto]
proxy=http://127.0.0.1
proxy_port = 12333

// 设置boto_config变量,路径设置对应位置
set NO_AUTH_BOTO_CONFIG=/home/linux/code/chromium/boto.cfg

6. Syntax error: "(" unexpected问题

应该是源码本身的问题,我这里切换了一个分支,后台又用gclient sync同步了最新的代码以后,就可以正常编译了。

7. 其它问题

如果遇到其它问题,有解决方案的话可以加进来。

8. 最终解决办法

直接下载我这里编译好的chromium源码:https://pan.baidu.com/s/1nQESf1c0XTRAx2ktK1hBVQ

记得cat chromium1 chromium2 chromium3 > chromium.tar.gz合成一个文件,然后直接解压tar -xvf chromium.tar.gz

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

chromium源码编译android平台动态库 的相关文章

  • 自定义 ListView 和 onclick

    这是我的代码 一切 我按照你说的做了 但我仍然无法点击任何内容 我的意思是我可以点击但没有任何反应 package fixus core import java util ArrayList import java util Iterato
  • 在 Android 中使用 PhoneGap 打开 PDF

    我需要打开一个位于 url 中的 PDF 文件 我需要用 PDF 查看器打开它 有可能的 谢谢大家 此致 我建议使用儿童浏览器插件 https build phonegap com blog childbrowser plugin并使用 G
  • 将倒计时器从 10 秒改为 1 秒

    我有一个倒计时器 它以 1 秒的增量从 10000 毫秒倒计时到 0 毫秒 以使按钮在 10 秒后可单击 尽管计时器是准确的并且按照代码的说明执行操作 但我想更改秒的表示方式 但我不知道如何更改 java void startTimer c
  • Android 线程和处理程序不工作

    我最近重构了一个旧项目 发现无论我做什么 特定部分都不再需要正常运行 本质上 我有一个带有 TextView 的 Activity 该视图按时间间隔从同一类中调用的线程更新 暂停是通过 Thread sleep 完成的 并且使用 Handl
  • Android studio 添加外部项目到 build.gradle

    我有一个示例项目 具有以下设置 root Pure Java Lib Android Test Lib Android Test Project 哪里 测试项目 取决于 Test Lib 最后一个取决于 纯Java库 编译项目并启动此设置效
  • react-native-camera (android): takePictureAsync() 抛出错误

    从react native camera调用takePictureAsync 后 我收到此错误 framesToPop 1 nativeStackAndroid userInfo null message Preview is paused
  • 来自 InputStream 的 Android 通用图像加载器 URI

    我想问一下UIL URI是从InputStream输入的 因为我的图像源来自 ZIP 然后我必须提取它才能显示该图像 因为图像太大 我必须使用UIL库 任何人都知道如何从InputStream插入UIL 我认为你可以这样做类似于从数据库加载
  • 如何解决Android中的NullPointerException错误?

    下面的代码在 Eclipse 的模拟器中运行顺利 但在 Android 手机和平板电脑上运行时出现问题 public class RingerActivity extends Activity Called when the activit
  • 语音识别和文本转语音

    我想开发一个实现语音识别的应用程序 然后使用文本到语音引擎实现文本到语音 我发布了下面的代码 我使用两个按钮和一个列表视图 一个按钮用于语音识别 另一个按钮用于文本转语音 列表视图用于两者 首先在列表视图中发布语音识别的结果 然后应用程序将
  • 以编程方式更改小部件布局

    假设我有两个小部件布局 Layout1 和 Layout2 小部件的默认值是 Layout1 但我允许用户选择 他们希望小部件采用哪种布局 所以如果用户更改为 Layout2 如何以编程方式将布局更改为 Layout2 小部件没有像活动那样
  • 当我滚动 gridview 时图像发生变化

    GridView 从 URL 加载图像 当我滚动 gridview 时 更多图像机会 如何修复它 我尝试过 imageAdapter notifyDataSetChanged gridView invalidateViews 我还没有找到这
  • AWS Cognito-获取带有ID的用户信息

    有没有什么方法可以获取 AWS Cognito 池 在 Android 上 中未登录的用户的信息 并知道他的 ID 我尝试了该代码 AppHelper getPool getUser username getDetailsInBackgro
  • 如何将点击侦听器添加到 Android/Java Textview 中的字符串中?

    我想要完成的是大多数 Twitter 应用程序中的标准操作 在文本视图中 文本字符串中的单词前面可能有 提及或 主题标签 并且它们实际上能够添加点击侦听器这个词启动了另一项活动 有谁知道这是如何实现的 下面我附上了一张示例照片 显示了我想要
  • 有没有办法改变vim的默认模式

    有谁知道如何更改vim的默认模式 它的默认模式是命令模式 但是我可以将其更改为插入模式吗 只需将以下行添加到您的 vimrc 中 start Vim s default mode will be changed to Insert mode
  • SQLiteAssetHelper 甚至在从资产文件夹复制数据库之前就导致立即崩溃

    https github com jgilfelt android sqlite asset helper https github com jgilfelt android sqlite asset helper 我要从SQLiteOpe
  • Web 服务凭证 - OpenID/Android AccountManager?

    我正在构建一个网络服务 并想使用用户的谷歌帐户凭据 该服务在 GAE 上运行 并将有一个 Web 客户端和一个 Android 本机客户端 这是我第一次尝试类似的事情 我一直在阅读有关 OpenID 和 Android AccountMan
  • BlueZ D-Bus C,应用 BLE

    我正在尝试编写一个应用程序来搜索附近的蓝牙设备并与它们通信 我的应用程序将用 C 语言编写 并打算在 Linux 下工作 是否有通过 C 中的 D Bus 使用 BlueZ 的教程或示例 此应用程序的目的是从 BLE 中的文件发送数据 你能
  • 获取定制旋转器项目

    我实现了自定义微调器 public class MyAdapter extends ArrayAdapter
  • 同一活动中的多个日期选择器

    我对 Android 平台完全陌生 在学习开发过程的同时一直在构建应用程序 目前 我正在开展一项活动 需要部署 2 个日期选择器 一个是 开始日期 另一个是 结束日期 我一直在关注 Android 开发者页面上的 DatePicker 教程
  • 从 SD 卡读取 pdf 文件

    我想阅读存储在 SD 卡中的 pdf 文件 我尝试使用此代码片段 File file new File Environment getExternalStorageDirectory vvveksperten ypc pdf Package

随机推荐

  • c/c++依赖静态库、动态库符号问题

    假设 某可执行程序exe依赖liba中的funcA和libb中的funcB liba和libb中定义了同名的函数subfunc 供funcA和funcB调用 两个库中的subfunc实现不同 一个是相加 一个是相减 liba so liba
  • Flask-响应

    响应字符串 Flask调用视图函数后 会将其返回值作为响应的内容 多数情况下 响应就是一个简单的字符串 作为html页面回送客户端 如 app route admin def hello admin return Hello Admin f
  • [系统安全] 三十.CS逆向分析 (1)你的游戏子弹用完了吗?Cheat Engine工具入门普及

    您可能之前看到过我写的类似文章 为什么还要重复撰写呢 只是想更好地帮助初学者了解病毒逆向分析和系统安全 更加成体系且不破坏之前的系列 因此 我重新开设了这个专栏 准备系统整理和深入学习系统安全 逆向分析和恶意代码检测 系统安全 系列文章会更
  • jboss jndi配置部分参数详解

    使用的是jboss7 1 1 jndi的配置在 JBOSS HOME standalone configuration standalone xml中进行配置 配置jndi时有很多参数 解释下用到的一些参数 jndi name The JN
  • k8s笔记14--初次体验 开源云原生软件交付平台zadig

    k8s笔记14 初次体验 开源云原生软件交付平台zadig 1 介绍 2 部署 测试 2 1 部署 2 2 测试 3 注意事项 4 说明 1 介绍 Zadig 是 KodeRover 公司基于 Kubernetes 自主设计 研发的开源分布
  • 杰理之PC端拷贝语音文件到外挂flash速度慢如何解决【篇】

    开启了flash拷贝缓冲buffer
  • 面向对象程序设计 第一次作业 记录

    Date类的定义及使用 题目描述 定义一个Date类 该类有year month和day三个私有成员 用于存储日期的年 月和日信息 为该类定义默认构造函数 带参的构造函数 复制构造函数和读写数据成员的函数setDate和showDate 其
  • macOS 13 Ventura系统自动开机在哪设置?

    macOS 13如何设置自动开关机 Mac电脑可以设置一个自动开机时间来让电脑自动启动 Mac设置自动开关机的方法教程 macOS13系统正式版已经发布了一段时间 不知道大家有没有升级到macOS 13 Ventura最新系统呢 在 mac
  • GitBook, Git + Markdown 快速发布你的书籍

    本文转载至 http leeluolee github io 2014 07 22 2014 07 22 gitbook guide gitbook是一个用于发布个人书籍的平台 类似于国外著名的LeanPub 其中一个很大的特点是它利用gi
  • Mac OS X 打开自动播放

    本文转载至 http www defaults write com quicktime player x enable auto play feature Quicktime Player X 默认情况下是不会自动播放了 可以通过下面的命令
  • 刘二PyTorch深度学习(五)——Logistic Regression

    1 分类问题的输出其实是一个概率 2 二分类 只有两个分类的问题 0和1 3 饱和函数 导函数图像类似于正态分布 x越接近0 图像斜率越大 离0越远 斜率越小 当超过某一阈值时 导数值越来越小 最后趋近于0 4 Logistic函数 西格玛
  • nodejs中间件

    内置中间件 express中内置的中间件 中间件本质是一个函数 json json是处理json请求的 获取参数 req body app use express json 测试json是否成功的步骤 1 在postman发起请求 2 po
  • 智能运维发展史及核心技术研究

    作者介绍陈林博 工学博士 毕业于同济大学计算机系统结构专业 目前从事基础技术框架研发 云计算研究与应用 智能运维研究与应用等工作 何支军 工程硕士 毕业于复旦大学微电子专业 现任中国结算上海分公司技术开发部总监 长期从事登记结算技术系统的建
  • 【漏洞复现】CVE-2023-25157 GeoServer OGC Filter SQL注入漏洞

    启动环境 查看端口号 访问http your ip 8080 geoserver即可查看到GeoServer的首页 在利用漏洞前 需要目标服务器中存在类型是PostGIS的数据空间 datastore 和工作空间 workspace 在Vu
  • Cloneable接口的作用与深入理解深度克隆与浅度克隆

    cloneable接口的作用 cloneable其实就是一个标记接口 只有实现这个接口后 然后在类中重写Object中的clone方法 然后通过类调用clone方法才能克隆成功 如果不实现这个接口 则会抛出CloneNotSupported
  • Java后台以树形结构返回省市区三级区域信息

    欢迎访问个人博客德鲁大叔撸代码 在前台页面很常见的一种需求是 以树形结构展示具有层级关系的数据 比如企业的部门信息 大部分管理系统的菜单 省市区信息等等 具体如下图所示 一 表创建以及数据导入 执行下面创建表sql 创建sys region
  • Unity 电脑仿真装机演示项目

    2021 6 9更新 设计方案 三个场景 1 主场景附带两个跳转按钮 能跳转到理论学习和实战装机 2 理论学习场景展示每个部件的说明以及模型细节 可旋转缩放查看 3 实战装机场景用于演示装机过程 通过拖动部件到合适的位置达到组装目的 关键细
  • 【习题七】【数据库原理】

    文章目录 一 单选题 二 填空题 一 单选题 1 在SQL Server 中不是对象的是 A 用户 B 数据 C 表 D 数据类型 答案 B 2 声明了变量 DECLARE i int c char 4 现在为 i赋值10 为 c赋值 ab
  • 无线路由器及Wi-Fi组网指南(史上最全)

    白驹过隙 逝者如斯 经过断断续续几个月的更新 关于无线路由器和Wi Fi的介绍终于告一段落 其实 这个话题下还有很多很多的内容没有涉及到 然生有涯而知无涯 只能在此暂且搁笔 后续缘起再续 下面 正文开始 1 什么是无线路由器 在5 时代 手
  • chromium源码编译android平台动态库

    chromium源码编译 参考博客 https www jianshu com p 5fce18cbe016 拜祭一下祖先和各路神仙 还有上帝 毕竟代码是在他的地盘 一定一定要保证网路是通畅的 不能出现中断 环境配置 本身编译环境Ubunt