chromium获取代码和编译

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

这几天跑去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:

 编译工程

http://dev.chromium.org/developers/how-tos/build-instructions-windows
目前最新的代码已经用vs2013编译了。好快啊,我最开始接触chromium的时候还是用的vs2008。这里可以用depot_tools里面的工具链ninja去编译代码,也可以自己安装vs2013去编译。

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

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

祝你好运

没什么好说,全凭人品。

《chromium获取代码和编译》有12个想法

  1. 昨天下载了这个代码,thks, 这个内核是 个chromium27吧? 。 这个chromium好像没有 javascript, 是将源代码删除了还是禁止了javascript。

  2. 你好,请教个问题大牛,cefclient中通过以下方式使用flash:

    command_line->AppendSwitchWithValue(L”–ppapi-flash-path”, strPath);
    command_line->AppendSwitchWithValue(L”–ppapi-flash-version”, L”19.0.0.185″);

    当flash全屏时,点击键盘上“Win”键或者点击其他顶层软件,会退出全屏模式。Chrome不会出现这种情况。如何处理?

  3. 楼主,你好,目前chromium已经使用vs2015了。我已经用Ninja编译成功,但想用vs调试时,vs调试器会异常终止。完全是按照官方文档https://www.chromium.org/developers/how-tos/debugging-on-windows的步骤,楼主能给一些建议吗?

    1. gn gen out/debug –ide=vs –filters=//base:*;//chrome:*;//content:*;//components:*;//net:*; –sln=chrome –no-deps

      然后在debug目录用vs打开chrome.sln

  4. GYP_DEFINES doesn’t specify fetch_telemetry_dependencies=1, skipping

    D:\github\chromium>echo %GYP_DEFINES%
    component=shared_library

    老大,我这个是怎么回事,我定义了GYP_DEFINES 环境变量,但始终都报这个错误

发表评论

电子邮件地址不会被公开。 必填项已用*标注