You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode编译签名的macOS发布版应用在部分Mac无法启动求助

解决Mac上Developer ID签名应用启动失败(错误-54/Operation not permitted)的问题

针对你遇到的情况——用有效Developer ID签名的Release应用在部分Mac能正常启动,但某台Mac上报错“应用无法打开”,终端open返回LSOpenURLsWithRole() failed with error -54,直接运行二进制提示Operation not permitted,且已开启“任何来源”、禁用spctl、确认文件权限无误——下面是几个针对性的排查和解决步骤:

1. 清除Gatekeeper的文件隔离标记

Mac会给从外部渠道(浏览器下载、邮件传输等)获取的文件添加隔离属性,即便关闭了spctl,这个标记仍可能阻止应用运行:

  • 打开终端,先检查应用是否带有隔离属性:
    xattr /Applications/Gaetano Lunches.app
    
    如果输出里有com.apple.quarantine,说明文件被标记了隔离。
  • 移除该属性:
    xattr -d com.apple.quarantine /Applications/Gaetano Lunches.app
    
    之后再尝试启动应用。

2. 检查系统完整性保护(SIP)状态

虽然你禁用了spctl,但SIP的部分组件可能仍在限制应用运行:

  • 查看当前SIP状态:
    csrutil status
    
    如果显示System Integrity Protection status: enabled.,可以临时禁用SIP(注意:解决问题后建议重新开启以保障系统安全):
    1. 重启Mac,按住Command + R进入恢复模式
    2. 打开终端,执行csrutil disable
    3. 重启系统后尝试启动应用
    4. 问题解决后,回到恢复模式执行csrutil enable重新开启SIP

3. 验证并修复应用签名

这台Mac可能存在签名验证异常,重新检查并修复签名:

  • 先验证当前签名有效性:
    codesign -dv --verbose=4 /Applications/Gaetano Lunches.app
    
    查看输出中的Validity和Authority字段,确认是有效的Developer ID签名。
  • 如果签名存在问题,用你的Developer ID证书重新签名:
    codesign -f -s "Developer ID Application: Your Name (Your Team ID)" /Applications/Gaetano Lunches.app
    
    替换命令中的签名信息为你自己的证书内容,重新签名后再测试启动。

4. 检查隐私与安全权限

即便全局开启了“任何来源”,某些隐私权限(如磁盘访问、文件读取)可能未在这台Mac上授予应用:

  • 打开系统设置 → 隐私与安全
  • 查看“完全磁盘访问权限”“文件和文件夹”等选项,确认Gaetano Lunches.app已被添加并允许访问
  • 若未添加,点击“+”按钮,找到应用所在路径添加后,重启应用尝试启动

5. 排查依赖库兼容性

这台Mac可能缺少应用依赖的系统库,或库版本与正常运行的Mac不一致:

  • 用otool查看应用的依赖库:
    otool -L /Applications/Gaetano Lunches.app/Contents/MacOS/Gaetano Lunches
    
    对比能正常运行的Mac上的依赖版本,检查是否存在缺失或版本差异
  • 若有缺失,可尝试重新安装Xcode Command Line Tools,或把这台Mac的系统版本更新到与正常Mac一致

内容的提问来源于stack exchange,提问作者Denis Óbukhov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:02:29