Navicat 在 macOS Ventura/Sonoma 启动崩溃主因是缺失三项沙盒 entitlements:com.apple.security.files.user-selected.read-write、com.apple.security.cs.allow-jit 和 com.apple.security.cs.disable-library-validation,导致系统级拦截而非软件自身故障。
Navicat 启动即崩溃:先确认是不是签名和沙盒权限问题
macos ventura/sonoma 上 navicat v16.x 一点击就消失,控制台刷 exc_crash (sigabrt)、nsapplicationinitialize 报错,大概率不是软件坏了,而是系统直接拒载——因为缺了三项硬性 entitlements。apple 自 catalina 起强制 appkit 应用满足沙盒契约,而 navicat 官方分发版长期没补全。
-
com.apple.security.files.user-selected.read-write缺失 → “完全磁盘访问”授权根本不会弹出,或点了也没用 -
com.apple.security.cs.allow-jit和com.apple.security.cs.disable-library-validation缺失 →navicat_helper进程被amfid直接kill -9,连日志都来不及写 - 哪怕你手动点开“隐私与安全性”里开了 FDA,只要 entitlements 没嵌进二进制,系统照样当它非法
别急着重装;先打开 ~/Library/Logs/DiagnosticReports/Navicat_*.crash,搜 Application Specific Information 下的 *** Terminating app due to uncaught —— 出现这句,基本锁死是沙盒拦杀。
arch -x86_64 启动失败?Rosetta 环境本身可能被破坏
在 M4/M3/M1 Mac 上执行 arch -x86_64 /Applications/Navicat\ Premium.app/Contents/MacOS/Navicat\ Premium 报 Terminated due to signal 6 或 LSOpenURLsWithRole() failed,说明 Rosetta 2 未就绪,或已损坏。
- 先确认 Rosetta 已安装:
/usr/sbin/softwareupdate --install-rosetta --agree-to-license(需输密码,无回显) - 再检查应用是否被标记为“已隔离”:
xattr -l /Applications/Navicat\ Premium.app,若输出含com.apple.quarantine,运行sudo xattr -r -d com.apple.quarantine /Applications/Navicat\ Premium.app - 注意:勾选“在 Rosetta 中打开”只影响双击行为,终端里用
arch命令时该选项无效,必须靠命令本身驱动
信号 6(SIGABRT)在这里不是代码 bug,而是系统级拦截——Rosetta 转译过程中动态库签名校验失败,触发 hardened runtime 的保护熔断。
删配置 ≠ 重置成功:Navicat 的数据路径有隐藏依赖
清掉 ~/Library/Preferences/com.prect.NavicatPremium.plist 和 ~/Library/Caches/com.prect.NavicatPremium 后仍闪退?你可能漏掉了它的核心状态目录:
-
~/Library/Application Support/PremiumSoft CyberTech/Navicat Premium/—— 这里存连接配置、SSH 密钥缓存、甚至部分插件状态 -
~/Library/Application Support/com.prect.NavicatPremium/—— 较新版本改用此路径,和旧版并存,必须一起删 - 别信“搜
*navicat*就完事”:有些残留会藏在~/Library/Group Containers/下,尤其当你用过 Navicat Lite 同步登录时
真正干净的重置,是删完上述所有路径后,**重启 Finder(右键菜单栏 Finder 图标 → 重新启动)**,再启动 Navicat——否则某些 cached bundle 仍会被内核复用。
Hardened Runtime 补签失败?codesign 不是万能解药
有人试过 sudo codesign --force --deep --sign - /Applications/Navicat\ Premium.app,结果启动更慢、几秒后还是 SIGABRT。原因很实在:Navicat 内部用了私有框架(比如 WebKitPrivate)、JIT 编译器、以及未签名的第三方 dylib,单纯加个 ad-hoc signature 只是绕过“未签名”检查,但过不了 runtime 的深度验证。
- 补 entitlements 必须用真实开发者证书 + provisioning profile,自签名证书无法声明
allow-jit等特权 -
--deep在 macOS 13+ 已被弱化,对嵌套在Frameworks/下的 dylib 可能漏签 - 最稳妥的临时方案:不补签,改用 Docker 运行官方 Linux 版(
docker run -d -p 6080:6080 -e PASSWORD=xxx navicat/navicat),彻底脱离 macOS 沙盒约束
真正卡住的点从来不是“怎么让它跑起来”,而是“它凭什么被允许跑起来”——系统机制比我们想得更刚性,绕不过就换轨道。











