背景app
昨天在测试 Mac Electron App 打包,发现不签名的应用可以正常打开,签了名的打开反而会崩溃。electron
寻因测试
首先我怀疑是否是本身代码致使闪退,可是在一番查找后,发现还根本没到执行个人代码就闪退了。ui
而后就猜多是我打包的参数缺了些东西。spa
我使用 electron-builder 打包的,当时配置的是:code
"mac": { "category": "public.app-category.developer-tools", "target": "dmg", "icon": "res/logo.icns", "gatekeeperAssess": false }
我配置参数的原则是按需设置,加上这些可以打包签名我就不会再添加其余的。xml
缘由blog
查看了 electron-builder 的文档和网上资料后知道,苹果要求签名的应用的 runtime 必须是 hardened runtime。文档
这个时候应用的一些权限会受到限制,若是没有相关权限设置就会由于权限不足而闪退。get
PS:这里有一点我比较奇怪的,大概是前几周,那时签名的应用还能打开。
解决
一、添加一个plist文件,设置权限。
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" }