Prise en charge d'Apple Silicon
Avec la sortie de matériel Apple Silicon plus tard dans l'année, à quoi ressemble le chemin d'accès pour que votre application Electron fonctionne sur le nouveau matériel ?
Avec la sortie d'Electron 11.0.0-beta.1, l'équipe d'Electron est maintenant en train de livrer des versions d'Electron qui fonctionnent sur le nouveau matériel Apple Silicon qu'Apple prévoit d'expédier plus tard cette année. Vous pouvez récupérer la dernière version bêta avec npm install electron@beta
ou la télécharger directement à partir de notre site des versions.
Comment ça marche ?
À partir d'Electron 11, nous expédierons des versions séparées d'Electron pour les Mac Intel et Apple Silicon Macs. Avant cette modification, nous proposions déjà deux artefacts, darwin-x64
et mas-x64
, ce dernier étant destiné à la compatibilité avec le Mac App Store. Nous expédions désormais deux autres artefacts, darwin-arm64
et mas-arm64
, qui sont les équivalents Apple Silicon des artefacts susmentionnés.
Que devez-vous faire ?
Vous devrez d'expédier deux versions de votre application : un pour la x64 (Intel Mac) et un autre pour am64 (Apple Silicon). La bonne nouvelle, c'est qu'il existe electron-packager
, electron-rebuild
et electron-forge
prennent déjà en charge l'architecture arm64
. Tant que vous utilisez les dernières versions de ces paquets, votre application devrait fonctionner parfaitement une fois que vous aurez mis à jour l'architecture cible vers arm64
.
À l'avenir, nous publierons un package qui vous permettra de « fusionner » vos applications arm64
et x64
en un seul binaire universel, mais il convient de noter que ce binaire serait énorme et ne serait probablement pas idéal pour être distribué aux utilisateurs.
Mise à jour : ce package est désormais disponible à l'adresse @electron/universal
. Vous pouvez l'utiliser pour fusionner deux applications x64 et arm64 packagées en un seul binaire.
Problèmes potentiels
Modules natifs
Comme vous visez une nouvelle architecture, vous devrez mettre à jour plusieurs dépendances qui peuvent causer des problèmes de construction. La version minimale de certaines dépendances est incluse ci-dessous pour votre référence.
Dépendance | Exigences relatives à la version |
---|---|
Xcode | >=12.2.0 |
node-gyp | >=7.1.0 |
electron-rebuild | >=1.12.0 |
electron-packager | >=15.1.0 |
En raison de ces exigences de version de dépendance, vous devrez peut-être corriger/mettre à jour certains modules natifs. Il est important de noter que la mise à niveau de Xcode introduira une nouvelle version du SDK macOS, ce qui pourrait entraîner des échecs de compilation pour vos modules natifs.
Comment puis-je le tester ?
Actuellement, les applications Apple Silicon ne fonctionnent que sur du matériel Apple Silicon, qui n'est pas disponible dans le commerce au moment de la rédaction de cet article. Si vous disposez d'un kit de transition pour développeurs, vous pouvez tester votre application dessus. Sinon, vous devrez attendre la sortie du matériel Apple Silicon pour tester si votre application fonctionne.
Qu’en est-il de Rosetta 2 ?
Rosetta 2 est la dernière version de la technologie Rosetta d'Apple, qui vous permet d'exécuter des applications Intel x64 sur leur nouveau matériel Apple Silicon arm64. Bien que nous pensions que les applications x64 Electron fonctionneront sous Rosetta 2, il y a quelques points importants à noter (et des raisons pour lesquelles vous devriez fournir un binaire arm64 natif).
- Les performances de votre application seront considérablement réduites. Electron / V8 utilise la compilation JIT pour JavaScript, et en raison du fonctionnement de Rosetta, vous exécuterez en fait JIT deux fois (une fois dans V8 et une fois dans Rosetta).
- Vous perdez les avantages des nouvelles technologies d'Apple Silicon, telles que l'augmentation de la taille des pages mémoire.
- Avons-nous mentionné que la performance sera significativement dégradée?