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 repositorygitclone 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
