跳到主要內容

Apple Silicon 支援

·3 分鐘閱讀時間

隨著 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-x64mas-x64,後者用於 Mac App Store 相容性用途。我們現在發布另外兩個產物,darwin-arm64mas-arm64,它們是上述產物的 Apple Silicon 等效版本。

我需要做什麼?

您需要發布兩個版本的應用程式:一個用於 x64 (Intel Mac),另一個用於 arm64 (Apple Silicon)。好消息是 electron-packagerelectron-rebuildelectron-forge 已經支援以 arm64 架構為目標。只要您運行這些套件的最新版本,一旦您將目標架構更新為 arm64,您的應用程式應該就能完美運作。

未來,我們將發布一個套件,讓您可以將您的 arm64x64 應用程式「合併」為單一通用二進位檔案,但值得注意的是,這個二進位檔案會非常龐大,可能不適合發布給使用者。

更新:此套件現已在 @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 中新技術的優勢,例如增加的記憶體頁面大小。
  • 我們有提到效能會大幅降低嗎?