导航

[转]Chromium目录结构

Posted on 2010-09-30 09:32  maconel  阅读(1141)  评论(0)    收藏  举报

转自 http://blog.csdn.net/apol/archive/2010/04/07/5459954.aspx

Chromium都已经出了这么长时间,网上还没有真正去阐释Chromium的文章,我也是才开始看,就着Dev里的文档写下自己的学习记录吧,希望能帮到大家。

整个源代码一共有超过20万个文件!一定要下那个tarball,svn直接check会死人的。下载下来后,能够在\src\chrome下找到chrome.sln,这个就是主体的解决方案了。这个是基于V8的js引擎的,官方文档上说另外还有一个是chrome_kjs.sln,说是采用的webkit的js引擎,但是我没找到这个文件,不知道是不是去掉了。。。

从各方面的来源信息,Chromium主要是两部分组成,分别是Browser和Renderer,分别负责浏览器的核心功能和显示页面,我是个菜鸟,不知道这样的结构是好是坏,不过希望这样的结构能让代码更清晰吧。

下面就文档目录结构做一个简单的翻译:

base:通用代码文件夹,涵盖字符串处理等,普通开发者基本掺合不到这里来。
        gfx:共享图形类,为特定的chromium程序添加图形类。
breakpad:开源的crash(崩溃)报告项目,Google连这个都单独建一个工程。
build:配置项目版本管理,这个我理解的不准确,原文:Build-related configuration shared by all projects。
chrome:这个好像不用说了,核心,哦也。
data:运行某些测试时的数据文件夹。
gears:Gears!这个……
googleurl:开源的地址分析及标准库
net:为chromium开发的网络功能库
sandbox:这个应该是google最牛的一项功能了,因为有了sandbox,chrome避免了几乎所有的黑客攻击。
skia:为Android开发的Skia图形库,直接从Android项目里拷贝过来的,鬼知道有啥用啊
testing:单元测试用的代码集,GTest code
third_party:希望这个词的后半部分不会被敏感词,第三方的编码解码库
tools:各类工具
V8:哦也,史上最高效的JS引擎
webkit:全部……只读!

其实下载下来的tarball里还有很多文件夹,目前还不知道是干啥的,有部分是一看名字就知道是做什么用的,比如media等,其他的等以后清楚了,再更新上来。

==============寂寞的分割线================

这一部分是单独的chrome文件夹的目录结构说明,在分项说明之前,我打个大体的比方,我们的上网浏览工作就好比领导要求打字员打印一篇红头文件,自然领导就是我们这些浏览器使用者,chrome就是这个打字员,打字员的主要代码都在app文件夹里,而打字员的工作,通过电脑和打印机实现,browser就是电脑,而renderer就是打印机了,打字员负责决定用什么打字软件,什么字体,字号等,用browser来实现,然后用renderer打印显示出来。比喻的可能不是很好,不过基本意思应该不会背离太远,呵呵。

app:浏览器最基本的核心,启动时运行,安排是browser兄还是renderer弟去处理当前的进程,包含两个项目chrome.exe和chrome.dll,除了图形和字符串等一般不用做任何修改。以上是官方的说法,其实我理解,app里的部分就是浏览器最最基本的任务管理程序,就好比这是个工厂的车间办公室,安排其他的程序去完成相应的生产工作。
browser:chromium的核心组件,这里组件这个词用的不是很恰当了。包含主窗口程序、UI、以及全部的输入输出程序及存储程序。浏览器的主体除了它,就是renderer了。它负责和renderer通信来处理网页。
common:在browser和renderer之间的共享文件,这是个办公室主任啊。
Debug:编译生成的chromium就在这里,首次成功编译运行chrome的感觉,爽!
gpu:官方没有标注,但是从字面上应该是为了将来能够快速处理html5做准备吧。
installer:以MSI打包的方法制作安装包,话说现在我还不会用这个功能捏。
plugin:chromium插件功能的源文件。
renderer:每个标签都会运行一个renderer进程,它将webkit嵌入,并和browser就输入输出进行进一步处理。
test:各类测试功能代码。
third_party:第三方的chromium的库文件。未来chromium应该就是个第三方程序集吧,呵呵。
tools:顶级目录里没有就tools文件夹做标注,其实这里也非常重要,生成程序,内存(有的时候还真头疼用中文翻译英文,大家有时间还是去读英文原版吧),性能分析,设置虚拟的浏览历史等。
views:其实我最喜欢看这部分了(还没开始看),更改chromium那个朴素的样子就依靠这部分代码。另外在browser/views还有一部分。