Mac Electron App 签名后打开闪退
背景
昨天在测试 Mac Electron App 打包,发现不签名的应用能够正常打开,签了名的打开反而会崩溃。
寻因
首先我怀疑是不是自己代码导致闪退,但是在一番查找后,发现还根本没到执行我的代码就闪退了。
然后就猜可能是我打包的参数缺了些东西。
我使用 electron-builder 打包的,当时配置的是:
"mac": { "category": "public.app-category.developer-tools", "target": "dmg", "icon": "res/logo.icns", "gatekeeperAssess": false }
我配置参数的原则是按需设置,加上这些能够打包签名我就不会再添加其他的。
原因
查看了 electron-builder 的文档和网上资料后知道,苹果要求签名的应用的 runtime 必须是 hardened runtime。
这个时候应用的一些权限会受到限制,如果没有相关权限设置就会因为权限不足而闪退。
PS:这里有一点我比较奇怪的,大概是前几周,那时签名的应用还能打开。
解决
1、添加一个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>
2、electron-builder配置增加
"mac": { "hardenedRuntime": true, "entitlements": "build/entitlements.mac.plist", "entitlementsInherit": "build/entitlements.mac.plist" }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
2018-11-24 中山游记