背景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" }