1、chrome源码目录结构
Chrome source非常庞大,并且在其主目录下还包含有工具和组件,任何一个工具和组件也附带有其源代码。
首先得熟悉这些源代码的组织结构,在http://src.chromium.org/svn/中包含如下子目录:
releases,曾经发布过的chrome源代码的正式版本;
trunk,当前最新的源代码。由于releases中的代码比较旧,这里就不做说明了,只说明trunk的结构。
在trunk下面有3个重要的目录:
deps包含了chrome编译和运行所需要的全部组件的代码。
src里面包含的则是chrome的主程序的代码,
tools包含的是下载和配置编译所需要的第三方工具的压缩包和源代码,其中就有svn和python这2个比较重要的工具。
2、下载工具
有三种方式可以获取chromium源码:
1、从chrome官网上直接下载源代码压缩包
2、svn从http://src.chromium.org/svn/trunk/src这个地方heckout,这要求你先在本地建一个源代码的主目录。
3、使用depot_tools,也是本文采取的方式。google提供的一个部署工具depot_tools。虽然这三种办法都可下载完整的源代码,但目前的情况是:chrome基于Visual Stdio 2005 进行编译,如果顺利完成编译工作,自然少不了sln文件,较早的源代码中包含有现成的sln和vcproject文件,但后来做了修改,这些文件被抛弃掉,Google自己开发了一种脚本工具叫做GYP,这个工具采用python编写,GYP采用了自定义的一套规则,用于生成各种工程文件。而关键的python则包含于depot_tools中,因此不论采用什么方法下载的代码,都得下载depot_tools这个工具,以获得必须的工程文件。
确定使用第三种方法depot_tools下载源码,首先我们要下载depot_tools: http://src.chromium.org/svn/trunk/tools ,包括一个目录和一个zip格式的压缩包。
(1)下载depot_tools到本地存储,假设位于d:/depot_tools.
(2)将d:/depot_tools添加到系统环境变量中。
(3)创建一个源代码根目录,假设为 d:/chrome,目录不得包含空格。
(4)在命令行下切换当前目录到d:/chrome。
(5)执行命令 gclient config http://src.chromium.org/svn/trunk/src ,该命令会首先下载svn和python分别到d:/depot_tools/svn_bin和d:/depot_tools/python_bin。(也可以指定版本:gclient config http://src.chromium.org/svn/releases/36.0.1929.1,源码版本查看地址:https://src.chromium.org/viewvc/chrome/releases/ )
第(5)步可能出现如下问题:
问题1:下载git失败:Cannot make HTTP request(操作超时)
解决办法:1) 从https://commondatastorage.googleapis.com/chrome-infra/git-1.9.0.chromium.3_bin.zip直接下载git-1.9.0.chromium.3_bin.zip文件,然后 发布到任意http server。
2) 打开depot_tools安装目录下bootstrap\win\win_tools.bat文件,找到set GIT_ZIP_URL=https://commondatastorage.googleapis.com/chrome-i nfra/%GIT_ZIP_FILE%修改为1)中发布的地址,例如http://localhost:7869/%GIT_ZIP_FILE%
3) 再次运行gclient,ok!
问题2:连接googlesource错误:Failed connect to chromium.googlesource.com:443
解决办法:修改host,添加以下内容:74.125.31.82 www.googlesource.com
74.125.31.82 android.googlesource.com
203.208.46.172 cache.pack.google.com
59.24.3.173 cache.pack.google.com
问题3:更新depot失败:depot_tools update failed. Conflict in /opt/depot_tools
Cannot rebase: You have unstaged changes.
Please commit or stash them.
解决办法:cd depot_tools/
git checkout *
(6)执行gclient sync --force,开始同步代码,如果下载过程中出现问题,重新执行此命令
若在下载源码过程中出现下载toolchain_win_x86.tar.bz2等文件失败时,可以考虑如下做法:
a) 用浏览器将这些文件下载到本地(可能url会被墙,需要结合goagent与chrome,具体配置goagent的方法见《Linux下配置Goagent》)
b) 在本地搭建tomcat服务器,搭建一个可供本地连接并下载的web服务器。
c) 分别为每个文件配置目录,最终url的形式如:http://127.0.0.1/x86_toolchain/r12034/toolchain_win_x86.tar.bz2
d) 修改D:\chromium-src\src\native_client\build\toolchainbinaries.py文件:BASE_DOWNLOAD_URL = ('http://127.0.0.1:8080')
然后重新执行gclient sync --force即可。
参考博客地址列表:http://blog.csdn.net/namelcx/article/details/5971159
http://blog.csdn.net/glunoy/article/details/23591047
http://blog.csdn.net/hezhipin610039/article/details/31372619