macOS 未签名应用「已损坏」问题解决方案

0 阅读3分钟

问题现象

当你下载或拷贝一个未签名的 .app 应用时,macOS 可能会弹出以下错误提示:

  • 「xxx.app 已损坏,无法打开。您应该将它移到废纸篓。」
  • 「无法打开 xxx,因为无法验证开发者。」
  • 「Apple 无法检查其是否包含恶意软件。」
  • 「来自未识别的开发者」

问题原因

这些问题通常不是应用本身损坏,而是 macOS 的 Gatekeeper 安全机制在作怪。当应用从网络下载、AirDrop 传输或解压 zip 时,系统会自动添加「隔离标记」(扩展属性),导致未签名应用无法正常打开。

判断依据: 如果该应用在别人电脑上能正常使用,且你的 Mac 芯片架构(Intel / Apple Silicon)与应用匹配,那基本就是扩展属性的问题,按下面的方法处理即可。


解决方案

第一步:开启「任何来源」选项(只需设置一次)

如果你已经开启过「任何来源」,可以跳过此步骤,直接看第二步。

  1. 点击菜单栏搜索图标(或按 Command + 空格),输入 终端,打开终端应用

  2. 输入以下命令,然后按回车:

sudo spctl --master-disable
  1. 输入你的 Mac 登录密码(输入时不会显示任何字符,这是正常的),然后按回车

  2. 完成后,可以在 系统设置 → 隐私与安全性 中看到「任何来源」选项已开启,然后切换到「任何来源」。

    image.png

第二步:清除扩展属性(核心步骤)

  1. 打开 终端

  2. 输入以下命令(注意 cr 后面有一个空格,先不要按回车):

xattr -cr 
  1. 将应用拖入终端窗口(从「应用程序」文件夹或桌面拖入),路径会自动填入

  2. 回车执行命令

  3. 然后右键点击应用 → 选择「打开」→ 再点击「打开」,即可正常使用

或者直接输入完整命令:

xattr -cr "/Applications/YourApp.app"

提示:/Applications/YourApp.app 替换为你的应用实际路径。


可选:查看扩展属性

如果你想确认问题原因,可以先查看应用的扩展属性:

xattr -l "/Applications/YourApp.app"

常见的扩展属性说明

属性名说明触发场景
com.apple.quarantine隔离标记,Gatekeeper 据此拦截未签名应用浏览器下载、AirDrop、解压 zip
com.apple.provenancemacOS Ventura+ 新增,记录应用来源网络获取、复制/解压后保留的元数据
...如果是不同渠道下载的还会带上不同渠道的标识。来源于不同的下载源

注意事项

  1. 确认芯片架构匹配:

    • Intel 芯片 Mac → 需要 Intel 版本或通用版本(Universal)的应用
    • Apple Silicon(M1/M2/M3/M4)Mac → 需要 ARM 版本或通用版本的应用
    • 可通过左上角 → 关于本机 查看芯片类型
  2. 应用必须已安装:

    • 执行 xattr -cr 时,应用需要已经拖入「应用程序」文件夹或放在桌面
    • 不能直接对 .dmg 磁盘映像内的应用执行此命令
  3. 确认应用来源可信:

    • 只对你信任的应用执行上述操作
    • 建议从官方渠道或可靠来源获取应用

快速命令参考

# 开启「任何来源」(只需执行一次)
sudo spctl --master-disable

# 查看扩展属性
xattr -l "/path/to/App.app"

# 清除扩展属性(推荐)
xattr -cr "/path/to/App.app"

# 仅清除隔离标记
xattr -d com.apple.quarantine "/path/to/App.app"