CEF默認(rèn)不支持mp3朱转、mp4夺刑,需要的話得自己編譯存淫,記錄在window下編譯過程中遇到的各種坑
CEF基礎(chǔ)版
如果不需要mp3、mp4的支持荚虚,可以直接下載構(gòu)建好的版本,下載鏈接戳這里。
新版本是cef和chromium在一個壓縮包里,老版本是分開的恢恼。
準(zhǔn)備工作
google的項目漏隐,都要配置好代理,想直接下是不行的脖隶。找個路徑放相關(guān)的文件,比如E:\cef
。
時區(qū)設(shè)置
設(shè)置系統(tǒng)區(qū)域為英語(美國)。(控制面板-區(qū)域-管理-更改系統(tǒng)區(qū)域設(shè)置-英語(美國))铐姚,設(shè)置完需要重啟拙毫。防止編譯一些字符集的報錯。
代理設(shè)置
不知道是啥的話后面也不用搞了蛀醉,不過就算設(shè)置了也還是慢逝段,最好還是云服務(wù)器編譯。
V2ray代理設(shè)置
- 路由設(shè)置->勾選啟用高級功能
- 右下角小圖標(biāo)選擇全局
git clone 代理配置
//加大buffer
git config --global http.postBuffer 524288000
//設(shè)置代理,ssr通常是1080浙值,v2ray是10809,客戶端底部有顯示
git config --global http.proxy http://127.0.0.1:10809 && git config --global https.proxy https://127.0.0.1:10809
//取消代理(上面端口設(shè)置錯了的話)
git config --global --unset http.proxy && git config --global --unset https.proxy
windows設(shè)置CMD代理
netsh
netsh>winhttp
netsh winhttp>
netsh winhttp>set proxy 127.0.0.1:10809 //設(shè)置代理
netsh winhttp>show proxy //查看代理
netsh winhttp>reset proxy //重置代理筐付,下載完了不想要代理才用
設(shè)置Boto代理
[Boto]
proxy = 127.0.0.1
proxy_port = 10809
創(chuàng)建.boto文件卵惦,在命令行設(shè)置環(huán)境變量,set NO_AUTH_BOTO_CONFIG=E:\cef\.boto
構(gòu)建腳本
構(gòu)建腳本會執(zhí)行下載和編譯瓦戚,通過指定參數(shù)達(dá)到想要的編譯效果沮尿,下載鏈接。下載好后放到E:\cef
目錄下。這是個python腳本畜疾,python也需要裝下赴邻,編譯舊版本需要安裝python2,新版本需要安裝python3啡捶,在執(zhí)行腳本的時候環(huán)境不對會給出提示姥敛。
參數(shù)說明
automate-git.py 的參數(shù)可以手動執(zhí)行 python automate-git.py --help 來查看,下面列舉大部分情況都會用的瞎暑。
- --branch 表示你要下載和編譯哪個版本的代碼彤敛,Chromium和CEF的版本對應(yīng)關(guān)系可以看這個鏈接
- --no-build 表示只下載代碼而不編譯
- --no-distrib 不執(zhí)行打包項目,這里只為下載代碼了赌,我們還要修改支持多媒體的參數(shù)墨榄,所以不進(jìn)行打包
- --force-clean 如果你曾經(jīng)執(zhí)行過這個腳本,可能會出錯勿她,則加上這個參數(shù)渠概,它執(zhí)行清理殘留文件(你也可以手動在 chromium 源碼目錄執(zhí)行 git clean -xdf 來清理目錄中的多余內(nèi)容)。
- --download-dir 下載的源碼目錄
- --checkout 如果你不想編譯某個分支的最新版代碼嫂拴,可以指定具體的提交播揪,只用設(shè)置CEF的提交就行,Chromium會跟著切換
- --force-clean-deps 編譯老版本的時候會碰到下載第三方依賴庫失敗筒狠,碰到了可以加下這個
- --no-depot-tools-update 如果工具包之前下載過了可以加上猪狈,就不升級工具包了,第一次下載不加
- --no-update 編譯時用辩恼,不更新直接編譯
- --no-debug-build 編譯時用雇庙,不編譯debug只要release
- --build-log-file 生成編譯的日志文件,出錯可以看下
- --x64-build 構(gòu)建64位的版本
準(zhǔn)備好后目錄如下:
CEF源碼下載
下載前需要設(shè)置下環(huán)境變量灶伊,也可以直接在命令行輸入就行疆前。
set CEF_USE_GN=1
set GN_DEFINES=is_official_build=true
set GYP_DEFINES=buildtype=Official
set GYP_MSVS_VERSION=2017
set CEF_ARCHIVE_FORMAT=tar.bz2
@REM 第一次源碼下載不加--no-depot-tools-update,會先包工具包下下來
python automate-git.py --download-dir=e:\cef\source --branch=3626 --checkout=90eb8cc --no-build --no-distrib --force-clean --force-clean-deps --no-depot-tools-update
有一個注意點聘萨,depot-tools內(nèi)部有一些bat和python腳本竹椒,需要把它的路徑設(shè)置到環(huán)境變量的PATH里,不然下載會報錯
下載錯誤處理
python缺庫
看到腳本自己去下了python庫的.whl米辐,但是安裝沒成功胸完,我就手動裝了下:
pip install numpy=1.12.1
pip install opencv_python=3.2.0.7
pip install psutil=5.2.2
No module named win32file
Traceback (most recent call last):
File "../../build/toolchain/win/tool_wrapper.py", line 29, in <module>
import win32file # pylint: disable=import-error
ImportError: No module named win32file
修改方法:在錯誤日志里指定的目錄安裝pywin32,參考鏈接
cd E:\cef\source\depot_tools\bootstrap-2@3_8_10_chromium_20_bin\python\bin
pip -m install pywin32
提示subprocesss返回值非0
把depot-tools的路徑設(shè)置到環(huán)境變量的PATH里:
set PATH=E:\cef\source\depot_tools;%PATH%;
AttributeError: 'module' object has no attribute 'CheckCallAndFilterAndHeader'
老版本編譯才有的問題翘贮,需要修改代碼赊窥,E:\cef\source\cef\tools\gclient_util.py
,參考鏈接
命令行出問題的話狸页,腳本就給個提示返回值非0锨能,沒把錯誤打印出來就很坑...把顯示的命令行在終端直接敲一下就能看到具體錯誤了。
踩完這一路的坑,就可以開始編譯了...
CEF源碼編譯
編譯需要設(shè)置的參數(shù)最重要的就是添加MP3址遇、MP4支持 使用此條指令叔收,不加白折騰了。還有就是指定VS的路徑傲隶,編譯報錯了提示少什么路徑可以再加。
set CEF_USE_GN=1
set GN_DEFINES=is_official_build=true
set GYP_DEFINES=buildtype=Official
set GYP_MSVS_VERSION=2017
set CEF_ARCHIVE_FORMAT=tar.bz2
@REM 添加MP3窃页、MP4支持 使用此條指令
set GN_DEFINES=is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome
set GYP_GENERATORS=ninja,msvs-ninja
set GN_ARGUMENTS=--ide=vs2017 --sln=cef --filters=//cef/*
@REM VS2017安裝在默認(rèn)目錄跺株,但任然需要下面設(shè)置,可能是由于VS2015和VS2017同時安裝脖卖,路徑根據(jù)自己的安裝目錄和版本確定
set WIN_CUSTOM_TOOLCHAIN=1
set CEF_VCVARS=none
set GYP_MSVS_OVERRIDE_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community
set SDK_ROOT=C:\Program Files (x86)\Windows Kits\10
@REM 編譯64位調(diào)用VS的腳本有問題乒省,環(huán)境變量還是去找的32位路徑,下面改手動設(shè)置路徑
@REM call "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build/vcvarsall.bat" x64
@REM set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\atlmfc\include;%INCLUDE%
@REM set PATH=C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC\14.16.27012\x64\Microsoft.VC141.CRT;%PATH%
@REM set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x86;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\ucrt\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\atlmfc\lib\x86;%LIB%
@REM set VS_CRT_ROOT=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\crt
set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\atlmfc\include;%INCLUDE%
set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\ucrt\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\atlmfc\lib\x64;%LIB%
set VS_CRT_ROOT=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\crt
set PATH=C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC\14.16.27012\x64\Microsoft.VC141.CRT;%PATH%
python automate-git.py --download-dir=e:\cef\source --branch=3626 --checkout=90eb8cc --no-update --no-debug-build --build-log-file --verbose-build --force-distrib --force-build --x64-build
輸出文件
在目錄E:\cef\source\chromium\src\cef\binary_distrib
下畦木,還把壓縮包也生成了袖扛。
生成的文件里沒有l(wèi)ibcef_dll_wrapper.lib,需要的話拿cmake生成一個vs工程再編譯就行十籍,什么配置都不用改蛆封,就略過了。
編后感
下載和編譯環(huán)節(jié)一定要把參數(shù)都搞好勾栗,下載搞了2天惨篱,編譯也搞了2天,心累...一開始直接編譯了一個32位的围俘,后面才反應(yīng)過來要編譯一個64位的砸讳,編譯的時候CPU直接100%,其他活都不用干了界牡。
等搞完發(fā)現(xiàn)指定分支提交和項目中使用的版本還不一樣簿寂,又要重新checkout再編譯Orz
最后發(fā)現(xiàn)還是搞個windows云服務(wù)器省事,環(huán)境直接選美國宿亡,代理也不用設(shè)置常遂,我本地代理也只能3M/S,服務(wù)器下載30M/S挽荠,服務(wù)器編譯還不影響本地工作( ̄▽ ̄)"