我的 app 写完了一个 draft 版本,现在我想打包它。我的机器是 Linux ,用的是 electron-builder 打包。
打包 pkg 时会跳过,告诉我必须要签名才行。
skipped macOS application code signing reason=supported only on macOS
打包 windows 时会有以下错误:
/node_modules/builder-util/src/util.ts:133:18
Exit code: ENOENT. spawn productbuild ENOENT failedTask=build stackTrace=Error: Exit code: ENOENT. spawn productbuild ENOENT
现在我只能看到 linux 的 appimage 可以用了。
我的 package.json
"mac": {
"category": "public.app-category.education",
"target": "pkg"
},
"linux":{
"target": "AppImage"
},
"win":{
"target": "nsis"
},
打包命令用的是:
electron-builder -mwl
现在我网上搜索一圈看下来,打包 mac 的应用必须要在 mac 上才行,因为签名只能在 macosx 上完成。
你们是怎么在一个机器上打包三个不同的平台的?( mac/linux/windows )
确实,对于 macOS 平台,必须在 macOS 上才能进行签名和打包操作。对于 Windows 平台,可能需要安装一些额外的环境和工具才能进行打包。
您可以考虑使用一些云服务,如 Travis CI 或 AppVeyor,来在不同的平台上进行自动化打包操作。这些服务可以在云端提供一个干净的环境,让您可以进行跨平台打包。
另外,您也可以考虑使用 Docker 进行跨平台打包。在 Docker 中,您可以构建不同的容器,在每个容器中运行对应平台的打包命令。
总之,跨平台打包需要一些额外的工作和准备,但是使用云服务或 Docker,可以大大简化这个过程。