Welche Schritte sind erforderlich, um deine Electron-App nach der Veröffentlichung der Apple Silicon-Hardware auf dieser zum Laufen zu bringen?
Mit der Veröffentlichung von Electron 11.0.0-beta.1 liefert das Electron-Team eine Version, welche auf der neuen Apple Silicon-Hardware laufen wird, welche Ende dieses Jahres veröffentlicht werden wird. Du kannst die neueste Beta-Version entweder mit Einbindung durch npm install electron@beta
oder direkt von unserer Webseite herunterladen.
Wie funktioniert das?
Ab Electron 11 werden wir für Intel Macs und Apple Silicon Macs verschiedene Versionen liefern. Vor dieser Änderung hatten wir bereits zwei Artefakte, darwin-x64
und mas-x64
, geliefert, wobei Letzteres speziell für die Veröffentlichung auf dem Mac App Store ausgerichtet war. Nun liefern wir zwei weitere Artefakte, darwin-arm64
und mas-arm64
, welche die entsprechenden Equivalente für Apple Silicon sind.
Was mich ich tun?
You will need to ship two versions of your app: one for x64 (Intel Mac) and one for arm64 (Apple Silicon). The good news is that electron-packager
, electron-rebuild
and electron-forge
already support targeting the arm64
architecture. As long as you're running the latest versions of those packages, your app should work flawlessly once you update the target architecture to arm64
.
In the future, we will release a package that allows you to "merge" your arm64
and x64
apps into a single universal binary, but it's worth noting that this binary would be huge and probably isn't ideal for shipping to users.
Update: This package is now available at @electron/universal
. You can use it to merge two packaged x64 and arm64 apps into a single binary.
Potential Issues
Native Modules
As you are targeting a new architecture, you'll need to update several dependencies which may cause build issues. The minimum version of certain dependencies are included below for your reference.
Dependency | Version Requirement |
---|---|
Xcode | >=12.2.0 |
node-gyp | >=7.1.0 |
electron-rebuild | >=1.12.0 |
electron-packager | >=15.1.0 |
As a result of these dependency version requirements, you may have to fix/update certain native modules. One thing of note is that the Xcode upgrade will introduce a new version of the macOS SDK, which may cause build failures for your native modules.
How do I test it?
Currently, Apple Silicon applications only run on Apple Silicon hardware, which isn't commercially available at the time of writing this blog post. If you have a Developer Transition Kit, you can test your application on that. Otherwise, you'll have to wait for the release of production Apple Silicon hardware to test if your application works.
What about Rosetta 2?
Rosetta 2 is Apple's latest iteration of their Rosetta technology, which allows you to run x64 Intel applications on their new arm64 Apple Silicon hardware. Although we believe that x64 Electron apps will run under Rosetta 2, there are some important things to note (and reasons why you should ship a native arm64 binary).
- Your app's performance will be significantly degraded. Electron / V8 uses JIT compilation for JavaScript, and due to how Rosetta works, you will effectively be running JIT twice (once in V8 and once in Rosetta).
- You lose the benefit of new technology in Apple Silicon, such as the increased memory page size.
- Did we mention that the performance will be significantly degraded?