缘由
在 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
目录。如下图:
参考
签名后导致应用打开闪退
问题
使用开发者证书对应用进行签名以后,打开应用直接闪退。
原因
- 查看控制台
/Applications/Utilities/Console.app
,可以看到对应的闪退日志:(具体日志分析待研究)
- 苹果要求签名的应用必须是
hardened runtime
解决办法
修改应用的运行时:
-
增加配置文件
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>
-
修改
electron-builder
配置"mac": { "hardenedRuntime": true, "entitlements": "build/entitlements.mac.plist", "entitlementsInherit": "build/entitlements.mac.plist" }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。