浏览器开发系列第一篇:如何获取最新chromium源码
背景:
最近摊上一个事儿,领导非要让写一篇技术文章,思来想去,自己接触chrome浏览器时间也不短了,干脆就总结一下吧。于是乎,本文顺理成章。由于有些细节必需描述清楚,所以这次先讲如何拿到chromium的源码,下次直接把编译过程写出来,供大家参考。
前期准备:
之前的chromium源码都是用svn来维护,所以源码地址网上贴的到处都是,我看了一下,svn的版本最新的也就到39,往下就没有更新了。所以又看了chromium的官方,把源码编译的前期准备看了一通。简单叙述如下:
从chromium网站看到下面几句话,说明depot_tools和git很重要。所以先从它们入手。
1.下载depot_tools
下载地址:
https://src.chromium.org/svn/trunk/tools/depot_tools.zip
注意:不要使用拖拽和复制粘贴的方式从压缩包中提取文件,否则”.git”隐藏文件夹下的文件不会被提取出来。“.git”文件夹是depot_tools自动更新的必要文件。你可以使用解压工具的“解压文件…”操作。
环境变量设置,给个图更直观:
管理员权限用户:
修改PATH系统变量,在最后增加depot_tools的路径地址,如:C:\workspace\depot_tools.
非管理员用户:
添加PATH用户变量:在用户变量点击新建,增加PATH变量名,变量值为depot_tools的路径地址,如上图。
2.安装git和python
如果你已经手动安装了msysgit和python,则跳过这一步。
从命令行到保存chromium源码的路径下,运行命令:gclient。第一次运行,gclient将会安装所有和获取源码相关的工具,例如git,python:
Fetching fromhttps://src.chromium.org/svn/trunk/tools/third_party/svn_bin.zip
fatal: unable toaccess 'https://chromium.googlesource.com/chromium/tools/depot_tools.git/':Failed connect to chromium.googlesource.com:9217; No error
Cannot rebase:You have unstaged changes.
Please commit orstash them.
Failed to updatedepot_tools.
如果遇到上述问题,应该是你无法连接到chromium服务器,你可以使用vpn或者代理。
注意:
1)如果你在cygwin或者PowerShell等非命令行窗口运行gclient时,有可能能正常运行,但是msysgit,python和其他工具可能不会正确安装。
2)在首次运行gclient时,如果看到和文件系统相关的很奇怪的错误,你可以去这里找答案: http://tortoisesvn.tigris.org/faq.html#cantmove2.
3)如果你在windows xp上运行,并且看到像下面的错误:“The system cannotexecute the specified program”, 请安装 “Microsoft Visual C++ 2008 RedistributablePackage”.
3.git设置
Git安装后需要一些设置
如果你从来没有用过git,还是先百度一下git的使用方法,至少知道一些简单的操作命令。
*在获取代码之前,确认git,python,depot_tools已经加入环境变量中。
4.获取代码
1)获取主干代码:到达保存chromium代码的路径,直接右键git bash,输入$ fetch --nohooks chromium --nosvn=true开始获取主干代码:
这个过程比较慢,估计下载需要几个小时时间,慢的话也许十几个小时,所以大家最好把这一步放在晚上睡觉时进行。
2)获取主干分支标签(版本)信息:
切换至src目录下:
git fetch --tags >>tags.txt 2>&1 //标签号42.0.2311.61会保存在tags.txt文件中
git checkout -b chrome_42.0.2311.61_local_branch 42.0.2311.61
gclient sync --with_branch_heads --jobs 16
以上命令的解析大家都可以在命令的帮助里面查到。
至此,代码已经被下载到各位的硬盘中,通过git命令就可以看到分支及标签情况。今天先讲这么多,下次会把编译过程提供给大家。
注:拉取代码的过程可能很长,取决于使用的vpn的质量;最后代码拉取成功但是执行runhooks的时候脚本可能会失败,至于是否影响chrome的编译,那就只能看运气了。
附:
chromium源码channel:
canary channel:实验版本,每日发布。它没有经过充分测试,可能有某些奇怪的bug。
dev channel:每2星期发布,相对稳定,新功能和新特性都有。
beta channel:每周更新,6周大版本更新。比较稳定了,比dev版小1个版本,比stable版本早进化一个月。
stable channel:稳定版,比dev版本小2个版本,2到3周次版本更新,6周主版本更新。