转自360公司的一位仁兄,链接地址:http://blog.gclxry.com/?p=364

之前一直是用一个chromium27的代码来研究chromium的代码。自己也调用chromium content 写了一个浏览器器,最基本的功能都有。

这几天跑去http://dev.chromium.org/ 上看,chromium的代码刚好全部迁移到了git管理了。我就想获取最近的代码研究吧,毕竟chromium27快一年了,要跟上时代哈。

获取chromium代码,以及正确的编译成功不是一件容易的事。其中的坑太多了,当初我也是一路摸打滚爬中走过来的,说多了都是眼泪。我在这里总结一些,给后来人一点帮助吧。

选择开发频道

在获取chromium代码之前你先要搞清楚自己需要哪个版本的代码。chromium同时有四个发布分支,分别是:

  • canary频道。这一般是最前沿的实验版本,每日发布。它没有经过充分测试,可能有某些奇怪的bug。如果是为了学习基础的chromium代码,我不建议跟进这个分支。
  • dev频道。每2星期发布,相对稳定,新功能和新特性都有。
  • beta频道。每周更新,6周大版本更新。比较稳定了,比dev版小1个版本,基本是发布的候选,比stable版本早进化一个月。
  • stable频道。就是稳定版,比dev版本小2个版本,2到3周次版本跟新,6周主版本跟新。经过了充分的测试,我比较推荐这个版本。

这里可以看到详细的说明:http://www.chromium.org/getting-involved/dev-channel

获取代码

http://dev.chromium.org/developers/how-tos/get-the-code 上已经写清楚了如何获取代码。现在统一都是用git了。

首要要配置好depot_tools。chromium会用depot_tools去获取代码。这个基本上按着文档来。因为中国的网络问题,获取chromium代码经常失败,这里强力推荐用vpn。有些公司会屏蔽vpn,比如我们公司。这里只能用IE代理了,但是chromium获取代码很多地方没有走IE代理,这里需要我们自己去hook下脚本了,我曾经写过如何设置代理的博客。这种方法太麻烦。

获取代码现在真是简单,就一句 fetch chromium,然后慢慢等吧,会下载十几GB的数据。只要把网络问题解决了,获取代码还是比较顺利的,否则就是无法跨越的大坑。

切换到工作分支

成功获取代码不一定能够成功编译通过,这一点是最郁闷的。

获取完代码一般是在master分支,这个分支一直都在更新,不稳定。我们需要切换到一个已发布的稳定版本上。我选择follow stable频道的代码,然后就是要选择一个版本。在chromium的发布日历 http://dev.chromium.org/developers/calendar 上找到最新的stable频道版本,目前是37.0.2062.103。

然后在代码仓库目录中运行git:

 
1
2
3
4
5
6
7
8
# 获得所有发布tag的信息。
git fetch --tags
 
# 根据37.0.2062.103版本建立一个你自己的分支
git checkout -b your_release_branch 37.0.2062.103
 
// 同步所有相关工程代码
gclient sync --with_branch_heads --jobs 16

编译工程

http://dev.chromium.org/developers/how-tos/build-instructions-windows

目前最新的代码已经用vs2013编译了。好快啊,我最开始接触chromium的时候还是用的vs2008。这里可以用depot_tools里面的工具链ninja去编译代码,也可以自己安装vs2013去编译。

用vs2013去编译代码经常会编译不过。因为chromium里面包含的第三方工程太多了,很多在windows下面有库的依赖,字符编码等问题。我个人的推荐做法是用ninja去编译代码,用vs2013去浏览、编辑和调试代码,脚本如下:

 
1
2
3
4
5
6
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_DEFINES=component=shared_library
set GYP_MSVS_VERSION=2013
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
gclient runhooks
pause

如果是编译成release版本,脚本如下:

 
1
2
3
4
5
6
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_DEFINES=branding=Chromium buildtype=Official
set GYP_MSVS_VERSION=2013
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
gclient runhooks
pause

祝你好运

没什么好说,全凭人品。

最新文章

  1. Android WebView 302斗争之旅
  2. S Gallery – 很有特色的响应式 jQuery 相册插件
  3. Beta 分工比例
  4. "HTTP 错误 500.19 请求的页面的相关配置数据无效" 解决办法
  5. 【.Net免费公开课】--授技.Net中的高帅富技术-"工作流"
  6. linux 线程回顾
  7. char,varchar,nvarchar,text区别与联系
  8. SQL Server 连接 MySQL
  9. EBS总账模块与其他模块数据关联关系
  10. Vue.js安装使用教程
  11. mybatis 中使用oracle merger into
  12. Python学习手记
  13. liunx 运维知识二部分
  14. java中将表单转换为PDF
  15. 学习Tensorflow的LSTM的RNN例子
  16. apktool逆向apk包
  17. Volley源码分析(四)NetWork与ResponseDelivery工作原理
  18. 解决 PermGen space Tomcat内存设置(转)
  19. cocos代码研究(19)Widget子类ImageView学习笔记
  20. redis 实现消息发布和订阅

热门文章

  1. redis unwatch discard
  2. css shorthand属性简写
  3. 怎样用ZBrush中复数对象进行工作
  4. 如何解决python中urlopen超时问题
  5. UESTC 901 方老师抢银行 --Tarjan求强连通分量
  6. Linux ncurses编写 FlapyBird 第一步
  7. xcode插件XAlign
  8. Gvim使用
  9. salt进程查看插件&salt批量创建用户
  10. log4j输出日志乱码(转)