跳至主要内容

Apple 芯片支持

·3 分钟阅读

随着 Apple 芯片硬件在今年晚些时候发布,您让您的 Electron 应用程序在新硬件上运行的路径是什么样的?


随着 Electron 11.0.0-beta.1 的发布,Electron 团队现在正在发布在 Apple 计划于今年晚些时候发布的新 Apple 芯片硬件上运行的 Electron 版本。您可以使用 npm install electron@beta 获取最新的 beta 版本,或直接从我们的发布网站下载。

它是如何工作的?

从 Electron 11 开始,我们将为 Intel Mac 和 Apple 芯片 Mac 提供单独的 Electron 版本。在此更改之前,我们已经发布了两个工件,darwin-x64mas-x64,后者用于 Mac App Store 兼容性使用。我们现在正在发布另外两个工件,darwin-arm64mas-arm64,它们是上述工件的 Apple 芯片等效项。

我需要做什么?

您需要发布两个版本的应用程序:一个用于 x64(Intel Mac),另一个用于 arm64(Apple 芯片)。好消息是,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 芯片应用程序仅在 Apple 芯片硬件上运行,在撰写此博客文章时,该硬件尚未商业发售。如果您有 开发者过渡套件,您可以在该套件上测试您的应用程序。否则,您将必须等待量产 Apple 芯片硬件发布才能测试您的应用程序是否正常工作。

Rosetta 2 怎么样?

Rosetta 2 是 Apple 最新版本的 Rosetta 技术,它允许您在其新的 arm64 Apple 芯片硬件上运行 x64 Intel 应用程序。尽管我们认为 x64 Electron 应用程序将在 Rosetta 2 下运行,但有一些重要的事情需要注意(以及您应该发布原生 arm64 二进制文件的原因)。

  • 您的应用程序的性能将显著降低。Electron/V8 使用 JIT 编译 JavaScript,并且由于 Rosetta 的工作方式,您将有效地运行两次 JIT(一次在 V8 中,一次在 Rosetta 中)。
  • 您将失去 Apple 芯片中新技术的好处,例如增加的内存页大小。
  • 我们是否提到过性能将显著降低?