跳至主要內容

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 硬體發布才能測試您的應用程式是否運作。

Rosetta 2 呢?

Rosetta 2 是 Apple 最新版本的Rosetta 技術,可讓您在其新的 arm64 Apple Silicon 硬體上執行 x64 Intel 應用程式。 雖然我們認為 x64 Electron 應用程式可以在 Rosetta 2 下執行,但有一些重要的注意事項(以及為什麼您應該發布原生 arm64 二進位檔的原因)。

  • 您的應用程式效能將會顯著降低。 Electron/V8 使用JIT 編譯 JavaScript,並且由於 Rosetta 的運作方式,您實際上將執行兩次 JIT (一次在 V8 中,一次在 Rosetta 中)。
  • 您將失去 Apple Silicon 中新技術的優勢,例如增加的記憶體分頁大小。
  • 我們有沒有提到效能將會顯著降低?