Electron Forge 打包兼容x64与arm64的macOS应用失败求助
Electron Forge 打包兼容x64与arm64的macOS应用失败求助
兄弟,我之前在M系列Mac上打包Electron通用应用的时候也踩过完全一样的坑,你遇到的问题大概率是配置细节或者版本兼容的问题,给你几个亲测有效的解决思路:
先确认版本兼容性
低版本的Electron Forge和Electron对Universal架构的支持很不完善,建议先升级到最新稳定版:npm install @electron-forge/cli@latest @electron-forge/maker-zip@latest electron@latest注意Electron版本至少要在v12以上,官方从这个版本开始正式支持通用二进制打包。
修正package.json的配置层级
你之前的配置结构有点问题,Forge的targetArch应该直接放在packagerConfig下,而不是嵌套在config里,试试调整成这样:"forge": { "packagerConfig": { "targetArch": "universal", "asar": true }, "makers": [ { "name": "@electron-forge/maker-zip", "platforms": ["darwin"] } ] }配置完后先清理缓存再打包:
npx electron-forge clean && npm run package手动用@electron/universal合并(兜底方案)
如果上面的方法还是不行,可以先分别打包两个架构的版本,再手动合并:- 先打包x64版本:
npx electron-forge package --arch=x64 - 再打包arm64版本:
npx electron-forge package --arch=arm64 - 安装依赖并写合并脚本:
创建npm install @electron/universal --save-devmerge-universal.js文件:const { makeUniversalApp } = require('@electron/universal'); async function createUniversalApp() { try { await makeUniversalApp({ x64AppPath: './out/你的应用名-darwin-x64/你的应用名.app', arm64AppPath: './out/你的应用名-darwin-arm64/你的应用名.app', outAppPath: './out/你的应用名-darwin-universal/你的应用名.app' }); console.log('通用版本生成成功!'); } catch (err) { console.error('合并失败:', err); } } createUniversalApp(); - 运行脚本完成合并:
node merge-universal.js
- 先打包x64版本:
额外小技巧
打包前可以设置环境变量强制开启多架构打包:export ELECTRON_BUILD_ALL_ARCHS=1 && npm run package
备注:内容来源于stack exchange,提问作者Vandervidi
相关产品推荐
相关产品推荐

