Mac 打开软件提示“已损坏,无法打开”的原因和解决方法

很多人在 MacBook 上安装软件时,可能会遇到这样的提示:

text "XXX.app"已损坏,无法打开。你应该将它移到废纸篓。

或者类似提示:

text 无法打开"XXX.app",因为无法验证开发者。

很多小白看到这个提示,会以为软件真的坏了,其实不一定。很多时候,这是 macOS 的安全机制拦截导致的。

本文整理一下这个问题的原因、解决方法,以及需要注意的风险。


一、为什么会提示软件"已损坏"?

macOS 有一套安全机制,叫做 Gatekeeper。

它的作用是检查你打开的软件是否安全,例如:

  • 软件是不是从 App Store 下载的
  • 软件有没有 Apple 开发者签名
  • 软件有没有经过 Apple 公证
  • 软件是不是从互联网、网盘、聊天工具下载来的
  • 软件是否带有隔离标记

当你从浏览器、网盘、微信、QQ、Telegram、GitHub、第三方网站下载软件时,macOS 可能会自动给这个软件加上一个扩展属性:

bash com.apple.quarantine

这个属性可以理解为:

这个软件是从互联网来的,打开前需要重点检查。

如果 macOS 检查后认为这个软件不可信,就可能提示:

text 软件已损坏,无法打开

但这并不一定代表软件真的损坏了,也可能只是系统拦截了它。


二、常见原因

出现这个问题,通常有下面几种情况:

1. 软件不是从 App Store 下载的

例如:

  • 官网下载
  • GitHub Release 下载
  • 网盘下载
  • 第三方网站下载
  • 朋友发来的安装包

这些软件可能会被 macOS 标记为"来自互联网"。


2. 软件没有经过 Apple 公证

有些开发者开发的软件可以正常使用,但没有提交给 Apple 做公证。

macOS 就可能提示无法验证开发者,甚至提示软件已损坏。


3. 软件签名异常

有些软件在压缩、解压、传输过程中,签名信息可能出现异常。

例如:

  • 解压工具不兼容
  • 下载过程中被中断
  • 文件被重新打包
  • 软件被第三方修改过

这种情况下,macOS 也可能认为软件不安全。


4. 软件被加了隔离属性

这个是最常见的情况。

可以使用下面命令查看 App 是否带有扩展属性:

bash xattr /Applications/XXX.app

如果看到类似内容:

bash com.apple.quarantine

说明这个 App 被 macOS 加了隔离标记。


三、解决方法

方法一:优先使用系统自带方式打开

如果提示"无法验证开发者",可以先尝试这种方式:

  1. 打开「系统设置」
  2. 进入「隐私与安全性」
  3. 找到被拦截的软件
  4. 点击「仍要打开」

或者:

  1. 在 Finder 中找到这个 App
  2. 按住 Control
  3. 点击 App
  4. 选择「打开」
  5. 再次确认打开

如果这种方法可以解决,优先使用这种方式。


四、使用命令行解决

如果上面的方法不行,可以使用 xattr 命令清除隔离属性。

假设软件安装在:

bash /Applications/XXX.app

可以执行:

bash sudo xattr -rd com.apple.quarantine /Applications/XXX.app

这里的 XXX.app 换成你的软件名称。

例如:

bash sudo xattr -rd com.apple.quarantine /Applications/Google\ Chrome.app

注意:如果 App 名称中有空格,需要加反斜杠 \ 转义,或者使用英文引号包起来。

例如:

bash sudo xattr -rd com.apple.quarantine "/Applications/Google Chrome.app"


五、为什么这个命令有效?

命令:

bash sudo xattr -rd com.apple.quarantine /Applications/XXX.app

拆开来看:

bash sudo

表示使用管理员权限执行。

bash xattr

表示操作文件的扩展属性。

bash -r

表示递归处理整个 App 目录。

因为 .app 在 macOS 里不是一个普通文件,而是一个文件夹。

bash -d

表示删除指定的扩展属性。

bash com.apple.quarantine

就是 macOS 给下载软件加上的隔离标记。

所以这条命令的意思是:

删除这个 App 以及它内部文件上的隔离标记。

清除后,macOS 不再把它当作"刚从互联网下载、需要重点拦截"的软件,所以很多情况下就可以正常打开了。


六、还有一种常见命令:xattr -cr

有些教程会让你执行:

bash xattr -cr /Applications/XXX.app

这个命令也可以解决问题。

它的含义是:

bash -c

清除所有扩展属性。

bash -r

递归处理整个 App。

也就是说:

bash xattr -cr /Applications/XXX.app

会清除这个 App 上的所有扩展属性,不只是 com.apple.quarantine。

所以它通常也能解决"软件已损坏"的问题。


七、推荐使用哪个命令?

更推荐使用这个:

bash sudo xattr -rd com.apple.quarantine /Applications/XXX.app

因为它只删除隔离属性,更精准。

不太建议一上来就用:

bash xattr -cr /Applications/XXX.app

因为它会清除所有扩展属性,范围更大。

一般来说:

bash sudo xattr -rd com.apple.quarantine /Applications/XXX.app

已经够用了。


八、完整操作示例

假设你安装了一个软件叫:

text Demo.app

路径是:

bash /Applications/Demo.app

第一步:查看是否有隔离属性

bash xattr /Applications/Demo.app

如果输出:

bash com.apple.quarantine

说明它被隔离了。


第二步:清除隔离属性

bash sudo xattr -rd com.apple.quarantine /Applications/Demo.app

然后输入 Mac 登录密码。

注意:终端输入密码时不会显示内容,这是正常的,输完直接回车即可。


第三步:再次打开软件

重新打开 Demo.app,一般就可以正常运行了。


九、如果软件名称有空格怎么办?

比如软件叫:

text Visual Studio Code.app

路径就是:

bash /Applications/Visual Studio Code.app

这时候命令要写成:

bash sudo xattr -rd com.apple.quarantine "/Applications/Visual Studio Code.app"

或者:

bash sudo xattr -rd com.apple.quarantine /Applications/Visual\ Studio\ Code.app

推荐小白使用第一种,加英文双引号更直观。


十、如果还是打不开怎么办?

如果清除隔离属性后还是打不开,可以尝试下面几种方式。

1. 重新下载软件

可能安装包真的下载不完整,建议去软件官网重新下载。


2. 换一个解压工具

如果是 .zip 或 .rar 文件,可能是解压过程导致文件异常。

可以尝试使用:

  • macOS 自带解压
  • The Unarchiver
  • Keka

重新解压后再安装。


3. 检查芯片架构是否兼容

现在 Mac 有 Intel 芯片和 Apple Silicon 芯片,也就是 M1、M2、M3、M4 等。

如果你下载的软件不支持当前芯片,也可能打不开。

一般软件会区分:

text Intel Apple Silicon Universal

如果你是 M 系列芯片,优先下载:

text Apple Silicon

或者:

text Universal


4. 检查系统版本是否支持

有些新软件需要较新的 macOS 版本。

例如软件要求:

text macOS 13 或更高版本

但你的系统是:

text macOS 12

也可能无法正常打开。


十一、这个方法安全吗?

这个命令本身没有问题,但不要对任何来历不明的软件随便使用。

因为清除隔离属性后,相当于绕过了 macOS 的一部分安全检查。

比较适合下面这些情况:

  • 软件来自官网
  • 软件来自 GitHub 官方 Release
  • 软件来自可信开发者
  • 软件是自己开发的
  • 软件来源明确、可靠

不建议对下面这些软件使用:

  • 破解软件
  • 不明网盘资源
  • 陌生人发来的安装包
  • 不明论坛下载的软件
  • 来历不清的工具类软件

如果软件本身有恶意,清除隔离属性并不会让它变安全,只是让 macOS 不再拦截它。


十二、常用命令汇总

查看 App 扩展属性

bash xattr /Applications/XXX.app

只删除隔离属性,推荐

bash sudo xattr -rd com.apple.quarantine /Applications/XXX.app

清除所有扩展属性,不优先推荐

bash xattr -cr /Applications/XXX.app

软件名称有空格时

bash sudo xattr -rd com.apple.quarantine "/Applications/XXX XXX.app"


十三、总结

Mac 提示软件"已损坏",很多时候并不是软件真的坏了,而是 macOS 的安全机制 Gatekeeper 认为这个软件来源不可信,或者软件带有 com.apple.quarantine 隔离属性。

推荐的解决方式是:

bash sudo xattr -rd com.apple.quarantine /Applications/XXX.app

如果软件来源可靠,执行后通常就可以正常打开。

但如果软件来源不明,不建议随便绕过系统安全检查。安全第一,尽量从官网或可信渠道下载软件。

相关推荐
穗余5 小时前
Mac 使用 Caps Lock 键切换输入法失灵问题解决
macos
寻道模式7 小时前
【时间之外】AI不懂Mac吗?
人工智能·macos
Qimooidea9 小时前
MacOS 平台 CAD 图纸翻译实战:从技术挑战到高效落地
macos·策略模式
一勺菠萝丶9 小时前
macOS 应用强制退出后无法再次启动:根因分析、排查方法与无重启恢复方
macos
秋雨梧桐叶落莳21 小时前
iOS——NSUserDefaults学习
学习·macos·ios·objective-c·cocoa
8125035331 天前
第 5 篇:MAC 地址——IP 管远方,MAC 管眼前
macos
元Y亨H1 天前
Mac 办公效率进阶笔记
macos
元Y亨H1 天前
Mac 高级程序员配置笔记 (Java & Python 篇)
macos
元Y亨H1 天前
Mac 从入门到精通:效率进阶笔记
macos