Apple Silicon 支持
随着 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-x64
和 mas-x64
,后者用于 Mac App Store 兼容性。我们现在又发布了另外两个工件,darwin-arm64
和 mas-arm64
,它们是上述工件的 Apple Silicon 等效物。
我需要做什么?
您将需要发布两个版本的应用程序:一个用于 x64(Intel Mac),另一个用于 arm64(Apple Silicon)。好消息是,electron-packager
、electron-rebuild
和 electron-forge
已经支持以 arm64
架构为目标。只要您运行的是这些软件包的最新版本,一旦您将目标架构更新为 arm64
,您的应用程序就应该可以完美运行。
将来,我们将发布一个允许您将 arm64
和 x64
应用程序“合并”到单个通用二进制文件中的软件包,但值得注意的是,此二进制文件将 *非常大*,并且可能不适合发布给用户。
更新:此软件包现在可在 @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 中新技术的好处,例如增加的内存页面大小。
- 我们有没有提到性能将 *显著* 降低?