Chromium源碼系列一:Chromium簡介及源代碼獲取和編譯
Chromium簡介
Chromium
是一個由Google
主導開發的網頁瀏覽器,以BSD
許可證等多重自由版權發行並開放源代碼。Chromium
的開發早自2006年即開始,設計思想基於簡單、高速、穩定、安全等理念,在架構上使用了Apple
發展出來的WebKit
排版引擎、Safari
的部分源代碼與Firefox
的成果,並采用Google
獨家開發出的V8
引擎以提升解析JavaScript
的效率,而且設計了[沙盒]、[黑名單]、[無痕瀏覽]等功能來實現穩定與安全的網頁瀏覽環境。
在此可以查看各個瀏覽器的市場占有率。
Chromium vs Chrome
Chromium
與Chrome
的差異主要表現在以下方面:
-
程序圖標:兩者圖標只在色彩上不同,
Chromium
是天藍色,而Chrome
是Google
公司的代表色(紅、黃、藍、綠);-
自動更新:
Chromium
不開放自動更新功能,所以用戶需要手動下載更新,而Chrome
則可自動臉上Google
的服務器更新,但新版的推出很慢; -
安裝模式:
Chromium
可以免安裝,下載zip壓縮包
后解壓即可使用,而Chrome
則只有安裝板; -
功能差異:新功能會率先在
Chromium
上推出,Chrome
則會相對落后很多。
-
獲取Chromium源代碼
可以先看一下官方文檔中的說明。簡單來講,獲取Chromium
源代碼之前,需要能翻牆,系統需要滿足一定的要求,我這里使用的是Mac
系統,就按照Mac
的要求來做,另外我使用的shadowsocks來訪問google。
安裝depot_tools
depot_tools
是Google
官方提供的一個用來checkout
、compile
、run
和submit
的工具集,可以幫助我們更好的學習和調試Chromium
代碼,因此我們先安裝depot_tools
。
-
克隆
depot_tools repository
gitclone https://chromium.googlesource.com/chromium/tools/depot_tools.git
-
添加
depot_tools
路徑到PATH
變量exportPATH="$PATH:/path/to/depot_tools"
假設你把
depot_tools
放置在目錄path/to/
目錄下。最好將上述命令添加到~/.bashrx
或者~/.zshrc
中,然后執行source ~/.bashrx
或者source ~/.zshrx
。
獲取代碼
-
首先確保
Unicode
文件名不會破壞HFS
。執行
gitconfig --globalcore.precomposeUnicode true
-
創建
chromium
目錄,切記chromium
所在的目錄名中沒有空格。我在下載depot_tools
之前已經創建了chromium
目錄,並且將depot_tools
和src
都放在了chromium
目錄下。執行
mkdirchromium && cdchromium
gitconfig --globalcore.precomposeUnicode true
-
使用
depot_tools
獲取chromium
代碼。執行
fetch chromium
# or
fetch chromium --no-history# 不下載全部的代碼提交歷史,推薦使用這個
下載完成后,會有一個.gclient
文件,以及源代碼目錄src
,之后的所有操作都在src中執行。
構建工程
Chromium
使用Ninja
和GN
作為主要的構建工具。執行
gn gen out/Default
其中out/
是在src
目錄下,Default
可以是別的名字,但是一定要在out
目錄下。
構建Chromium
使用Ninja
來構建Chromium
程序。執行
ninja -C out/Default chrome
執行這條命令需要挺長時間,我跑了十多個小時才完成build
,不過好的一點是,即使中途中斷了,再重啟也可以在之前的基礎上使用gclient sync
命令繼續構建。完成之后就可以在out/Default
目錄中看到Chromium瀏覽器的應用程序了。
使用Xcode
來構建Chromium
我們要使用Xcode
來閱讀和調試Chromium
代碼,因此我們需要執行
gn gen out/gn --ide=xcode
在用Ninja
和GN
構建完成之后,執行這條命令需要的時間就比較少了。然后就可以用Xcode
來打開這個工程了。執行
open out/gn/ninja/all.xcworkspace
下面是用Xcode
打開工程后的代碼結構。
至此,我們就在本地構建好了Chromium的源代碼,可以開始Chromium源代碼的閱讀之旅了。
原文地址:http://wangjinlong.xyz/2018/08/23/Chromium1/
我的博客即將搬運同步至騰訊雲+社區,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=3g8pxr15j54w4