背景 起因是產品的需求,需要更換Electron為底層平臺,但因為會有不少定製化的功能要實現,必須自己實現此類內容,所以也就導致必須自己編譯Electron的源代碼。 整個構建過程,看Electron的構建文檔就行了:https://github.com/electron/i18n/blob/mas ...
背景
起因是產品的需求,需要更換Electron為底層平臺,但因為會有不少定製化的功能要實現,必須自己實現此類內容,所以也就導致必須自己編譯Electron的源代碼。
整個構建過程,看Electron的構建文檔就行了:https://github.com/electron/i18n/blob/master/content/zh-CN/docs/development/build-instructions-gn.md
不過在構建Electron的過程中,出現了很多問題。
一、拉取不了chromium代碼。
這個問題大家都懂的,需要FQ才拉得了代碼。這裡需要註意了,整個構建代碼大約有20幾G,得留意工具的套餐有沒有這麼多流量。
另外,一般來講我們是用終端命令行拉代碼,然而終端的請求是不會經過FQ工具的,所以需要設代理。
例如我的小飛機是這麼設的:
export http_proxy=http://127.0.0.1:1087; export https_proxy=http://127.0.0.1:1087;
二、拉了好久都沒拉完。
一開始我是在宿舍拉代碼的,但用了一天一夜,都還沒有拉完,而終端的日誌也讓人奔潰。
[7:52:44] Still working on: [7:52:44] src
後來感覺是因為宿舍的網速太慢,於是到公司去拉,約4個半小時就拉好!
[4:20:04] Still working on: [4:20:04] src/v8 Syncing projects: 100% (95/95), done.
所以,網速很重要!!!
三、拉不下來,報錯了。
在公司拉代碼時,第一次遇到報錯,拉取失敗。
[1:30:24] error: RPC failed; curl 18 transfer closed with outstanding read data remaining [1:30:24] fatal: The remote end hung up unexpectedly [1:30:24] fatal: early EOF [1:30:24] fatal: index-pack failed
查詢資料說是git的 http.postBuffer 這個參數太小,會導致大文件拉不下來。
於是設置了:
git config --global http.postBuffer 999M
這麼設置後,就正常拉完了!!!也就是第二次成功了。
四、還是拉不下來。
磁碟空間不足,也會導致代碼拉取失敗的!
整體代碼拉下來,大概是30幾G,另外編譯代碼生成的中間代碼也會有30幾G,所以要保證當前磁碟空間至少有70多G(一般128G的Mac就不用想編譯這東西了)。
五、編譯出錯。
__main__.SdkError: 'Install Xcode, launch it, accept the license agreement, and run `sudo xcode-select -s /path/to/Xcode.app` to continue.'
這個錯誤,其實它說得很清楚,按提示處理就行。
sudo xcode-select -s /Applications/Xcode.app
總結
在整個構建過程中,問題主要是拉取代碼和編譯兩方面。拉取代碼保證網速、稍大的磁碟容量和Git http.postBuffer參數基本就沒什麼問題,而編譯過程中的問題,按錯誤日誌處理也就可以解決!