如何在 macOS 中通过清除 Containers 文件夹节省磁盘空间

微信扫一扫,分享到朋友圈

如何在 macOS 中通过清除 Containers 文件夹节省磁盘空间

苹果在 macOS 中添加的沙盒功能为操作系统增加了预定义的应用程序文件夹。以下是如何删除其中一些你可能并不需要的文件夹,并找回一些硬盘空间的方法。

十多年前,苹果在 macOS 中引入了沙盒技术。沙盒本质上是一种安全措施,它限制了应用程序可以访问 macOS 文件系统的哪些部分。

当开发人员使用苹果的 Xcode for macOS 构建应用程序时,他们可以通过更改 Xcode 中的设置为每个应用程序设置沙盒权限。

根据在 Xcode 项目的目标构建设置中设置的权限级别,使用 Xcode 构建的应用程序可以访问整个文件系统、只能访问某些定义的文件和文件夹、网络,或者什么都不能访问。

Xcode 中的目标

Xcode 目标只是 Xcode 项目中定义的一组值,代表一个要构建的软件。一个 Xcode 项目可以有一个或多个目标。

有些目标是空的,只包含构建其他目标的规则。您可以从 Xcode 菜单栏的 "文件" 菜单中选择 "新建",然后选择 "目标",将新目标添加到 Xcode 项目中。

如果您点击 Xcode 中新目标模板表中的 "其他",您将看到两个可能的元目标: 聚合和外部构建系统。选择 "聚合" 会创建一个新目标,用于构建 Xcode 项目中的所有其他现有目标。

沙盒权限

构建 macOS 应用程序时,Xcode 会将这些设置(称为 entitlements)存储在应用程序捆绑包内的文件中,扩展名为".entitlements"。您可以在 Xcode 中打开 .entitlements 文件,以分层列表的形式查看其设置,并可点击其中的字段,也可以在任何文本编辑器中查看 .entitlements 文件,以 XML 文件的形式显示其内容。

.entitlements 文件的内容以键值对的形式存储,键值对代表设置(键)及其每个值。

捆绑包只是一个特殊的文件夹,它设置了标记,以便 macOS 知道它包含运行时要使用的代码、资源或文件。大多数 Mac 应用程序都是捆绑包,许多代码框架也是如此。

你可以在 macOS Finder 中按住 Control 键单击任何捆绑包,然后从弹出菜单中选择 "显示包内容",将其作为文件夹打开。

通过在 Xcode 项目的设置中的 "构建设置" 选项卡下关闭目标的沙盒开关,或直接编辑 Entitlements 文件,您仍然可以在没有任何沙盒的情况下构建 macOS 应用程序。

一些额外的应用程序沙盒信息会在构建时存储在应用程序捆绑包中另一个名为 Info.plist 的文件中。扩展名为".plist" 的文件是一个属性列表文件,也是一个 XML 文件,其中包含应用程序设置或属性及其相应的值。

当您在 Xcode 中构建应用程序时,它会从项目设置中生成 Info.plist 文件,然后将该文件存储在您构建的应用程序捆绑包中。它还会将 .entitlements 文件复制到应用程序的捆绑包中。

当你在 Finder 中启动 macOS 应用程序时,macOS 会读取 Info.plist 和 .entitlements 文件,以确定如何运行应用程序以及应用程序的权限。

沙盒容器

既然你已经知道了 macOS 中沙箱在应用程序层面的工作原理,那么是时候谈谈容器了。

由于沙盒背后的理念是限制应用程序访问 macOS 文件系统的哪些部分,苹果还在 Mac 用户的 /Library 文件夹中创建了一个名为 Containers 的新系统文件夹。当沙箱应用程序运行时,macOS 会在 ~/Library/Containers 文件夹内为该应用程序默默创建一个特定的应用程序文件夹。

用户文件夹在 UNIX 中通常用"~" 指定。

在 ~/Library/ 文件夹中还有一个 "ContainerManager" 文件夹,你不应该去碰它,因为它被 macOS 用来管理 Containers 文件夹。更改 ContainerManager 文件夹可能会在 Mac 上导致未定义的行为或数据丢失。

~/Library/Containers 中的每个文件夹都是专为一个应用程序设计的文件夹。如果一个应用程序在构建时开启了沙盒功能,它就可以在 ~/Library/Containers 目录下的文件夹中存储自己的所有数据。

每个应用程序容器文件夹通常包含一个 .plist 文件和一个 "数据" 文件夹。

Containers bloat

随着应用程序运行时间的推移,容器文件夹会变得相当大。如果你不再使用某个特定的应用程序,你可以安全地删除容器文件夹中的应用程序文件夹。

但一般来说,你不应该删除 Apple 软件的任何容器 app 文件夹,除非它属于你永远不会使用的其他 Apple app。例如,GarageBand、Logic 或 Final Cut Pro。

单击 "容器" 窗口顶部的 "大小" 标题栏标签,可以查看 "容器" 目录中所有应用程序容器文件夹的大小。再次单击 "大小" 标题标签,将按大小从大到小对容器应用程序文件夹进行排序。

一旦确定了哪些应用程序你不再使用,哪些应用程序容器文件夹你不再需要,你就可以将它们从 Mac 中删除,方法是将它们移到回收站,然后从菜单栏中选择 "Finder",再选择 "清空回收站"。

如果你使用大量应用程序或存储大量数据的应用程序,这样做可以释放出相当多的磁盘空间。

请注意,一旦删除了某个应用程序的容器文件夹,该应用程序存储的任何数据都可能从 Mac 中消失。如果你重新安装并重新运行应用程序,你将从头开始。

你可能需要先备份任何你打算删除的应用程序容器文件夹,以便日后在需要时还原它们。

整个 ~/Library/Containers 文件夹在使用一段时间后会增大到几千兆字节,因此定期删除应用容器文件夹可以释放一些磁盘空间。

你需要定期检查容器文件夹,并删除任何你不需要的应用容器文件夹。

上一篇

苹果 M3 系列芯片在人工智能跑分中超过 RTX 4090 显卡?

下一篇

Beeper Mini 和 Beeper Cloud 再次瘫痪:可能苹果阻止安卓用户接收信息

你也可能喜欢

评论已经被关闭。

插入图片

公众号

公众号
关注我们

排行榜

返回顶部