如何在Apple Silicon Mac上用electron-builder构建通用包?
如何强制electron-builder在M1 Mac上构建单个通用Mac包?
解决方案
1. 调整electron-builder配置文件
在项目的package.json的build字段,或者独立的electron-builder.yml配置文件中,明确指定构建目标为通用架构:
package.json 配置示例
"build": { "mac": { "target": [ { "target": "dmg", // 可替换为你需要的包格式,比如pkg "arch": ["universal"] } ], "universal": true } }
electron-builder.yml 配置示例
mac: target: - target: dmg arch: [universal] universal: true
2. 强制包含Intel架构依赖
由于你的应用依赖Intel编译的二进制文件,若出现该文件被自动过滤的情况,可通过extraResources配置强制将其加入包中:
"build": { "extraResources": [ { "from": "你的Intel二进制文件路径", "to": "./", "filter": ["**/*"] } ] }
该二进制文件会被包含在通用包中,运行时Rosetta会自动处理兼容。
3. 命令行直接指定参数
如果通过命令行触发构建,可直接添加--universal参数强制生成通用包:
electron-builder --mac universal
注意事项
- electron-builder v23+ 版本默认在Apple Silicon设备上会分开生成x64和arm64包,通过上述配置可覆盖默认行为
- 通用包会合并x64和arm64架构的Electron主程序,同时保留你的Intel依赖,不影响通过Rosetta运行
内容的提问来源于stack exchange,提问作者Jeandré
相关产品推荐
相关产品推荐

