chromium 下载源码第一次会比较折腾,有兴趣的可以试试,我将下载的源码传了一份在百度网盘,不含gitlog,大小在6G左右,不想折腾的,可以下载,路径我放在最后,喜欢折腾的可以看看。
先租个服务器,默认服务器的系统是centos,我重装成ubuntu,版本也需要注意,否则会提示:“ Only Ubuntu 12.04 (precise), 14.04 (trusty), 14.10 (utopic), 15.04 (vivid), 15.10 (wily) and 16.04 (xenial) ”,重装系统很快一两分钟就好。CPU、RAM都是固定的,装的系统默认swap 分区只有512M,略微有点偏小了,影响效率,建议自行加大。
3.1 swap 分区增大,我增大4G:
首先根据服务地址/端口/密码,通过ssh连接上服务器,然后执行如下命令:
dd if=/dev/zero of=/root/swapfile bs=1M count=4096;
mkswap /root/swapfile ;
swapon /root/swapfile;
进入服务器页面,可以看到swap分区已经变大了。
3.2 安装必须的软件:
git :apt-get install git;(下载代码使用)
docker :apt-get install docker.io(shadowsocket)
docker run -d -p 431:431 oddrationale/docker-shadowsocks -s 0.0.0.0 -p 431 -k password -m aes-256-cfb(password 为密码,搭建shadowsocks)
3.3代码下载
下载代码:
mkdir ~/chromium && cd ~/chromium;
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git;
export PATH=$PWD/depot_tools:$PATH;
fetch --nohooks android;
cd src;
echo "target_os = [ 'android' ]" >> ../.gclient;
gclient sync;
build/install-build-deps-android.sh;
gclient runhooks;
下载指定的chromium 版本(60.0.3112.97):
mkdir ~/chromium && cd ~/chromium;
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git;
export PATH=$PWD/depot_tools:$PATH;
fetch --nohooks android;
cd src;
git fetch origin 60.0.3112.97;
git checkout -b my_stable_branch FETCH_HEAD;
gclient sync --with_branch_heads;
需要网络下载的代码已经下载完了,可以开始压缩(租的服务器一般性能都不算太高,建议下载压缩即可,编译打包回传到本地高性能服务器后进行编译)。
3.4代码压缩:
看是否需要保留git的提交记录,如果保留的话,压缩的文件会大的多大概在30G左右。因为我是指定版本,不需要保留git的提交记录压缩后的文件大概是6G左右(在命令窗口执行(1)find ./ -name *.git |xargs rm -rf ;(2)find ./ -name *.gitignore |xargs rm -rf (避免本地将代码上传到服务器时部分文件未上传))。代码打包建议将整个chromium目录都打包(包含隐藏目录.cipd、隐藏文件.gclient、.gclient_entries,depot_tools、src),避免部分隐藏文件未打包导致编译过程中出现各种错误,压缩命令:tar -czvf chromium.tar chromium;
前面这些操作很快都可以完成,比较麻烦的是将文件回传,文件回传会比较麻烦,我试过的方式有几种,比较比较推荐ftp:
3.4.1百度网盘(可支持断点续传,上传速度大概是400K左右,比较推荐使用)
apt install python-pip;
pip install requests;
pip install bypy;
bypy info;根据提示,通过浏览器访问https链接,如果此时百度网盘账号正在登陆,会出现长串授权码,复制,粘贴授权码,耐心等待一会即可,授权成功。
bypy upload filename;上传至你的百度网盘 bypy目录下。
3.4.2 scp(看着20几K的数据,我默默的放弃了,虽然也可以支持断点续传)
scp命令,下载速度比较慢,命令如下,需要指定port:
scp -P server_port root@server_ip:PATH/filename ./ (server_port 服务器端口,server_ip 服务器 IP,PATH:需要拷贝文件的目录,filename 拷贝的文件名)
3.4.3 ftp(在服务器上搭建ftp服务器,也可以续传,起一般早上6-8点过下载速度可以是5~8M,6点之前我没试过。8点~晚上12点一般都是在20~40K。所以如果下载代码,建议晚上打包好,早上6点起床ftp下载,很快就可以下载完了)
ftp 服务器搭建:
sudo apt-get install vsftpd;
mkdir ~/ftp;
cd ~/ftp;
chomd 777 path;
sudo useradd -d /home/ftp -s /bin/bash ftpname;(创建ftp用户名);
passwd ftpname;(为新建的用户设置密码)
vim /ect/vsftpd.conf;(修改ftp服务器配置,修改write_enable =YES)
service vsftpd start;
这里就搭建好ftp服务了,将需要回传的文件拷贝到ftp目录下,然后就可以在自己的电脑用ftp进行下载软件了,记得得设置端口号。
4、代码编译
4.1 编译参数设置
gn args out/Default(生产编译脚本的命令,根据需求配置参数,我的板子是32位的系统,想编译成一个单独的库libstandalonelibwebviewchromium.so,便于集成, gn args out/Default --list可以输出所有的编译配置项,有裁剪需求的可以关注此部分进行部门裁剪):
target_os = "android"
target_cpu = "arm"
is_debug = false
is_component_build = false
ffmpeg_branding = "Chrome"
proprietary_codecs = true
enable_remoting = true
然后退出保存。
4.2 代码编译
4.2.1 chrome apk编译:ninja -C out/Default chrome_public_apk;
4.2.2 content shell apk编译:ninja -C out/Default content_shell_apk;
4.2.3 webview apk编译:ninja -C out/Default webview_instrumentation_apk;
如果你的电脑性能够好,想全编译则执行
ninja -C out/Default。
chrome 编译出来的apk功能同我们手机下载的chrome apk,我们一般调试用webview apk进行编译。
webview apk 我在调试板子上执行会提示如下错误,一直无法拉起,暂时只能在模拟器进行调试,原因不知。
如果看到如下错误,有兴趣的可以去查一查,或者跟我一样先用虚拟机调试了。
chromium 源码路径如下,提取码是wbev,版本号是84.0.4122.0:
https://pan.baidu.com/s/1R4bEVm8YgPB8xNq1bwokPA