cef chromium 編譯


前言

目前客戶端引用了cef sharp庫來嵌入web頁面
cef sharp是對cef (chromium embed framework)的c#封裝
cef是對chromium內核的c++封裝

什么是chromium?
chromiumgoogle chrome內核的開源庫
google chrome上開發的功能都會先放到chromium上實驗
成功了才會合並到google chrome發布
所以chromium可以視為google chrome的預覽版

由於專利原因
chromium的發布版不支持mp3, h264(視頻編碼
如果需要這些功能,需要自己重新編譯
為了解決這個禪道bug(chromium離屏渲染下的鼠標滾輪bug,google chrome不是離屏渲染,wpf客戶端上使用的cefsharp是),我打算重新編譯cef,,順便編譯chromium內核以支持mp3和h264.

編譯注意事項

1.官方編譯文檔
2.執行官方文檔上的步驟需要禾斗學上網,(https, git,和DNS)
3.按照官方文檔編譯出來的chromium內核是不支持mp3 ,h264的,需要手動加一些編譯變量
4.chromium內核分支版本不指定的話拉取到master的代碼

編譯步驟

1.安裝vs2017

$PATH_TO_INSTALLER.EXE ^
--add Microsoft.VisualStudio.Workload.NativeDesktop ^
--add Microsoft.VisualStudio.Component.VC.ATLMFC ^
--add Microsoft.VisualStudio.Component.VC.Tools.ARM64 ^
--add Microsoft.VisualStudio.Component.VC.MFC.ARM64 ^
--includeRecommended

安裝完后,到應用程序里找到windows sdk 右鍵修改,先change,下一步,
把debugging tools for windows打鈎,否則后面創建解決方案會失敗

2.創建以下目錄

c:\code\automate
c:\code\chromium_git
c:\code\depot_tools

3.depot_tools

下載 depot_tools.zip,解壓到depot_tools文件夾

4.automate-git.py

下載 automate-git.py 放到 automate文件夾

5.設置系統環境變量

1.Path 新增一個路徑c:\code\depot_tools
2.創建一個系統變量DEPOT_TOOLS_WIN_TOOLCHAIN 值0

6.拉取代碼

C:\Code\chromium_git創建update.bat,內容如下

set GN_DEFINES=use_jumbo_build=true ffmpeg_branding=Chrome proprietary_codecs=true
set GN_ARGUMENTS=--ide=vs2017 --sln=cef --filters=//cef/*
python ..\automate\automate-git.py --download-dir=c:\code\chromium_git --depot-tools-dir=c:\code\depot_tools --no-distrib --no-build --branch=3770

設置好代理后 執行腳本,會自動拉取cef和chromium的源碼
總共20G左右

7.為源碼創建解決方案

拉取代碼后
切換到目錄 C:\Code\chromium_git\chromium\src\cef
創建create.bat 內容如下

set GN_DEFINES=use_jumbo_build=true ffmpeg_branding=Chrome proprietary_codecs=true is_component_build=false

set GN_ARGUMENTS=--ide=vs2017 --sln=cef --filters=//cef/*

call cef_create_projects.bat

發布時記得設置is_component_build = false

編譯時可能會出現找不到LASTCHANGE.committime這一文件,
C:\code\chromium_git\chromium\src\build\util
執行

python lastchange.py -o LASTCHANGE 

即可生成
運行create.bat后,生成成功后

8.執行編譯

編譯之前,我先把cef的代碼加一些洗發水(特效),解決一下鼠標滾輪關閉select元素的bug
切換到C:\Code\chromium_git\chromium\src 編譯chromium內核

執行編譯x64

python -m pip install pywin32 安裝pywin32庫
gn args out\Release_GN_x64 可用來配置編譯參數
gclient runhooks 更新編譯時需要的依賴

ninja -C out\Release_GN_x64 cef

編譯x86如法炮制

編譯時間如果用機械硬盤硬盤要4小時左右
建議使用固態硬盤,我用我自己的筆記本 i7低壓,估計也要不少時間,

等編譯完成了再來更新第9步

9. 測試編譯后的chromium 內核

1.osr渲染模式下滾動鼠標不應該關閉html select element

命令行傳參 開啟離屏渲染(osr)打開cefclient,

C:\Code\chromium_git\chromium\src\out\Release_GN_x64> cefclient --multi-threaded-message-loop --off-screen-rendering-enabled --enable-gpu

鼠標滾動不會關閉select了

功能通過

2.可以播放視頻音頻

打開bilibili播放一個視頻

功能通過

結語

我的電腦cpu是i7 低壓,內存24GB
編譯過程其實(兩三個小時)*2就結束了
主要過程還是在拉代碼
在編譯的過程中內存有幾次用光過
所以內存朋友小的朋友編譯之前應該把虛擬內存設置多一點
編譯完32位和64位,文件夾大小為

所以編譯前至少留100GB左右的存儲空間吧


免責聲明!

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



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