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

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

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

相关推荐
sudebao点com11 小时前
一次“Google 能打开,FlexTV 打不开”的 DNS 故障排查:从 curl 超时到完整证据链
windows·macos·https·cdn·dns·nslookup·网络排错
EXI-小洲21 小时前
MacOS 微服务网关双雄:Nacos + Higress 安装与 Dubbo 配置实战
macos·微服务·nacos·dubbo
EXI-小洲1 天前
MacOS 上使用 IntelliJ IDEA 指定 Main 函数并打包为 JAR 文件
macos·intellij-idea·jar
Albart5752 天前
Docker Desktop最新版安装踩坑全记录(Windows_Mac_Linux)【2026 4.74.0 终版】
linux·windows·macos·docker·环境搭建·踩坑记录
Web Security Loop3 天前
MAC卸载JDK环境
java·macos·jdk
IS6834 天前
视频文案提取技术全景:ASR vs OCR,哪种方案更适合你?
ide·macos·xcode
安且惜4 天前
Windows或mac支持本地抓包
windows·macos
做萤石二次开发的哈哈5 天前
开发者如何调用 ERTC iOS API 完成 SDK 初始化配置?
macos·objective-c·cocoa
AUV11075 天前
Mac 录屏自动缩放怎么设置才不乱跳:自动片段、固定区域与鼠标跟随调试
macos·计算机外设
程序员良辰5 天前
【Mac快速切换JDK】Mac 使用 Homebrew + jenv 快速切换 JDK 版本
java·开发语言·macos