一、前置背景
在Mac中构建Electron桌面端存在以下依赖:
- Electron
- Electron-builder
- ffi
- ref
- Node
- Xcode
整体依赖关系,如图:
二、Xcode升级前
Xcode11版本前,构建 Electron桌面端配置信息
{
...
"electron": "9+",
"electron-builder": "22.7.0",
"ffi": "2.3.0",
"ref": "1.3.5",
"node": "10.15.0"
...
}
- 由于Electron、Node使用不同的Chrome内核,需要编译成一致的,才能使node正常运行在Electron上,官方推荐的是electron-rebuild,把二者转换成一致。在rebuild的时候,指定一下abi的值不就可以了(感兴趣的可以详细了解下,这里就不介绍了);这里就存在node版本的问题。
- node-gyp是为node编译c++扩展的时候使用的编译工具,而指定abi重新编译二进制文件离不开node-gyp。
cd /path-to-module/
HOME=~/.electron-gyp node-gyp rebuild --target=1.2.3 --arch=x64 --dist-url=https://electronjs.org/headers
HOME=~/.electron-gyp设置去哪找头文件--target=1.2.3设置了 Electron 的版本。--dist-url=...设置了 Electron 的 headers 的下载地址。--arch=x64设置了该模块为适配64位操作系统而编译。
cd /node_modules/ffi/
node-gyp rebuild --target=9.0.0 --arch=x64 --dist-url=https://electronjs.org/headers
三、Xcode升级后
Xcode11+后,欲正常构建Electron桌面端需升级"electron-builder": "^22.10.5";
而electron-builder依赖node14+,故ffi,ref需要更换,
原因:node 12+ 不支持 ffi/ref
升级后配置信息如下:
{
...
"electron": "9+",
"electron-builder": "22.10.5",
"ffi-napi": "^4.0.3",
"ref-napi": "^3.0.3",
"node": "14+"
...
}
摸索前进~~~