我有一个用Electron Builder为macOS和Windows构建的Electron应用程序。
目前,对于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')
此外,如果我在Apple硅机器上构建并尝试在同一台机器上运行Intel版本(使用Rosetta),我会得到以下结果:
mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')
唯一可行的方法是在英特尔机器上构建英特尔应用程序,然后在苹果硅机器上构建arm64应用程序。但是这不是一个选项,因为我需要发布的latest.yml
引用,如果我从不同的机器上发布两个不同的发布(最新的一个覆盖了前一个yaml文件),情况就不是这样了。
我尝试将buildDependenciesFromSource: true
添加到配置根(如#7349或#6623中所述),但没有成功。
注意,我们的应用程序使用内部(专有)本机节点库。如果我从项目中删除这个本机节点库及其用法,一切似乎都很好。
有什么想法吗?
PS:我还在Github上创建了一个issue,因为我不确定它是Electron Builder中的错误还是我这边的错误。
1条答案
按热度按时间xtupzzrd1#
这是由于electron-vite复制了过时版本的库。我刚刚在electron-vite配置中添加了这个: