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