文档章节

Chromium Android 源码编译踩坑过程(shadowsocks + ubuntu)

yhchinabest
 yhchinabest
发布于 04/07 12:18
字数 1581
阅读 402
收藏 4

本人历经一个多星期,利用业余时间,踩了无数个坑,最后终于成功编译chromium android的源码,回想起来真心不易,现特将这一过程分享出来,以免他人再走弯路。

首先,我要强调3点关键因素:

  1. 一定要有完善的梯子。最好是你已肉身翻墙,比如留学,移民,甚至是去国外旅游。如果做不到这点,那就只能使用翻墙工具,关于这块,由于我已经多年没用vpn,而改用shadowsocks,但之前也只是一直在mac上用带GUI的ss,而在Linux上,却不得不自己用命令行来配置,过程繁琐,还容易出错。可以说,大部分的时间是花在了搭梯子上。另外,如果你购买的是付费的shadowsocks,一定要注意流量额度和计费方式,我就是不凑巧用了个很贵的节点,导致我一下就用完了一个月的流量,还多花了几十块钱去充流量。
  2. 一定要用linux,而且要熟练使用,之前就是光在google官网上看了个chromium pc端编译的文档,说是支持mac编译,就兴冲冲的拿mac去下代码,结果怎么也不成功。后来看了chromium android的文档,才发现只能用linux。但我linux用的确实不熟,好多操作都要去现场百度,这样就耽误了不少时间。
  3. 不要幻想用骚操作来搞定,要老老实实跟着官网的步骤一步步的走,等这条路走通了再考虑用其他方式改进。我开始就是看了知乎上有人说自己搭了个美国的阿里云,然后把代码拿回本地编译。也照着去搞。开始发现阿里云确实快,下十几个g的代码嗖嗖的,2,3小时搞定,然后压了个包,花了一晚上拷贝到自己的电脑上(研究怎么用支持断点续传的拷贝方式又花了几个小时,开始想自己搭一个ftp,后来发现rsync就可以做到),又解压几个小时,结果发现编译不了。以为是代码下的有问题,就在阿里云上直接编译,没想到自己申请的cpu太少,以致编译用了8,9个小时,但是也编成功了。结果又花了很大力气重新打包代码,下载本地,解压,仍旧编译不成功。总以为是缺少啥文件,又费大劲去对比,重试,直到最终放弃。后来又看到有人用code aurora的国内镜像来代替谷歌官网的代码,便又去尝试,结果也不知道是什么原因,代码同步就是无法完成,最后还是无功而返。

那么首先还是讲一下我是如何在linux上用shadowsocks搭梯子。

  1. 去www.shadowsocks.com买一个服务,里面套餐很多,我自己一个人用,starter模式就够了。购买后,留意服务器地址,密码和加密方式。特别是加密方式,现在用的是chacha20-ietf-poly1305。这个加密方式直接导致好几个linux版的shadowsocks客户端不能用,只能用shadowsocks-libev。
  2. 接下来安装shadowsocks-libev,参考官网的说明https://github.com/shadowsocks/shadowsocks-libev,我的是ubuntu 16.04,又懒得从源码编译,所以直接通过包安装:
    sudo apt-get install software-properties-common -y
    sudo add-apt-repository ppa:max-c-lv/shadowsocks-libev -y
    sudo apt-get update
    sudo apt install shadowsocks-libev

    安装好后,修改配置文件,通常只需要修改server,password,method这三项

    # Edit the configuration file
    sudo vim /etc/shadowsocks-libev/config.json
    {
        "server":"服务器地址",
        "server_port":14005,      
        "local_port":1080,
        "password":"密码",
        "timeout":60,
        "method":"加密算法"
    }

    修改好后,先启动服务

    # Start the service
    sudo /etc/init.d/shadowsocks-libev start    # for sysvinit, or
    sudo systemctl start shadowsocks-libev      # for systemd

    再启动客户端

    ss-local -c /etc/shadowsocks-libev/config.json

     

  3. 验证你的梯子搭建成功。首先看看能否访问google,配置一下firefox,设置网络代理

然后设置代理方式和端口号,

注意:SOCKS Host,Port,SOCKS v5都要一致。

就算这步验证通过了,也别高兴太早,因为代码可不是通过浏览器下载的。所以你还要验证:

  • git能否翻墙。因为下载代码会用到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 config --global --unset http.proxy
    git config --global --unset https.proxy

    如何验证?在没有设置代理的情况下,clone这个代码是要超时的:

    root@yihao-MR-X5:/media/root/work# git clone https://chromium.googlesource.com/external/webrtc
    正克隆到 'webrtc'...
    fatal: unable to access 'https://chromium.googlesource.com/external/webrtc/': Failed to connect to chromium.googlesource.com port 443: 连接超时
    

    设置了代理之后,就可以正常开始clone了:

    root@yihao-MR-X5:/media/root/work# git clone https://chromium.googlesource.com/external/webrtc
    正克隆到 'webrtc'...
    remote: Sending approximately 188.21 MiB ...
    remote: Counting objects: 90, done
    remote: Finding sources: 100% (89/89)

     

  • 命令行能否翻墙。这里主要是为了给全局配置代理,因为下载代码的过程中,还会去google下载一些工具,可能是通过curl,也可能是自带的cipd_client(貌似这玩意是基于go)。具体怎么做,首先还是下载一个叫做polipo的工具:
    sudo apt-get install polipo  

    然后修改配置参数:

    logSyslog = true:
    logFile = "/var/log/polipo/polipo.log"
    
    socksParentProxy = "127.0.0.1:1080"  #这是socks代理的地址和端口
    socksProxyType = socks5
    
    chunkHighMark = 50331648
    objectHighMark = 16384
    
    serverMaxSlots = 64
    serverSlots = 16
    serverSlots1 = 32
    
    proxyAddress = "127.0.0.1" #这是本代理的地址端口 
    proxyPort = 8123
    

    重启polipo服务

    sudo service polipo restart  

    再去进行设置环境变量

    export http_proxy="http://127.0.0.1:8123"  
    export https_proxy="https://127.0.0.1:8123"  

    注意这个命令只在当前的终端窗口中有效,如果要使每个窗口都起效,可以添加至~/.bashrc,再通过下面的命令进行验证,有返回则说明成功

    curl https://www.google.com

至此,梯子已经全部搭建完成。下面开始进入实际的代码下载步骤。

有了梯子之后,就可以直接去官网上看编译手册了https://chromium.googlesource.com/chromium/src/+/master/docs/android_build_instructions.md 只要仔细阅读它的说明,后面的过程就会比较简单。如果你下载源码的过程中断了,只需再输入gclient sync即可,它会从当前进度继续下载。

© 著作权归作者所有

共有 人打赏支持
yhchinabest
粉丝 3
博文 42
码字总数 11431
作品 0
武汉
高级程序员
加载中

评论(1)

开源中国首席罗纳尔多
开源中国首席罗纳尔多
是c编译吗?
亚马逊AWS EC2搭建shadowsocks服务

亚马逊AWS EC2搭建shadowsocks服务 注册aws账号,绑定信用卡,一般用双币卡,普通信用卡也可以,但是绑定提交后,会产生预授权费用,1美金左右 创建并启动实例,选择免费的实例,由于本人选择...

jackmanwu
07/26
0
0
3行命令快乐并快速地搭建vpn [docker安装][电脑手机通用]

介绍一个超级简单的vpn搭建方式,安卓苹果windows linux都可以使用,可以说是万金油了。使用的服务器按小时计费(而非月付,不想用随时销毁服务器停止计费),而且可以先使用后付费,一个月低...

kalnkaya
07/05
0
0
aws搭建shadowsocks服务器

前段时间一直在忙open***的事情,现在手头有台aws服务器,打算利用起来。 如何利用呢?利用这台服务器进行科学上网,实际需求如下。 一、实际需求 在国内搜索技术文章,如果使用baidu的话,你...

wenhuifu
06/27
0
0
烂泥:aws搭建shadowsocks服务器

本文由秀依林枫提供友情赞助,首发于烂泥行天下 前段时间一直在忙openvpn的事情,现在手头有台aws服务器,打算利用起来。 如何利用呢?利用这台服务器进行科学上网,实际需求如下。 一、实际...

烂泥行天下
2015/08/08
0
0
新手向一键脚本搭建SS/SSR服务并开启BBR加速

自己写的一键搭建shadowsocks/shadowsocksR的脚本,一键脚本适用Vultr上的和搬瓦工所有机型(CentOS、Ubuntu、Debian),搭建ss服务器支持所有客户端类型,本机你是iOS,Android,Windows,M...

flyzy2005
06/10
0
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

c语言之内存分配笔记

先看一个数组: short array[5] = {1,2} // 这儿定义的一个int类型的数组,数组第1和第2个元素值是1和2.其余后面默认会给值为0; 或者 short array[] = {1,2};//这儿数组第1和第2个元素,数组...

DannyCoder
34分钟前
0
0
Shell | linux安装包不用选择Y/N的方法

apt-get install -y packageOR echo "y" | sudo apt-get install package

云迹
今天
1
0
Hadoop的大数据生态圈

基于Hadoop的大数据的产品圈 大数据产品的一句话概括 Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架...

zimingforever
今天
4
0
八大包装类型的equals方法

先看其中一个源码 结论:八大包装类型的equals方法都是先判断类型是否相同,不相同则是false,相同则判断值是否相等 注意:包装类型不能直接用==来等值比较,否则编译报错,但是数值的基本类型...

xuklc
今天
2
0
NoSQL , Memcached介绍

什么是NoSQL 非关系型数据库就是NoSQL,关系型数据库代表MySQL 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很耗...

TaoXu
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部