谷歌開源項目Chromium的源碼獲取與項目構建(Win7+vs10/vs13)


轉自:http://blog.csdn.net/kuerjinjin/article/details/23563059

 

從12年那會兒開始獲取源碼和構建chromium項目都是按照那時候的官方要求用win7+vs2010,相對來說也比較簡單,按照步驟來也很快能編譯出來。

1.官網的編譯配置介紹:http://www.chromium.org/developers/how-tos/build-instructions-windows

2.編譯需要的工具:vs2010/sp1,win8sdk,DXSDK,depot_tools

我用的工具都是在這里了:2010CompilerToolsForChrome

depot_tools也可以從官方獲取:depot_tools (命令行下執行 gclient 它會自動下載安裝構建項目解決方案所需要的工具 python, git 和 svn ),下載下來之后找個地方解壓出來,比如我是解壓到E:盤下。

 

3.修改配置
按照官網說的,配置環境變量:GYP_MSVS_VERSION和depot_tools的path路徑。
如果win8SDK的安裝路徑不是默認的 C:\Program Files (x86)\Windows Kits\8.0 的話,就需要增加一個環境變量。
GYP_DEFINES 值為你真正安裝win8SDK的位置,比如C:\Users\Kuerjinjin\Downloads\Windows Kits\8.0
 
配置DirectX sdk的頭文件及lib庫路徑:
windows鍵 + r鍵,輸入%localappdata%\Microsoft\MSBuild\v4.0 並運行,在彈出的文件夾列表中找到Microsoft.Cpp.Win32.user.props和Microsoft.Cpp.x64.user.props並修改這兩個文件。
[html]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. <span style="font-size:18px;"><PropertyGroup>   
  2.     <IncludePath>$(DXSDK_DIR)\Include;$(IncludePath)</IncludePath>   
  3.     <LibraryPath>$(DXSDK_DIR)\Lib\x86;$(LibraryPath)</LibraryPath>   
  4. </PropertyGroup>  
  5.   
  6. <PropertyGroup>   
  7.     <IncludePath>$(DXSDK_DIR)\Include;$(IncludePath)</IncludePath>   
  8.     <LibraryPath>$(DXSDK_DIR)\Lib\x64;$(LibraryPath)</LibraryPath>   
  9. </PropertyGroup</span>  

修改WRL的頭文件,默認C:\Program Files (x86)\Windows Kits\8.0\Include\winrt\asyncinfo.h
找到 enum class AsyncStatus { ... }
改成 enum /*class*/ AsyncStatus { ... }
 
4.代碼獲取:
找一個空間超過60G的磁盤比如E:\,創建文件夾chromium30,命令行下切換到該目錄,
[plain]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. <span style="font-size:18px;">>e:  
  2. >cd chromium30  
  3. >gclient config http://src.chromium.org/svn/releases/30.0.1559.0/ </span>  
拉取目前最新的源碼配置,當然你也可以在 http://src.chromium.org/svn/releases/中選擇自己想要的源碼版本。
一般會在當前目錄下生成一個.gclient的配置文件。為了減少不必要的代碼獲得的時間浪費,打開.gclient文件在“custom_deps”節里忽略掉部分測試代碼,如:
[plain]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. <span style="font-size:18px;">solutions = [ { "name"        : "30.0.1559.0",  
  2.                         "url"         : "http://src.chromium.org/svn/releases/30.0.1559.0",  
  3.                         "deps_file"   : "DEPS",  
  4.                         "managed"     : True,  
  5.                         "custom_deps" : {  
  6.                                    "src/webkit/data/layout_tests/LayoutTests": None,  
  7.                                    "src/third_party/WebKit/LayoutTests": None,  
  8.                                    "src/chrome/tools/test/reference_build/chrome": None,  
  9.                                    "src/chrome_frame/tools/test/reference_build/chrome": None,  
  10.                                    "src/chrome/tools/test/reference_build/chrome_linux": None,  
  11.                                    "src/chrome/tools/test/reference_build/chrome_mac": None,  
  12.                         },  
  13.                        "safesync_url": "",  
  14.                       },  
  15. ]</span>  

不要關閉命令提示,直接在當前目錄下輸入gclient sync --force 進行源碼的同步。接下來就等吧,這個同步的時間會很長,要同步十幾G的文件下來。正常情況下會在同步完成之后生成解決方案。如果沒有,在當前目錄下接着輸入gclient runhooks --force。如果確保已經100%同步完成了,生成解決方案的話可以直接輸入 python build/gyp_chromium
如果是第一次接觸這個項目,那么找一下 src/chrome/chrome.sln 打開,將chrome項目設置為啟動項目,然后調試就OK。
-------------------------------------------------------------------------------------------------------------------------------
自美國時間2014年3月1日開始,谷歌對chromium源碼的構建方式做了調整。
關於系統版本只支持Windows 7 x64或更高版本, x86的操作系統已經不再支持。
從chromium r254340(chromium33)之后的版本,默認的調試工具唯一指定為Visual Studio 2013,
所以如果使用最近的源碼進行構建,需要安裝VS2013並修改 GYP_MSVS_VERSION=2013
而構建工具除了之前一直在使用的 depot_tools ,還增加了 ninja 工具的配合(ninja也是整合在了depot_tools中)。
所以一直在使用舊版本depot_tools的開發者們,需要先更新 depot_tools (之前也就300M左右,更新后約1.86G)了。
另外一個就是要獲取VS2013的工具鏈腳本(toolchain script)
該工具鏈腳本不會修改系統環境,所以使用VS13或者之前的VS10都木有問題。
下載后的工具鏈腳本存放在 depot_tools \ win_toolchain \ vs2013_files 
如果系統中安裝了VS2013,你可以用它來編輯和調試,ninja 將仍然使用depot_tools來構建版本。
具體就以下兩步:
[plain]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. <span style="font-size:18px;">python src\tools\win\toolchain\toolchain.py   
  2. win_toolchain\env.bat</span>  
其實,說白了就是要更新一下原來的depot_tools工具。如果depot_tools更新好了,其他的跟之前的大同小異。
比如:
[plain]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. <span style="font-size:18px;">>e:  
  2. >cd E:\chromium35  
  3. E:\chromium35>gclient config http://src.chromium.org/svn/releases/35.0.1900.0  
  4. E:\chromium35>gclient sync --force(以往這一步會強制同步代碼后生成解決方案,現在則會在同步一部分后出現找不到文件的錯誤)  
  5. E:\chromium35>cd src  
  6. E:\chromium35>gclient sync(確保源碼同步完成)  
  7. 構建方式有兩種,一個是使用 ninja 構建  
  8. E:\chromium35\src>ninja -C out\Debug chrome  
  9. 然后在 out/Debug 下就能看到編譯出來的文件。  
  10. 另一種就是使用我們熟悉的VS來構建,需要設置一個環境變量  
  11. GYP_GENERATORS=msvs-ninja,ninja  
  12. 然后直接  
  13. E:\chromium35\src>gclient runhooks  
  14. 然后就能在 src/chrome/下找到chrome.sln的解決方案,調試方式就跟以前一樣了。</span>  
 
-------------------------------------------------------------------------------------------------------------------------------------------
TIPS:如果是使用了chromium r254340(chromium33)之后的版本,可以直接下載我安裝好的depot_tools工具,然后配置一下環境變量就可以直接用了。

1. depot_tools工具,下載后解壓配置環境變量。
2. git的更新包(1.9的,下載后解壓到depot_tools文件夾下就OK)
3. VS2013開發工具
 
已經生成解決方案的幾個源碼包:
 
    Chromium39.0.2132.2 (含depot_tools和批處理)
 
之前一些舊版本的源碼包:(可供學習研究用,VS10的項目,部分已經生成解決方案)
-----------------------------------------------------------------------------------------------------------------------------
很久沒同步谷歌的源碼了,突然發現現在谷歌獲取chromium源碼的方式又變了,實在是太坑爹了!說一下最新幾個版本的獲取方式:
首先說幾點:
1.現在要獲取源碼沒有VPN啥都干不了,所以你如果想要下載源碼這個是少不了的!
2.再一個就是通過訪問http://src.chromium.org/svn/releases/發現,從chromium39.0.2313.2之后的源碼不能通過之前那種gclient config http://***的方式獲取了,之后的chromium的代碼剛好全部遷移到了git管理了!可以看這里了解一下 點擊打開鏈接
3.對於不了解自己想要獲取哪個版本chromium的朋友,可以先看一下這個網址 點擊打開鏈接可以了解到最近的chromium金絲雀版,開發版,測試版以及穩定版等版本的版本號,便於拉取!至於chromium的這四個分支的不同點可以看下:
canary金絲雀版:這一般是最前沿的實驗版本,每日發布。它沒有經過充分測試,可能有某些奇怪的bug。如果是為了學習基礎的chromium代碼,不建議跟進這個分支。
dev開發版:每2星期發布,相對穩定,新功能和新特性都有。
beta測試版:每周更新,6周大版本更新。比較穩定了,比dev版小1個版本,基本是發布的候選,比stable版本早進化一個月。
stable穩定版:比dev版本小2個版本,2到3周次版本跟新,6周主版本跟新。經過了充分的測試,我比較推薦這個版本。
具體的英文介紹可以看這里: 點擊打開鏈接
4.關於切換分支這塊大約是這樣:
[python]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. cd src #需要切換到src下才能使用git倉庫管理  
  2. git checkout 40.0.2209.0  
[python]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. gclient sync --nohooks --with_branch_heads --with_tags --output-json="log.json"  
-------------------------------------------------
[python]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. git checkout -b -newbranch  [<start_point>]  
創建新的分支並切換到新分支上去,
b代表branch的意思,newbranch 是新分支的名稱,
如果沒有指定提交點(start_point),默認從HEAD指向的提交創建分支。
[python]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. git checkout -b your_release_branch 40.0.2209.0  
5.再一個就是說說那個.gclient文件現在怎么獲取
[plain]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. gclient config https://chromium.googlesource.com/chromium/src.git  
現在再來說說怎么獲取源碼:
1.找一個大點兒的盤,創建一個文件夾統一管理
比如 F:\0ChromiumCodes

2.WINDOWS下是直接下載depot_tools的壓縮包,並解壓到F:\0ChromiumCodes\depot_tools
這個壓縮包的地址是: depot_tools.zip

3.配置環境變量
計算機-右鍵“屬性”-左側欄“高級系統設置”-環境變量-系統變量下“Path”-編輯
在最開頭添加上 F:\0ChromiumCodes\depot_tools;

4.更新depot_tools
win+r - cmd 在命令行下輸入gclient(不帶參數)
[python]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. gclient #不帶參數  
第一次運行會安裝msysgit和python,比較奇葩的是最新的git應該是git-1.9.0.chromium.6_bin
但是第一次運行gclient的時候它先下載git-1.9.0.chromium.5_bin
所以還需要再運行一次gclient
成功后可以運行一次gclient --version看看版本號,並注意一下有沒有錯誤提示。
一般只顯示一個如 gclient.py 0.7 等簡單的版本信息,沒有其他的什么客戶端太舊等的提示信息那就OK

5.引導配置
如果你從未使用過git,您將需要設置一些全球git 配置;
在下面命令中使用你自己的名字和電子郵件地址替換:
[python]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. git config --global user.name "JC" #名字自己改  
  2. git config --global user.email "kuerjinjin@gmail.com" #郵箱自己改  
  3. git config --global core.autocrlf false  
  4. git config --global core.filemode false  

7.新建個空文件夾,切換到該目錄下
[python]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. f:  
  2. cd F:\0ChromiumCodes\ChromiumMaster  
  3. fetch chromium  

這個過程會先下載master分支下的最新源碼,開始的將近3G左右的源碼是在后台下載的,
命令行下只提示“still working on”所以看下只要下載量有就不要關閉窗口,源碼全部下載下來差不多要下載10多個G。
VPN下470k/s的速度差不多下載了7個多小時!
之后開始下載vs,win8sdk,wdk等配置win_toolchain

8.如果這個過程中失敗了,但是源碼已經下載了100%了,那么就不能繼續fetch chromium了,而是
[python]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. gclient sync  

這塊操作的介紹可以找英文原文: 點擊打開鏈接
包括構建相關可以看一下: 點擊打開鏈接
 
depot_tools(11.10更新)
 
Release 分支的簽出操作方法:

同步並構建一個 Release 的標簽(tag)!
-----------------------------------------
是一個通過git來獲得的有發行版本號Release 標簽(tag)
注意:您不能提交這個Release 標簽(tag)。這純粹是為了獲得該發布版本的源代碼。
[plain]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. # 確保你能獲得你要簽出的所有release tag信息  
  2. git fetch --tags  
  3. # 然后簽出任何你想要的版本 (已知的版本可以通過命令 git show-ref --tags 來查看)  
  4. git checkout -b your_release_branch 39.0.2171.71  # 或者更明確點兒這樣寫 tags/39.0.2171.71  
  5. gclient sync --with_branch_heads --jobs 16  
Tips:說一下這里的your_release_branch是你自己要給你的分支起的名字,我看到有人朋友就直接把這個拷貝上去了,汗~

簽出一個 release 的分支
---------------------------------------
注:這塊是不能的同步並建立全部的release分支(即:third_party DEPS一致),請參閱該內部文檔。
以下說明如何檢查出一個為特定項目release分支(如src.git)
[plain]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. # 首先確保你已切換到 src 目錄下.  
  2. # 這部分應該只需要運行一次就可以了,不過多運行幾次也沒事兒。  
  3. # 第一次運行時可能需要一段時間,因為它獲取額外的1/2 GB左右的分支提交。  
  4. gclient sync --with_branch_heads  
  5. git fetch  
  6. # 簽出 src 樹下的分支.  
  7. git checkout -b branch_$BRANCH branch-heads/$BRANCH  
  8. # 簽出所有的DEPS修改的子模塊  
  9. gclient sync --jobs 16  

返回到 trunk:
---------------------------------------
[plain]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. #首先確保你已切換到 src 目錄下.  
  2. git checkout -f master  
  3. gclient sync --jobs 16  
英文的原文介紹在這里: 點擊打開鏈接
另外如果你想多了解一些git的操作可以看看這個: 點擊打開鏈接
簽出里谷歌11月25日發布的最新正式版,編譯后如圖:
Chromium39.0.2171.71(64bit)  chromium39.0.2171.71

-------------------------------------------------------------------------------------------------------------------

在這里再說一下幾個問題:

1.是使用VS10和VS13編譯項目的一些區別:如果是用的33之前的版本源碼生成的10的解決方案,那么vs2010/sp1,win8sdk,DXSDK,depot_tools這些都需要有的,如果是用的最近的源碼,只需要弄好最新版的depot_tools,再安裝個13就一切OK!(其實使用ninja+vs13混合編譯最終調用的vs13是depot_tools下的那個,而我們要再安裝個VS13不過是修改和查看代碼用而已)運行那個批處理設置一下直接用就行了!

2.一般的設置我們可以放在批處理中設置好,讓ninja知道我們要用的vs13,win8sdk等在我們下載好的depot_tools中!在src的同級目錄(或者說就是那個.gclient所在的目錄)新建一個批處理CreateBuild.bat 運行這個批處理文件可能會比較慢,耐心等待命令行窗口退出后再打開chrome.sln開始編譯!批處理的內容如下:

@echo off

for /f %%a in ('where gclient.bat') do set pwd=%%a
set pwd=%pwd:~0,-11%
set file=%pwd%win_toolchain\data.json
set pwd=%pwd:\=\\%

echo {"runtime_dirs": ["%pwd%win_toolchain\\vs2013_files\\sys64", "%pwd%win_toolchain\\vs2013_files\\sys32"], "path": "%pwd%win_toolchain\\vs2013_files", "version": "2013e", "wdk": "%pwd%win_toolchain\\vs2013_files\\wdk", "win8sdk": "%pwd%win_toolchain\\vs2013_files\\win8sdk"} > %file%

set DEPOT_TOOLS_WIN_TOOLCHAIN=1
set GYP_MSVS_VERSION=2013
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_DEFINES=component=shared_library disable_nacl=1

python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyCV9AOzytWwWCtNE8f7ZV56fP1u9yWwhVU' -Dgoogle_default_client_id='1039996407057.apps.googleusercontent.com' -Dgoogle_default_client_secret='mLT8XooDODav1OJG5G3bY61d'

這里要說一下,很多朋友是從網上其他地方下載的別人用的源碼包,可能他們的源碼包是用的本地環境,而我們使用的混合編譯,需要設置set DEPOT_TOOLS_WIN_TOOLCHAIN=1,設置為0則是讓gclient不要自動去構造環境,而是利用本機現有環境!很明顯的區別從打開的chrome.sln項目解決方案就能看出來,混合編譯的是沒有分類的虛擬文件夾的,但是設置為0的話就是用系統現有環境生成的也就是編譯使用你自己安裝的VS是有虛擬文件夾的,這個跟之前的10版本以前的都一樣!

GYP_MSVS_VERSION很明顯就不說了,GYP_GENERATORS配置編譯方式的,GYP_DEFINES一般是配置win8sdk位置的,如:set GYP_DEFINES=windows_sdk_path="C:\Program Files (x86)\Windows Kits\8.0"

 

如果你不知道這個批處理有沒有成功執行,你也看一下src\out\Debug(或者Release)下的build.ninja文件,看看開始那兩個路徑是不是就是你在path里設置的depot_tools所在的路徑。如果不是,而是原本的系統路徑下的,那么就是沒有成功執行。建議在cmd下執行批處理看看提示的錯誤是什么!

 

3.在最終的Release版本產品發布的時候,為了打包的需要可以把shared_library注釋掉rem set GYP_DEFINES=component=shared_library改為靜態編譯,這個時候的編譯會比較慢特別是是最后的連接chrome.dll !

4.由於ninja+vs13這種混合編譯模式調用的都是depot_tools下的,所以直接在打開vs13中添加文件是不會被編譯到的,所以如果有在項目中添加文件就需要修改項目對應的gyp或者gypi文件,將我們添加的文件目錄添加到sources節點下,然后重新運行上邊的批處理文件!

5.最后再說一點,那就是如果以前使用過vs2010編譯,在運行CreateBuild.bat 這個批處理之前要刪除“C:\Users\$(username)\AppData\Local\Microsoft\MSBuild\v4.0”下props文件中關於$(DXSDK_DIR)的內容。(重要)

6.最近有網友說新版本的chromium編譯總有些警告導致編譯不過,后來我們發現暫時可以這樣解決:在src\build\common.gypi 的msvs_disabled_warnings 節點里大約5325行左右,加上 4819,4996 排除兩個警告就能正常編譯通過!

7.對於想編譯64位chromium的同學,需要在批處理里面另外加一句命令:set GYP_DEFINES=target_arch=x64 不過輸出的是在Release_x64 或者Debug_x64下!

8.項目編譯成功后有人問那個谷歌API KEY信息欄提示的問題!很多人的做法是直接將提示這段信息欄的代碼注釋掉,個人覺得這么做並不太妥當!其實你點右側的那個連接也能看到怎么做,不過文章有點兒舊了。總的來說差不多也就這兩種方式:第一種就是在生成項目解決方案的時候直接加參數,比如:python src\build\gyp_chromium -Dgoogle_api_key='******' -Dgoogle_default_client_id='******** -Dgoogle_default_client_secret='******'而第二種方式就是我們在src\build\common.gypi中942行左右的'google_api_key%','google_default_client_id%','google_default_client_secret%'三個參數中直接添加也行,效果是一樣的!至於這些KEY值怎么獲得?這個自己去申請就行!如果你實在懶得去申請,也可以用我提供的下邊這幾個測試一下:

python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyCV9AOzytWwWCtNE8f7ZV56fP1u9yWwhVU' -Dgoogle_default_client_id='1039996407057.apps.googleusercontent.com' -Dgoogle_default_client_secret='mLT8XooDODav1OJG5G3bY61d'
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyCWBmUuxZW1VaZZHkIembF2nengp8asUEk' -Dgoogle_default_client_id='1038894449561-bjihbnffo05svbqcncq7clirvq9meh0c.apps.googleusercontent.com' -Dgoogle_default_client_secret='OeKyUMzNTZ1-hPPypa7GiW4x'
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyBsp9n41JLW8jCokwn7vhoaMejDFRd1mp8' -Dgoogle_default_client_id='996322985003.apps.googleusercontent.com' -Dgoogle_default_client_secret='IR1za9-1VK0zZ0f_O8MVFicn'
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyCcjKzcifha1m8P4RVxytpVsx3wNDIEHsY' -Dgoogle_default_client_id='985919302268.apps.googleusercontent.com' -Dgoogle_default_client_secret='vQKKl73QQk8_dgEF44vNTHmJ'
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyBhWJ-j5RXyt5911BMuVen-WuS10mvOnrY' -Dgoogle_default_client_id='952820686433-mbp5sv9scfj78siq96jlvrem47qgvbi3.apps.googleusercontent.com' -Dgoogle_default_client_secret='XU4b-j0Ssy-XkTvSVmiFMvNY'
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyCkfPOPZXDKNn8hhgu3JrA62wIgC93d44k' -Dgoogle_default_client_id='811574891467.apps.googleusercontent.com' -Dgoogle_default_client_secret='kdloedMFGdGla2P1zacGjAQh'
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw' -Dgoogle_default_client_id='77185425430.apps.googleusercontent.com' -Dgoogle_default_client_secret='OTJgUOQcT7lO7GsGZq2G4IlT'
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyD1tTgDbP-N6BGXKZ7VqSos_IU1QflGbyg' -Dgoogle_default_client_id='724288223830.apps.googleusercontent.com' -Dgoogle_default_client_secret='rHmKOPygcI6G-clFHb-RfuHb'
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyAQfxPJiounkhOjODEO5ZieffeBv6yft2Q' -Dgoogle_default_client_id='424119844901.apps.googleusercontent.com' -Dgoogle_default_client_secret='AIienwDlGIIsHoKnNHmWGXyJ'
python src\build\gyp_chromium -Dgoogle_api_key='AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM' -Dgoogle_default_client_id='413772536636.apps.googleusercontent.com' -Dgoogle_default_client_secret='0ZChLK6AxeA3Isu96MkwqDR4'

 

9.看評論里有朋友提到了NACL這塊,個人建議在編譯的時候最好是把這塊的編譯設置關掉(國內其他的定制瀏覽器也是這么干的)。這塊應該是還不太成熟,應用也很少!所以建議在配置編譯項的時候做一下修改

[plain]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. set GYP_DEFINES=component=shared_library disable_nacl=1   
10.看評論里有朋友問那個瀏覽器啟動頁怎么改,其實這塊你多看看代碼的話也能找到在pref_names.cc文件中的kRestoreOnStartup谷歌的注釋解釋的很明白,定義了幾種啟動方式:其中:5默認標簽頁,1上次關閉的網頁,4.打開特殊網頁!那么我們就直接修改他為4這種情況下kURLsToRestoreOnStartup 要打開的網頁就行了,我們在啟動函數中加上這段代碼就能搞定:
[cpp]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. PrefService* prefs = profile_->GetPrefs();  
  2. prefs->SetInteger(prefs::kRestoreOnStartup,4);  
  3. ListValue* url_pref_list = new ListValue;  
  4. url_pref_list->Set(0, Value::CreateStringValue("http://www.baidu.com"));  
  5. prefs->SetDefaultPrefValue(prefs::kURLsToRestoreOnStartup, url_pref_list);  
要是想多打開幾個網頁,那么就繼續在list里面加網址就行了!

11.看評論里有朋友問這個chromium的優化問題,那么設置 set GYP_DEFINES=branding=Chromium buildtype=Official 以官方的構建方式來做會更好一些!官方的建立方式啟用了許多優化,例如:/Os(大小優化) ;禁用一些跟蹤 ;啟用PGO和LTCG ;去掉DLOG ;去掉CHECK消息啟用其他的編譯/鏈接時優化等等~

12.再一個就是很多朋友看了common.gypi的配置后也跟着亂改配置項,比如fastbuild=1等;關於component=shared_library和fastbuild=1的區別建議大家看一下這篇文章再做修改!

13.很長時間沒來看看了,發現又積攢了很多很多問題,比如有人提到的這個‘ascii’的問題,具體錯誤提示如:UnicodeDecodeError: 'ascii' codec can't decode byte 0xce in position 9: ordinal not in range(128)!這個問題在谷歌使用python27的時候(差不多是chromium31左右)就出現了,基本我們的解決辦法就是直接根據錯誤提示找到depot_tools\python276_bin\Lib\mimetypes.py文件,大約在249行左右注釋掉這幾行代碼就是了!

 

[python]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. try:  
  2.                     ctype = ctype.encode(default_encoding) # omit in 3.x!  
  3.                 except UnicodeEncodeError:  
  4.                     pass  


當然,官方也給出了一種方法:set your Windows system locale to English!詳細介紹見

 

14.另一個不得不提的問題就是如果你在下載編譯最新幾個版本的代碼比如40,41,42,43等,最好是設置set DEPOT_TOOLS_WIN_TOOLCHAIN=0,並下載安裝最新的VS2013的更新包Update4(You must build with Visual Studio 2013 Update 4, no other versions are supported.)要不然很可能會編譯不過;至於為什么,我來說一下這個問題是因為之前的chromium編譯我們使用混合編譯用的是win_toolchain下的免費版VS13,這個版本比較早是存在很多BUG的,很多在chrome論壇里提交的BUG都是指向VS13,就比如我們設置 set GYP_DEFINES=branding=Chromium buildtype=Official 編譯Release版本使用混合編譯基本是編譯不過的。VS13 update4里面就這些問題提交了修復,所以后期的代碼構建谷歌都是推薦使用VS13 Update4(Community版或者Professional版)。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

另外針對國內拉取chromium代碼很麻煩的問題,除了可以直接下載網友共享的源碼包之外,或者可以使用另一條方式就是設置http代理!這里提供一個方法供朋友們測試:

#配置http代理:(gclient 的 python腳本里的urllib2和其他幾個對象默認使用http代理)
set http_proxy=http://127.0.0.1:808(這里根據情況自己改,下同)

#如果http代理需要認證,那么要加上一下兩個命令

set http_proxy_user=<你的用戶名>
set http_proxy_pass=<你的密碼>


#配置winhttp代理,cscript 走代理
netsh winhttp set proxy 127.0.0.1:808 
 

#配置gclient的git走http代理
git config --global http.proxy http://127.0.0.1:8080
 
#從代碼庫拿chromium
fetch --nohooks --no-history chromium --nosvn=True
 
gclient sync --force --nohooks

 

代碼同步完成后再使用那個批處理生成解決方案就OK! 至於VPN的話可以試試我上邊推薦的那個!

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

待續......


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM