Chromium项目相关
Chromium 是一个开源浏览器项目,旨在为所有用户构建一种更安全、更快速、更稳定的方式来体验 Web。
自 Google 在 2008 年宣布 Chromium 项目以来,他们一直很高兴能够在开源 Web 浏览器的良好基础上进行构建,并为富 Web 平台的持续开发做出贡献。如今,Chromium 被全球数百个不同的项目使用,包括 Chrome 等大型浏览器、LG 的家用电子产品、Electron 等应用程序框架,甚至是 Bloomberg 终端和 SpaceX 太空舱控制软件等自定义应用程序。
Chromium项目官网
- Chromium 官方网站:https://www.chromium.org/ 这里是 Chromium 项目的核心信息源,提供了项目的介绍、开发文档、源码下载、开发流程等详细内容,对于想要深入了解 Chromium 架构、开发机制的人来说是必不可少的资源。
- https://www.chromium.org/chromium-projects/
- Getting Around the Chromium Source Code Directory Structure
- Multi-process Architecture
- How Chromium Displays Web Pages
- Out-of-Process iframes (OOPIFs)
- Chromium Blog
- https://www.chromium.org/Home/
下面是一个略显过时的Chromium依赖关系图。特别是WebKit 被 blink/renderer 所取代。较低的模块不能直接包含来自较高模块的代码(即内容不能包含来自 chrome 的头文件),但使用嵌入器 API 与之通信。
Chromium源代码
- chromium: https://source.chromium.org/chromium
- chromiumos: https://source.chromium.org/chromiumos
Chromium 源代码仓库:https://chromium.googlesource.com/chromium/src 可以直接访问 Chromium 的源代码,通过阅读代码能深入了解其内部实现细节。可以需要科学上网才能稳定的访问和下载。
Chromium源代码的目录结构如下:
- android_webview:为了与Android framework层对接,对content层的代码进行了封装;
- apps:Chrome packaged apps的代码,我们可以不用关注这部分;
- base:提供给所有子工程使用的通用代码,相当于是一个基础库的实现,例如字符串处理、智能指针等等,只有当代码需要共享给其他顶级目录工程时,才能添加到这里面;
- breakpad:google的一个用于处理程序奔溃的开源项目,它是直接从GoogleCode的svn拉过来的;
- build:所有工程共用的编译配置;
- cc:Chromium合成器的实现;
- chrome:Chromium浏览器;
- components:给content层调用的一些组件模块;
- content:content模块的实现,多进程沙盒浏览器的核心代码;
- devices:通用底层硬件api的跨平台抽象;
- ipc:IPC通信模块
- media:多媒体相关的模块
- net:为Chromium开发的一个网络库,在运行webkit下的test_shell时可以单独使用,可以参考chrome/common/net;
- out:编译生成的目录
- sandbox:沙箱项目,用来防止被黑客攻击的渲染器修改系统;
- skia:google为Android开发的图形库,直接从Android代码树中复制过来的,在ui/grx之后增加了一些对skia进行封装的类;
- sql:SQLite数据库方面的模块;
- testing:google开源测试工具GTest,用来进行单元测试
- third_party:一些第三方库,比如图片解码、压缩算法库,在chrome/third_party中也有一些chrome专用的第三方库,包括blink渲染引擎;
- ui/gfx:共享图形库,这是渲染chromium ui图形的基础;
ui/views : 进行ui开发的简单框架,提供了渲染、布局、事件处理机制。大部分的浏览器 ui 都基于这个框架来实现。这个目录下包含了基本对象,还有一些浏览器特定的对象位于chrome/browser/ui/views - url:google开源的URL解析和标准化库;
- V8:google开发的V8 JavaScript引擎,这是从google code的svn中直接拉取的。
华为维护的openharmony-tpc/chromium_chrome项目
GitCode上华为维护的openharmony-tpc/chromium_chrome开源仓,下载代码开始学习,如下图所示:
下载完后的chromium_chrome项目的master分支目录结构大致如下图所示:
Chrome和Chromium 官方资源
- Chrome 开发者文档:https://developer.chrome.com/docs/ 提供了关于 Chrome 浏览器各种特性和功能的开发文档,包括 Chrome 扩展开发、Web API 使用、性能优化等方面的内容。
- Chrome 官方博客:https://blog.chromium.org/ 会发布 Chrome 浏览器的最新功能、更新动态、安全公告等信息,有助于及时了解 Chrome 的发展方向和新特性。
- Chromium 开发者论坛:https://groups.google.com/a/chromium.org/g/chromium-dev
- Chromium docs
- Blink (Rendering Engine)
书籍和教程
-《Chromium 浏览器开发实战》:这本书详细介绍了 Chromium 的架构、编译、开发流程等内容,结合实际案例帮助读者掌握 Chromium 开发技术。
参考资料
- 怎样阅读 Chromium 源码?
- 在中国使用chromium镜像
- How Blink Works 中文译文
- How cc Works
- How cc works
- How Blink works
- Chromium网页加载过程简要介绍和学习计划
- 【Chromium系列】多进程架构
- Chromium Viz 浅析 - 介绍篇
- 【Chromium 系列】Renderer
- 【Chromium系列】Navigation
- Chrome浏览器引擎 Blink & V8
- Chromium源代码目录结构
- Chroium 源码目录结构分析(3):目录和模块总结(src根目录部分)
- Chromium的IPC消息发送、接收和分发机制分析
- Android WebView加载Chromium动态库的过程分析
- Chromium网页输入事件捕捉和手势检测过程分析
- Chromium网页滑动和捏合手势处理过程分析
- Chromium插件(Plugin)执行3D渲染的过程分析
- Chromium插件(Plugin)模块(Module)加载过程分析
- Chromium扩展(Extension)机制简要介绍和学习计划
- Chromium扩展(Extension)通信机制分析
- Chromium扩展(Extension)的Content Script加载过程分析
- Chromium网页DOM Tree创建过程分析
- Chromium为视频标签渲染视频画面的过程分析
- Chromium为视频标签创建播放器的过程分析
- Chromium分发输入事件给WebKit处理的过程分析