Apple Silicon 支援
隨著 Apple Silicon 硬體將於今年稍後發布,您要如何讓您的 Electron 應用程式在新硬體上運行?
隨著 Electron 11.0.0-beta.1 的發布,Electron 團隊現在正在發布可在 Apple 計劃於今年稍後發布的 Apple Silicon 新硬體上運行的 Electron 版本。您可以使用 npm install electron@beta
獲取最新的 beta 版本,或直接從我們的發行版本網站下載。
運作方式?
從 Electron 11 開始,我們將為 Intel Mac 和 Apple Silicon Mac 發布不同版本的 Electron。在此變更之前,我們已經發布了兩個產物,darwin-x64
和 mas-x64
,後者用於 Mac App Store 相容性用途。我們現在發布另外兩個產物,darwin-arm64
和 mas-arm64
,它們是上述產物的 Apple Silicon 等效版本。
我需要做什麼?
您需要發布兩個版本的應用程式:一個用於 x64 (Intel Mac),另一個用於 arm64 (Apple Silicon)。好消息是 electron-packager
、electron-rebuild
和 electron-forge
已經支援以 arm64
架構為目標。只要您運行這些套件的最新版本,一旦您將目標架構更新為 arm64
,您的應用程式應該就能完美運作。
未來,我們將發布一個套件,讓您可以將您的 arm64
和 x64
應用程式「合併」為單一通用二進位檔案,但值得注意的是,這個二進位檔案會非常龐大,可能不適合發布給使用者。
更新:此套件現已在 @electron/universal
上提供。您可以使用它將兩個已封裝的 x64 和 arm64 應用程式合併為單一二進位檔案。
潛在問題
原生模組
由於您是以新的架構為目標,您需要更新幾個相依性,這可能會導致建置問題。以下包含某些相依性的最低版本,供您參考。
相依性 | 版本需求 |
---|---|
Xcode | >=12.2.0 |
node-gyp | >=7.1.0 |
electron-rebuild | >=1.12.0 |
electron-packager | >=15.1.0 |
由於這些相依性版本需求,您可能需要修正/更新某些原生模組。值得注意的是,Xcode 升級將引入新版本的 macOS SDK,這可能會導致您的原生模組建置失敗。
我該如何測試?
目前,Apple Silicon 應用程式只能在 Apple Silicon 硬體上運行,而在撰寫此部落格文章時,Apple Silicon 硬體尚未在市面上販售。如果您有 Developer Transition Kit,您可以在其上測試您的應用程式。否則,您必須等待量產 Apple Silicon 硬體發布後,才能測試您的應用程式是否運作。
Rosetta 2 呢?
Rosetta 2 是 Apple 最新版本的 Rosetta 技術,可讓您在其新的 arm64 Apple Silicon 硬體上運行 x64 Intel 應用程式。雖然我們相信 x64 Electron 應用程式將在 Rosetta 2 下運行,但有一些重要事項需要注意(以及您應該發布原生 arm64 二進位檔案的原因)。
- 您的應用程式效能將會大幅降低。Electron / V8 對於 JavaScript 使用 JIT 編譯,並且由於 Rosetta 的運作方式,您實際上會運行兩次 JIT(一次在 V8 中,一次在 Rosetta 中)。
- 您會失去 Apple Silicon 中新技術的優勢,例如增加的記憶體頁面大小。
- 我們有提到效能會大幅降低嗎?