W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Electron 使用 gyp 來生成項目 ,使用 ninja 來構(gòu)建項目. 項目配置可以在 .gyp
和 .gypi
文件中找到.
下面的 gyp
文件包含了構(gòu)建 Electron 的主要規(guī)則 :
atom.gyp
定義了 Electron 它自己是怎樣被構(gòu)建的.common.gypi
調(diào)整 node 的構(gòu)建配置,來讓它結(jié)合 Chromium 一起構(gòu)建.vendor/brightray/brightray.gyp
定義了 brightray
是如何被構(gòu)建的,并且包含了默認配置來連接到 Chromium.vendor/brightray/brightray.gypi
包含了常用的創(chuàng)建配置.在 Chromium 還是一個相當大的項目的時候,最后鏈接階段會花了好幾分鐘,這讓開發(fā)變得很困難. 為了解決這個困難,Chromium 引入了 "component build" ,這讓每個創(chuàng)建的組建都是分隔開的共享庫,讓鏈接更快,但是這浪費了文件大小和性能.
在 Electron 中,我們采用了一個非常相似的方法 : 在創(chuàng)建 Debug
, 二進制文件會被鏈接進入一個 Chromium 組件的共享版本庫來達到快速鏈接; 在創(chuàng)建 Release
, 二進制文件會被鏈接進入一個靜態(tài)版本庫, 所以我們可以有最小的二進制文件size和最佳的體驗.
在運行 bootstrap 腳本的時候,所有的 Chromium 預編譯二進制文件會被下載.默認靜態(tài)庫和共享庫會被下載,并且項目的最后大小會在 800MB 到 2GB 之間,這取決于平臺類型.
默認,libchromiumcontent
是從 Amazon Web Services 上下載下來的.如果設(shè)置了 LIBCHROMIUMCONTENT_MIRROR
環(huán)境變量,bootstrap腳本會從這里下載下來. libchromiumcontent-qiniu-mirror
是 libchromiumcontent
的映射.如果你不能連接 AWS,你可以切換下載路徑:export LIBCHROMIUMCONTENT_MIRROR=http://7xk3d2.dl1.z0.glb.clouddn.com/
如果只是想快速搭建一個 Electron 的測試或開發(fā)環(huán)境,可以通過 --dev
參數(shù)只下載共享版本庫:
$ ./script/bootstrap.py --dev
$ ./script/build.py -c D
在 Release
和 Debug
構(gòu)建的時候后,Electron 鏈接了不同配置的庫 .然而 gyp
不支持為不同的配置文件進行不同的鏈接設(shè)置.
為了規(guī)避這個問題,Electron 在運行 gyp
的時候,使用了一個 gyp
的變量 libchromiumcontent_component
來控制應(yīng)該使用哪個鏈接設(shè)置,并且只生成一個目標.
與大多數(shù)的項目不同,它們使用 Release
和 Debug
作為目標名字,而 Electron 使用使用的是 R
和 D
.這是因為如果只定義了一個 Release
或 Debug
構(gòu)建配置,gyp
會隨機崩潰,并且在同一時候,Electron 只生成一個目標,如上所述.
這只對開發(fā)者可用,如果想重新構(gòu)建 Electron ,將不會成功.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式: