问题现象
当你下载或拷贝一个未签名的 .app 应用时,macOS 可能会弹出以下错误提示:
- 「xxx.app 已损坏,无法打开。您应该将它移到废纸篓。」
- 「无法打开 xxx,因为无法验证开发者。」
- 「Apple 无法检查其是否包含恶意软件。」
- 「来自未识别的开发者」
问题原因
这些问题通常不是应用本身损坏,而是 macOS 的 Gatekeeper 安全机制在作怪。当应用从网络下载、AirDrop 传输或解压 zip 时,系统会自动添加「隔离标记」(扩展属性),导致未签名应用无法正常打开。
判断依据: 如果该应用在别人电脑上能正常使用,且你的 Mac 芯片架构(Intel / Apple Silicon)与应用匹配,那基本就是扩展属性的问题,按下面的方法处理即可。
解决方案
第一步:开启「任何来源」选项(只需设置一次)
如果你已经开启过「任何来源」,可以跳过此步骤,直接看第二步。
-
点击菜单栏搜索图标(或按
Command + 空格),输入 终端,打开终端应用 -
输入以下命令,然后按回车:
sudo spctl --master-disable
-
输入你的 Mac 登录密码(输入时不会显示任何字符,这是正常的),然后按回车
-
完成后,可以在 系统设置 → 隐私与安全性 中看到「任何来源」选项已开启,然后切换到「任何来源」。
第二步:清除扩展属性(核心步骤)
-
打开 终端
-
输入以下命令(注意
cr后面有一个空格,先不要按回车):
xattr -cr
-
将应用拖入终端窗口(从「应用程序」文件夹或桌面拖入),路径会自动填入
-
按回车执行命令
-
然后右键点击应用 → 选择「打开」→ 再点击「打开」,即可正常使用
或者直接输入完整命令:
xattr -cr "/Applications/YourApp.app"
提示: 将
/Applications/YourApp.app替换为你的应用实际路径。
可选:查看扩展属性
如果你想确认问题原因,可以先查看应用的扩展属性:
xattr -l "/Applications/YourApp.app"
常见的扩展属性说明
| 属性名 | 说明 | 触发场景 |
|---|---|---|
com.apple.quarantine | 隔离标记,Gatekeeper 据此拦截未签名应用 | 浏览器下载、AirDrop、解压 zip |
com.apple.provenance | macOS Ventura+ 新增,记录应用来源 | 网络获取、复制/解压后保留的元数据 |
... | 如果是不同渠道下载的还会带上不同渠道的标识。 | 来源于不同的下载源 |
注意事项
-
确认芯片架构匹配:
- Intel 芯片 Mac → 需要 Intel 版本或通用版本(Universal)的应用
- Apple Silicon(M1/M2/M3/M4)Mac → 需要 ARM 版本或通用版本的应用
- 可通过左上角 → 关于本机 查看芯片类型
-
应用必须已安装:
- 执行
xattr -cr时,应用需要已经拖入「应用程序」文件夹或放在桌面 - 不能直接对
.dmg磁盘映像内的应用执行此命令
- 执行
-
确认应用来源可信:
- 只对你信任的应用执行上述操作
- 建议从官方渠道或可靠来源获取应用
快速命令参考
# 开启「任何来源」(只需执行一次)
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"