跳至主要内容

Apple Silicon 支持

·阅读时长 3 分钟

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


随着 Electron 11.0.0-beta.1 的发布,Electron 团队现在发布了可在新的 Apple Silicon 硬件上运行的 Electron 版本,Apple 计划在今年晚些时候发布这些硬件。您可以使用 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 硬件在撰写本文时尚未上市。如果您拥有 开发者过渡套件,则可以在其上测试您的应用程序。否则,您必须等到生产 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 中新技术的优势,例如增大的内存页大小。
  • 我们是否提到过性能会显著下降?