跳转到主要内容

Apple Silicon 支持

·3 分钟阅读

随着 Apple Silicon 硬件将在今年晚些时候发布,您该如何让自己的 Electron 应用在新硬件上运行呢?


随着Electron 11.0.0-beta.1的发布,Electron团队现在正在发布在Apple计划今年晚些时候发布的新的Apple Silicon硬件上运行的Electron构建版本。您可以从我们的 发布网站 获取最新的beta版本,或使用 npm install electron@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 中新技术带来的好处,例如更大的内存页大小。
  • 我们有没有提到过性能会显著下降?