我有一个Electron应用程序
Electron Builder
适用于macOS和Windows。
目前,对于macos,我们的应用程序仅为x64目标构建(在英特尔机器上),然后推送到S3进行自动更新。现在我想为arm64和x64 macos目标构建应用程序(注意:我现在不想做一个通用的应用程序)。
我为Electron Builder添加了以下配置:
...
target: {
target: 'default',
arch: [
'x64',
'arm64'
]
},
...
当我在Intel(x64)机器上进行构建,然后尝试在Apple Silicon机器上运行arm64应用程序时,我会收到以下错误:
mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')
此外,如果我在苹果硅机器上进行构建,并尝试在同一台机器上运行英特尔版本(使用罗塞塔),我会得到以下信息:
mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')
唯一可行的方法是在英特尔机器上构建一个英特尔应用程序,然后在苹果硅机器上构建arm64应用程序。但是,这不是一个选项,因为我需要发布
latest.yml
引用两者,如果我从不同的机器进行两次不同的发布(最新的一次覆盖前一次的yaml文件),情况就不是这样了。
我试着添加
buildDependenciesFromSource: true
到配置根目录(如中所述
#7349
或
#6623
)但没有成功。
请注意,我们的应用程序使用内部(专有)本机节点库。如果我从项目中删除这个本机节点库及其用法,一切似乎都很好。
有什么想法吗?
附言:我还创建了一个
issue
在Github上,因为我不确定这是Electron Builder中的错误还是我这边的问题。