缘由

在 Electron 打包的过程中遇到各种不同的问题,特记录如下:

node-notifier 定制图标

问题

接上文:Electron 使用 node-notifier 弹窗提示

Electron 集成 node-notifier,在 MacOS 下,消息提醒带有 ternimal 样式的图标。

原因

node-notifier 底层使用了 terminal-notifier,消息提醒是由 terminal-notifier显示,所以使用了它的图标

解决办法

使用自己定制的 terminal-notifier,参考 Why do I see the default terminal icon when I'm setting my own? (OS X) #71

存在的问题

因为有修改过第三方库的源码,因此团队开发中,最好生成一个 npm module 进行分发

应用签名

问题

打包好的应用,打开时提醒 打不开 "***",因为它来自身份不明的开发者,给用户带来困扰

原因

应用没有经过代码签名

解决办法

使用开发者证书对应用进行签名。签名成功后,Contents 目录下会增加 _CodeSignature 目录。如下图:
image.png

参考

签名后导致应用打开闪退

问题

使用开发者证书对应用进行签名以后,打开应用直接闪退。

原因

  • 查看控制台 /Applications/Utilities/Console.app,可以看到对应的闪退日志:(具体日志分析待研究)

image.png

  • 苹果要求签名的应用必须是 hardened runtime

解决办法

修改应用的运行时:

  1. 增加配置文件 entitlements.mac.plist

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
      <dict>
        <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
        <true/>
      </dict>
    </plist>
  2. 修改 electron-builder 配置

    "mac": {
      "hardenedRuntime": true,
      "entitlements": "build/entitlements.mac.plist",
      "entitlementsInherit": "build/entitlements.mac.plist"
    } 

参考


codagew
22 声望1 粉丝