navicat 16 在 macos sonoma 上打不开,主因是缺失沙盒权限、签名未公证或架构不匹配;缺三项 entitlements 会导致系统级拦截,x86_64 版需强制 rosetta,hidpi 渲染也可能卡住启动动画。
navicat 16 在 macos sonoma(14.x)上打不开,基本不是软件坏了,而是系统在启动前就把它拦下了——缺沙盒权限、签名没公证、或架构不匹配,三者占其一,就会静默退出或弹“已损坏”。
检查是否因缺失 entitlements 被系统拒载
macOS Catalina 之后强制 AppKit 应用声明沙盒权限,而 Navicat 16 官方分发版长期漏掉三项关键 entitlement:
-
com.apple.security.files.user-selected.read-write:缺它,“完全磁盘访问”授权根本不会弹出,点了也没用 -
com.apple.security.cs.allow-jit和com.apple.security.cs.disable-library-validation:缺这两项,navicat_helper进程会在加载瞬间被amfid杀掉,连崩溃日志都不留
验证方式:打开「控制台」→ 左侧选「任何进程」→ 搜索 Navicat,看最近日志里有没有 Hardened Runtime violation 或 code signature not valid。出现这些,基本就是 entitlements 缺失。
确认二进制架构是否匹配 Apple Silicon
M1/M2/M3/M4 Mac 上运行 x86_64 版本的 Navicat,必须走 Rosetta;但若安装包本身没标记支持 Rosetta,或你忘了勾选,系统会尝试原生运行,直接触发 EXC_BAD_ACCESS 崩溃。
执行这条命令查清底细:
file /Applications/Navicat\ Premium.app/Contents/MacOS/Navicat\ Premium
如果输出只有 x86_64,没有 arm64,说明它是纯 Intel 版。此时:
- 右键
Navicat Premium.app→ 「显示简介」→ 勾选「在 Rosetta 中打开」 - 或者终端强制启动:
arch -x86_64 /Applications/Navicat\ Premium.app/Contents/MacOS/Navicat\ Premium - 别信“自动适配”——Apple Silicon 不会自己翻译指令,Rosetta 必须显式启用
绕过 Gatekeeper 隔离但别跳过签名修复
下载的安装包带 com.apple.quarantine 属性,首次启动会被拦截。但光删 quarantine 不够,因为 Sonoma 对 hardened runtime 要求更严:
- 先清理隔离:
xattr -rd com.apple.quarantine /Applications/Navicat\ Premium.app - 再验证签名是否断裂:
codesign --verify --deep --strict /Applications/Navicat\ Premium.app,报错就说明签名链已断 - 没开发者证书的话,至少确保应用能启动:右键 → 「显示简介」→ 勾选「仍要打开」(Sonoma 14.5+ 才有该选项;若无,升级系统或换 16.1+ 已公证版本)
重签名需 Apple Developer ID 证书,普通用户不建议硬上;降级到 Navicat 15.6.11 或升到 16.1+ 是更稳路径。
别忽略 HiDPI 渲染卡死这个隐藏杀手
Navicat 16 用的是 Qt 5.12,对 Sonoma 的高分屏缩放支持不完整。外接 4K 显示器 + 系统设为“更多空间”时,常卡在启动动画不动——不是崩溃,是 UI 线程 hang 在字体渲染阶段。
临时解法:禁用高分辨率支持:
plutil -convert xml1 /Applications/Navicat\ Premium.app/Contents/Info.plist<br>sed -i '' 's/<key>NSHighResolutionCapable<true></true>/<key>NSHighResolutionCapable<false></false>/g' /Applications/Navicat\ Premium.app/Contents/Info.plist<br>plutil -convert binary1 /Applications/Navicat\ Premium.app/Contents/Info.plist</key></key>
注意:别用文本编辑器直接改 plist,必须用 plutil 转换格式,否则启动失败。
真正麻烦的不是某一步操作,而是多个条件叠加:比如你用的是 M3 Mac + Sonoma 14.6 + 下载了非官网渠道的 x86_64 包 + 还没关 quarantine + 又开了 HiDPI ——这时单修一个点没用,得按顺序排查。











