chromium源码编译android平台动态库

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

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值