1. 程式人生 > >chromium原始碼下載並編譯

chromium原始碼下載並編譯

目前,chromium的原始碼已經全部遷移到了git管理,所以本文主要梳理一下下載chromium原始碼的過程。

一、概況

chromium現在分為四個大分支:

  • canary:最前沿的版本,每天都發布,bug一堆,不適合新人
  • dev:每兩個星期釋出,比較穩定,可以體驗新功能和新特性
  • deta:每週小版本更新,六週大版本更新。比dev穩定,比同期dev版小1個版本號,基本上是stable的待發版本
  • stable:比同期dev小2個版本號,兩到三週次版本更新一次,每六週主版本更新。這是正式的釋出版本,推薦用這個來學習,特別是新人

二、下載chromium原始碼

1.瀏覽器翻牆下載並設定depot_tools

chromium原始碼的構建工具集的管理是通過depot_tools來管理的,所以首先要下載一個depot_tools。這個工具是在chromium的官網上的,可能需要科學上網才能夠下載,具體的下載地址:depot_tools。直接下載對應的系統的版本,windows的直接下載一個壓縮包。
下載完成後,將depot_tools.zip解壓,把depot_tools目錄路徑新增到系統的PATH環境變數開始處;如PATH=c:\depot_tools;.......

要把depot_tools的目錄放大path的前面。如果加在path路徑後面,要確保你path內部沒有git,python等路徑

2.為dos的cmd.exe設定代理

depot_tools工具下載設定完成後,就可以利用depot_tools中的指令碼去下載一些必要的工具,比如git、svn、Python等工具,同時也會更新depot_tools中的資料。這些指令碼的執行都是在cmd中完成的,並需要連線網路來下載資料,這時就要為cmd設定網路代理。具體的方法如下所示:

  1. 首先必須找到一個可用的高速http/https/socks5的代理伺服器

  2. 為cmd設定http/https/socks5代理。開啟一個具有管理員許可權的cmd(非常重要),在其中輸入:

    x:>netsh
    netsh>winhttp
    netsh winhttp>
    netsh winhttp>
    netsh winhttp>set
    proxy http.proxy.com:12345

    其中http.proxy.com:12345為你的代理的IP地址和埠號。
    設定完成後,退出該cmd就可以了。該設定使固化在系統紅的,重新啟動之後,該設定依然有效。

  3. 啟動一個新的cmd,執行命令x:>gclient,這時就能夠利用設定好的cmd代理下載git、svn、python等工具並更新depot_tools。

  4. 等上面的步驟執行結束後,再次執行x:>gclient,一般這裡的執行結果會失敗。即使再次成功了,也沒有關係,繼續往下設定。

    之所以說這裡可能失敗,是因為第一次執行gclient只要是更新depot_tools、下載git等工具;第二次執行gclient就要通過git工具下載一些東西了,但是這時git並沒有設定代理。如果git下載不能翻牆,那麼就會報錯。

3.為git設定代理

在第二次執行gclient命令前,我們要為git設定好代理。git支援git、http/https、ssh等協議,在這裡我們只需要設定最簡單的http/https協議就行了。假設代理伺服器的地址為:http://http.proxy.com:12345http://https.proxy.com:2345,scoks5://scoks.proxy.com:3456,設定方法如下:

  1. 先設定CMD環境變數,在CMD中輸入:

    x:>set http_proxy=http://http.proxy.com:12345
    x:>set https_proxy=http://https.proxy.com:23456
    x:>set socks5_proxy=socks5://https.proxy.com:23456
  2. 為git設定代理
    a)使用http/https代理伺服器

    x:>git config --global http.proxy %http_proxy%
    x:>git config --global https.proxy %https_proxy%

    或者:b)使用socks5代理伺服器

    x:>git config --global http.proxy %socks5_proxy%
    x:>git config --global https.proxy %socks5_proxy%
  3. 驗證git代理
    設定完後,用下面命令看是否成功:

    x:>git config --get http.proxy
    x:>git config --get https.proxy
  4. 再次執行gclient命令
    這時git的代理就設定好了,再次執行gclient命令,就會利用git通過設定的代理下載一些資料。這樣gclient命令就能夠正確的執行完畢。
    成功後可以執行一次gclient –version看看版本號,並注意一下有沒有錯誤提示:

    x:>gclient --version
  5. 配置git的使用者名稱和郵箱

    x:>git config --global user.name "yourname"                         #yourname改為你希望的使用者名稱
    x:>git config --global user.email "[email protected]"      #輸入你自己的郵箱
    x:>git config --global core.autocrlf false
    x:>git config --global core.filemode false

4.開始同步chromium原始碼並編譯

環境設定完畢,下面就開始同步原始碼:

  1. 建立一個目錄用於下載chromium程式碼,比如D:\chromium,在此目錄中在建立一個目錄master;D:\chromium\master就是我們將要簽出程式碼的主目錄。

  2. 進入該目錄,通過下面的命令,產生.gclient檔案:

    gclient config https://chromium.googlesource.com/chromium/src.git
  3. 設定環境變數

    set GYP_MSVS_VERSION=2013
    set GYP_GENERATORS=ninja
    set DEPOT_TOOLS_WIN_TOOLCHAIN=0
    // 如果要編譯release版本則是 set GYP_DEFINES=branding=Chromium buildtype=Official
    //這裡使用的是windows kit 10,後面說為什麼。
    set GYP_DEFINES=windows_sdk_path="C:\Program Files (x86)\Windows Kits\10" component=shared_library disable_nacl=1 enable_automation=0 enable_captive_portal_detection=0 enable_google_now=0 enable_hidpi=0 fastbuild=1 ffmpeg_branding=Chrome incremental_chrome_dll=0 proprietary_codecs=1 remoting=0

    提示:環境變數set GYP_MSVS_VERSION原來是2015,但是用了一個月過期了,再次使用它編譯出現一些問題,所以還是用2013版本的。

  4. 在當前視窗執行,執行如下內容耐性等待,看網路條件2–40小時:

    gclient sync --nohooks --with_branch_heads --with_tags --output-json="log.json"

    如果發生錯誤,註釋掉depot_tools\python276_bin\Lib\mimetypes.py檔案的248–251行內容:

    # try:
    # ctype = ctype.encode(default_encoding) # omit in 3.x!
    # except UnicodeEncodeError:
    # pass

  5. 再次執行下面的命令:

    gclient sync --nohooks --with_branch_heads --with_tags --output-json="log.json"
  6. 執行完成後進入src目錄,執行下面的命令:

    cd src
    git fetch
    git pull
  7. 為了安全起見,再次執行下面的命令:

    cd ..
    gclient sync --nohooks --with_branch_heads --with_tags --output-json="log.json"
    cd src
    git fetch
    git pull
  8. 生成工程檔案(最好做一個備份或者做個分支)

    一定要注意,runhooks前要修改兩個檔案: src\build\common.gypi 在5488行(4610, # Object
    can never be instantiated)左右,加入 4702, 4819, 4996,
    src\build\some.gyp 的 #’../chrome/chrome.gyp:chrome’,前面的#取消,解除註釋

    這裡說一下新增這幾個數字的用途:
    由於編譯chromium原始碼對warning要求很嚴格,一旦出現warning就會停止編譯。在common.gypi檔案中增加這些整數就是降低該warning的等級,或者說忽略該warning。

    gclient runhooks --force
  9. 編譯當前版本原始碼,在src目錄執行:

    ninja -C out\Debug chrome       # 生成x86 Debug版本
    ninja -C out\Debug content      # 生成content_shell版本
    ninja -C out\Release chrome     # 生成x86 Release版本
    ninja -C out\Debug_X64 chrome   # 生成x64 Debug版本
    ninja -C out\Release_X64 chrome # 生成x64 Release版本

    注意:這樣直接的編譯會產出好多的提示資訊,又由於windows的控制檯是不能翻頁的,所以最好把編譯的資訊重定向到一個檔案中。在每一個命令的後面加上>>log.txt 2>&1就可以了。

5.程式碼同步完成後,恢復系統的代理設定

  1. 恢復netsh winhttp設定為直連
    開啟一個具有管理員許可權的CMD,輸入下面命令:

    x:>netsh
    netsh>winhttp
    netsh winhttp>
    netsh winhttp>reset proxy

    輸入下面命令看清除是否成功,成功後顯示下面資訊:

    netsh winhttp>show proxy
    Current WinHTTP proxy settings:
        Direct access (no proxy server).
  2. 清除git代理
    開啟一個普通的CMD,輸入下面的命令:

    git config --global --unset http.proxy

三、編譯指定版本的chromium原始碼

首先切換至src目錄下,列出所有版本的標籤,下面的命令將標籤記錄到tags.txt文字中:

git tag >>tags.txt 2>&1

用sublime開啟tags.txt檔案後檢視版本號,這裡只擷取最新版本號。
這裡寫圖片描述
大家可以切換到某個tag進行編譯,命令和切換到分支相同,使用如下命令:

git checkout -b chrome_43.0.2355.2_local_branch 43.0.2355.2

這句話的意思就是建立本地分支chrome_43.0.2355.2_local_branch並切換到遠端43.0.2355.2tag上。這裡可以通過git branch檢視當前的分支。
在某個特定的版本上建立完分支之後,再次同步程式碼:

gclient sync --nohooks --with_branch_heads --with_tags --output-json="log.json"–jobs 16
//使用--nohooks可以減少每次都檢查編譯環境等資訊。

這樣就能夠編譯當前版本的chromium原始碼了。

四、參考文件

相關推薦

chromium原始碼下載編譯

目前,chromium的原始碼已經全部遷移到了git管理,所以本文主要梳理一下下載chromium原始碼的過程。 一、概況 chromium現在分為四個大分支: canary:最前沿的版本,每天都發布,bug一堆,不適合新人 dev:每兩個星期釋出,

chromium原始碼下載編譯

最近要做一個Android上的Hybrid專案,本來一直用WebKit,但是WebKit是在2012年移植到Android上的,已經不能支援最新的Web技術了,而且Android上的Chromium發展迅速,已經能夠滿足各種需求了。 實際上現在才開始跟進Chromium,已

Android O Chromium 原始碼下載編譯

去年Android O 釋出之後,按照慣例,我需要做一些移植工作,把之前版本加的針對我們公司平臺的Pacth合過來,從Android M開始,Chromium source code就需要單獨下載和編譯,不再包含在Android source code裡面。一般下載完Andr

自動下載原始碼_編譯_打包_部署_重啟服務的Shell指令碼

完整版見https://jadyer.github.io/2015/06/03/linux-shell-deploy/ #!/bin/sh APP_NAME=engine APP_WARS=JadyerEngine-web/target APP_PATH=/app/

Zlib 原始碼下載在Windows+VS2013編譯

Zlib是大家在開發中經常使用到的一個庫,主要用來壓縮資料或者解壓資料,裡面有很多功能函式,可以加快快發進度。 如果你是從官網下載的話,下載完成後,解壓,需要使用CMake-GUI軟體和目錄下的

在Ubuntu16.04上下載編譯Android原始碼

Android原始碼位於Google的Git程式碼庫中,由於Android原始碼工程過於複雜龐大,所以Google以Git為基礎用Python指令碼,寫了一個管理工具Repo。 1.安裝Repo 在安裝Repo之前,假定已經安裝好了git。 mkdir ~

下載編譯Chrome瀏覽器For Android

最近因為公司專案,需要對Chrome的某一模組進行修改後,相容公司的Android裝置,現記錄下Chrome的原始碼下載過程,作為筆記。 1. 準備Ubuntu系統,最好是物理機上安裝,因為Chrome首次編譯耗時較長,對硬體要求較高。我使用的Ubuntu版本為14.04.1。 2. 下載C

Google Chromium 原始碼下載

Goolgle 於 2008.09.02 釋出了瀏覽器 Google Chrome。Google Chrome 使用的核心原始碼來自開源瀏覽器引擎 WebKit Open Source Project。Google Chrome 的原始碼,同樣亦是開源的。網站為http://chromium.org,我這邊試

Android 原始碼下載編譯和刷機過程

編譯環境: Win10 + VMware + ubuntu16.04 手機: Nexus 5 系統: Android 6.0 原生態原始碼 參考網頁:點選開啟連結 解決的問題 當 fastboot -w flashall  命令一直出現Waiting for dev

SpringFramework3 原始碼下載編譯教程

Spring已經將原始碼從svn遷移到了git。所以,首先需要安裝git環境。我使用的是Windows下的TortoiseGit,帶圖形介面,比較直觀。 下載後,進入下載到的資料夾,裡面有個README.md的說明檔案,如果E文可以,可以按

Hibernate4.0原始碼下載編譯教程

廢話不多說,直接進入主題。首先是下載原始碼,跟spring一樣,hibernate也採用git管理。 git://github.com/hibernate/hibernate-orm.git 下載後,hiberante同樣也是採用了g

chromium下載編譯

一、Chromium下載 首先應該去chromium官網去看一看,地址如下,如果可以看的明白最好了。按照Google說的一步一步去做,基本問題不是太大,不過還是有許多坑需要這裡說明一下的。如果按照Google步驟來沒有問題,可以不用繼續往下看。 1.      在下載c

下載編譯Android模擬器Linux核心goldfish教程

1. 下載goldfish原始碼 在Android原始碼根目錄下新建kernel資料夾: $ mkdir kernel $ cd kernel 下載原始碼: $ git clone http://android.googles

【Tomcat9原始碼分析】原始碼下載編譯與除錯

一、環境 以下是我編譯Tomcat所採用的環境 OS X Yosemite Version 10.10.5 Intellij IDEA 2017.1 Java version 1.8.0_65 Apache Maven 3.3.9 Tomcat 9.0.0

Mac OS X 10.8.4下Android4.2.2原始碼下載編譯

最近打算辭職了,離開一直在廈門實習的公司。本來這個月轉正,但我的內心告訴我,廈門太安逸了點。我必須去外面闖闖,還年輕啊,不想以後後悔。在這兩天不記得看到什麼東西需要Android原始碼。然後心血來潮打算編譯下Android原始碼,畢竟以前編譯失敗過,有點不服輸。下面記錄下這

Android系統原始碼下載編譯、刷機--Nexus6實測

前言 此博文記錄一下Android從系統原始碼下載到刷機的全過程。 (https://source.android.com/source/build-numbers.html 頁面中列表資訊找到自己裝置對應的Android版本進行選擇,博文中選擇MOB301) 硬體:Goog

spark最新原始碼下載匯入到開發環境下助推高質量程式碼(Scala IDEA for Eclipse和IntelliJ IDEA皆適用)(以spark2.2.0原始碼包為例)(圖文詳解)

  不多說,直接上乾貨! 前言     其實啊,無論你是初學者還是具備了有一定spark程式設計經驗,都需要對spark原始碼足夠重視起來。   本人,肺腑之己見,想要成為大資料的大牛和頂尖專家,多結合原始碼和操練程式設計。   好一段時間之前,寫過這篇部落格

Chromium原始碼獲取與編譯--附加一個簡單例子的編譯

從工作到現在,一直弄介面相關的東西,弄了好多年,包括前公司也買了一套UI,但是用下來以後發現不是這個問題就是那個問題。現在新的公司還在用MFC。MFC其實沒什麼不好,就是不能改原始碼這點比較糾結。。(誰說不能改原始碼的,改完自己編譯就是了。。orz。。你倒是給我個工程檔案?

VLC for Android原始碼下載編譯 (包含其他開源專案,很全面!!!!)

Project Hosting on 點選開啟連結  from:http://dingran.iteye.com/blog/1717711 1.vlc for android  已經發布了,開源的地址是: http://wiki.videolan.or

完整版linux下android原始碼下載編譯、模擬器啟動執行

一、環境說明: 1、VMware版本:8.0.3 build-703057 2、liunx系統:Ubuntu10.10 3、jdk:sun-java6-jdk 二、Ubuntu 10.10更新源列表       由於Ubuntu 10.10版本的源已經過期了,所以,需要