Xcode11+ & Electron 构建升级方案

1,070 阅读1分钟

一、前置背景

在Mac中构建Electron桌面端存在以下依赖:

  1. Electron
  2. Electron-builder
  3. ffi
  4. ref
  5. Node
  6. Xcode 整体依赖关系,如图: image.png

二、Xcode升级前

Xcode11版本前,构建 Electron桌面端配置信息

    {
        ...
        "electron": "9+",
        "electron-builder": "22.7.0",
        "ffi": "2.3.0",
        "ref": "1.3.5",
        "node": "10.15.0"
        ...
    }
  1. 由于Electron、Node使用不同的Chrome内核,需要编译成一致的,才能使node正常运行在Electron上,官方推荐的是electron-rebuild,把二者转换成一致。在rebuild的时候,指定一下abi的值不就可以了(感兴趣的可以详细了解下,这里就不介绍了);这里就存在node版本的问题。
  2. 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位操作系统而编译。

eg:\color{red}{eg:}

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+"
        ...
    }

摸索前进~~~