我可以在外部硬盘上安装 Xcode 和 iPhone Simulator.app 吗?
Can I install Xcode on an external hard drive along with the iPhone Simulator.app?
我想安装 xcode 以部署跨平台 flutter 应用程序,但我找不到足够的 space Xcode 有没有其他解决方案可以将它安装在内部存储上
请先阅读此内容!
目前,此答案仅对运行s:
的系统有效
XCode <= v.11.3 运行ning macOS <= v.10.15.2
为什么?(简短版):
随着 XCode 11.3.x,Apple 在 /usr/lib/libxcselect.dylib
中激活了一些(直到现在)休眠检查,可以检查开发者工具是否位于只读 /由 SIP 保护的不可变系统分区,当您进行 xcode-select -s
目录切换 尝试时被触发。
11.x“Big Sur”macOS 版本,由于 like this 的原因,将其锁定得更加严格。
移动系统相关文件,甚至从外部驱动器启动都无法正常工作,因为新的“加密密封”,the new SSV(签名系统卷)的一部分拒绝启动或 运行 select如果哈希被更改(文件输入/输出等),则程序。
我还没有找到绕过这些检查的方法。
我对使用此方法后损坏的系统不承担任何责任,如果您选择修补更新版本的 XCode / macOS,请先进行完整备份!祝你好运!
正在安装 Xcode、模拟器和其他工具到外部存储
如评论中所述,如果您已经安装了 Xcode,则该过程非常简单。
首先将 Xcode 从内部 HD 复制到外部驱动器,重命名原始驱动器和 运行 第 4 步和第 5 步中的命令,这应该可以解决问题。如果是这样,请删除原始(现已重命名)目录/应用程序包。
我的经验是,如果你还没有 Xcode,这个过程会比较复杂。
可能有更简单的方法来做到这一点,但在我尝试过的每件事都遇到不同的错误之后,我在 MacBook Pro 16" 运行ning 上以这种方式完成了
macOS Catalina (10.15.2) 和 Xcode 11.3:
我一直将外置驱动器连接到 MacBook,使用一点魔术贴,因为我使用的三星 T5 驱动器又小又轻。
它安装在:
/Volumes/SSD
在外部驱动器上,我已将 Xcode 复制到:
/Volumes/SSD/Applications
按照以下步骤安装 Xcode:
从 Apple's Developer Site 下载最新的 11.3 Xcode 版本(不是 Beta)(这是一个 7.3GB 的下载,您需要通过方式)
安装Xcode命令行工具(到内部驱动器),可以通过运行在终端中输入以下命令来触发:
sudo xcode-select --install
这将触发命令行工具的安装并建立 /Library/Developer/CommandLineTools
安装后将其设置为默认的开发者工具路径。
现在,Xcode 下载为 .xip 文件,需要使用
macOS 附带的存档实用程序。
我已经在SSD上创建了一个目录:
/Volumes/SSD/Applications
并将 Xcode_11_3.xip 文件移至此处,然后通过在 Finder 中双击将其解压缩。
注意:
它将解压到与 .xip 文件相同的文件夹,进入 Xcode.app,但也会将 7.3GB 的 .xip 文件保留在那里。
解压后,您可以将.xip文件移到某处备份或直接删除。
现在使用以下命令更改默认的开发人员工具目录:
sudo xcode-select -s /Volumes/SSD/Applications/Xcode.app/Contents/Developer
然后执行另一个 zsh -l
或重新启动 Terminal.app。
将Xcode.app设置为默认的开发者工具目录后,运行这个命令,让Xcode自己明白:
/usr/bin/xcrun --find xcodebuild
这花了一点时间,然后我回来了:
/Volumes/SSD/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild
移动模拟器/模拟器
模拟器、缓存和所有这些也占用了大量 space 但存在于其他地方。
对于 Xcode,模拟器通常位于:
~/Library/Developer/CoreSimulator
如果您希望最大限度地利用本地驱动器上的可用空间 space,则需要将整个目录结构移动到外部驱动器。
您可以通过 Finder.app 使用常规移动操作,首先执行常规 ⌘ + C (cmd+c) 复制 ~/Library/Developer/CoreSimulator
然后在目标位置,您可以使用 ⌥ + ⌘ + V
(opt+cmd+v) 直接移动复制的内容(可能需要管理员密码)。
我用/Volumes/SSD/Library/Developer/
不得不提到这一点,因为许多人不知道如何在 Finder 中正确地“剪切和粘贴”文件,最终先复制然后返回删除...:)
现在创建符号链接使用:
ln -s /Volumes/SSD/Library/Developer/CoreSimulator /Users/<your_user>/Library/Developer
您现在应该可以像往常一样使用和更新模拟器了。
第一次 运行 可能会抛出错误,但随后的 运行 应该没问题。有时重启也可能是一件好事...
Android 模拟器默认位于下面的某处
~/.android/
使用与 Xcode 模拟器相同的步骤将整个 ~/.android
目录移动到您的外部驱动器上的某个位置并按照所述进行符号链接,因此您最终会得到如下内容:
.android -> /Volumes/SSD/Library/android
当您在终端中执行 $ ls -la ~
时。
Homebrew 用户注意事项
如果您使用 Homebrew 来安装软件包(就像许多人一样),那么如果您移动
/Library/Developer/CommandLineTools
目录,并将尝试从源代码编译一些瓶子。
Homebrew 显然需要在与 sudo xcode-select --install
一起安装的单独命令行工具包中找到的一些工具,这些工具在常规 Xcode 安装中缺失(我在升级到 Python 的新版本时注意到了这一点,它是无论我尝试了什么,仍然是从源代码编译的。)
因此,如果您使用 Homebrew,您最好 将命令行工具安装在默认位置。
只需按照 sudo xcode-select --install
命令的说明进行安装,然后将其留在那里,反正不会占用太多空间 space。
重要,记得接受xcodebuild许可 在使用依赖于它,使用这样的命令(使用您自己的路径):
sudo /Volumes/SSD/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -license accept
或者在已经检测到开发者工具并在外部驱动器上找到的情况下,路径已由 XCode 设置:
sudo xcodebuild -license accept
应该可以解决问题。
正如我所说,可能有更简单的解决方案,但是
以这种方式完成后,我已经能够毫无错误地使用 Homebrew 和 Xcode + MacOS、iOS 和 Flutter 框架的工具。
此外,我在 /Applications
中为 Xcode.app 创建了一个别名,以便将它与其他应用程序放在一起。 (Cmd + Opt 将 Xcode.app 拖到 Finder 中的 /Applications)。
通过这种方式在内部驱动器上为自己节省了大量 space。
回复评论中的问题:
Can I upgrade Xcode / Simulators after using this method?
只要您在按住 ⌥ + ⌘
的同时拖动应用程序,从外部驱动器的 Xcode.app 到 /Applications/Xcode.app
创建一个好的旧“别名”,我就没有遇到任何问题更新,但是 我通过从 Apple Developer Site 下载升级,而不是通过 macOS AppStore,因为我注意到 AppStore 不接受别名并认为 Xcode 未安装。
有关 Xcode 版本 > 11.3
的更新
正如我在答案顶部提到的,如果您使用的 Xcode 版本高于 11.3,我无法保证这个答案。
我已经在新机器上使用全新安装完成了所有步骤。
我在尝试解决这个问题时遇到了一些阻碍,而且我只有有限的时间来做这件事。
问题比预期的要复杂一些。
待办事项:
✅ 今天(9月8日星期二)到货
✅ 安装 macOS,Xcode,Android SDK 和 Flutter SDK 开发文件
✅ 将 Flutter SDK、Android SDK 和 Android 模拟器移动到外部 SSD
✅ 将 iOS 模拟器文件移动到外部 SSD
[] 失败:将 Xcode 和平台文件移动到外部 SSD
✅ 适配 Zsh 环境变量/脚本以反映变化
似乎那些启用了 SIP 的用户(可能是大多数用户)在从 Xcode 应用程序包中访问工具时会遇到麻烦,如果它被移动到内部驱动器之外。
您可能会想,“嘿,我在 /usr/bin
或其他地方有我的工具,但问题是这些文件仅仅是 shim 二进制文件 ,这使用系统库解析 Developer 目录的路径,其中安装了所有实际的可执行文件、库和支持文件。
这使事情变得更加复杂,因为您现在甚至不再知道实际使用了哪些文件。试试看:
$ otool -L /usr/bin/xcrun
# or
$ otool -L /usr/bin/xcode-select
然后看看倾泻而出的东西...大多数工具也是如此。
如果您反汇编 /usr/lib/libxcselect.dylib
(允许吗?)当 运行ning Xcode 版本 11.3 之后显然会执行一些额外的检查。
我回去检查了配置,这些测试可用于几个版本,但它们在以前的消费者版本中没有被激活。
因此,当 目录切换 尝试按照我原来的回答中的描述进行时,libxcselect
工具现在将执行至少一次(不)健全性检查以确保Xcode 及其工具 运行 来自内部(安全)存储,它具有由 SIP 保护的不可变系统配置。
System Integrity Protection,因此,您不能只是移动或删除它。
我的猜测是您必须禁用 SIP 才能使这项工作正常进行,这不是一个可接受的解决方案,因为它会带来很多安全性和稳定性问题(甚至更差的性能)。
寻找中间立场
问题:如何通过将开发人员文件移动到外部驱动器来释放内部驱动器上的 space。
关于移动 Xcode 部分,我已经尝试了几乎所有我能想到的方法,但无论如何我都遇到了新的障碍和障碍。
SO. 我不得不认输,寻求妥协。
我可以忍受在我的 MacBook Pro 的内部 256GB NVMe 驱动器上节省了大约 50GB 的 space。
我移动没有问题:
~/Library/Android/*
(整个Android SDK目录)
~/.android/*
(缓存和 .avd 模拟器图像文件)
仅使用符号链接,复制内容并删除原件。
这只对那些使用 Android SDK 和工具进行开发的人感兴趣,所以很遗憾,我无法解决由于 Apple 关于“外国、敌对”位置的可执行文件的限制性新政策而导致的疯狂问题。
仅这两个目录就为我节省了相当一部分 space,所以我想暂时就是这样。
我曾尝试将 Xcode 捆绑包的某些部分移出应用程序捆绑包并取得了不同程度的成功,但正如您在此屏幕截图中所见:
Xcode.app 的大部分都在“Platforms”目录中,当我开始弄乱这些文件时,构建工具对我造成了破坏,但有时却没有,所以我真的不知道.
模拟器文件本身可以移动,根据您使用的平台(iOS / iPadOS 等)版本的数量,这将为您节省几 GB 到大量 GB 之间的任何内容。
这些位于内部:
~/Library/Developer/CoreSimulator
如原始答案中所述,我已经能够使用符号链接轻松移动整个 CoreSimulator 目录。
我会继续努力解决这个问题,但现在,这就是问题所在。
@cseder 你真是个救星!
顺便说一句,如果您在 Mac Catalina 中遇到问题或需要很长时间才能在执行步骤 5 /usr/bin/xcrun --find xcodebuild
时进行验证,只需:
- 关闭计算机
- 开机,快速进入安全模式(按多次CMD+R)
- 登录到您的帐户并在安全模式开启后打开终端
- 运行 此命令
csrutil disable
<- 将禁用从互联网下载软件的验证
- 运行
sudo reboot
然后你可以直接打开Xcode而不做任何/usr/bin/xcrun --find xcodebuild
请注意,在您能够 运行 Xcode 之后,请确保再次关闭并在安全模式下启用 csrutil enable
。
除了将 XCode 移动到外部驱动器之外,您还可以克隆 mac 光盘并将整个操作系统移动到外部驱动器上并使其可启动。
你需要的东西:
- 大容量、快速的外部 SSD,例如 Samsung X5 Thunderbolt 3 驱动器。
- 一个Mac磁盘克隆器(例如Carbon Copy Cloner beta for Big Sur, or SuperDuper!)
安装克隆软件,按照说明操作,您将在不到一个小时内获得可启动的外部驱动器(取决于您克隆的内容)
您现在有一个便携式开发磁盘,可以插入并从同一个 mac 启动。从其他 mac 启动可能无法像 cseder 在评论中建议的那样工作。
首次启动和使用 XCode 时,Apple OS 将对应用程序执行一些验证,但完成后应该没问题。
我有一个 2018 mac-mini 运行 Big Sur,只有 128GB 内置 SSD。每次我需要升级 XCode 时,我都必须删除所有模拟器。升级到 Big Sur 更难 :-/
性能?
外部驱动器 (Samsung T5) 的写入速度比 Apple 在 mac-mini 上使用的廉价内置 SSD 快 3 倍。根据 BlackMagic,读取速度大致相同。总体而言,在外部驱动器上构建 Flutter 应用程序的速度提高了大约 10%。
我找到了一个更简单的解决方案。在您的 Mac 上创建一个新用户。授予管理员权限(可选),将刚刚创建的用户帐户的主目录设置为外部硬盘驱动器。然后登录到新用户并在 ~/Applications 目录而不是 /Applications 中安装 Xcode。然后 Xcode 安装在您的外部 ssd 上。到目前为止,我使用它没有问题!希望对你有帮助。
编辑:我忘了说我应该从开发者网站下载 Xcode。还没有尝试从 App Store 下载。
以下是对我有用的方法,不仅适用于 XCode,而且适用于所有应用程序。
- 将MacOS安装到外部媒体(SSD会更好)。
- 您需要启用从外部驱动器启动。您可以在重启后看到苹果符号后立即按 Command 和 R 来执行此操作
- 在外部媒体上安装 MacOS 后,安装所需的任何应用程序。 WhatsApp、XCode、IntelliJ、Adobe Photoshop 等
- 完成后,更改启动设置,从 MacMini 或 Macbook pro 驱动器启动。
- 创建指向您在外部驱动器上安装的应用程序的符号链接
示例:
cd /应用程序
ln -s "/Volumes/Extreme SSD/Applications/XCode.app" XCode.app
我已经在我的 Mac 上的所有应用程序上尝试过这个,它非常有效。
优点:
- 减少头痛。将 XCode 目录复制到外部 SSD 可能不起作用。我已经这样做了,奇怪的是,有一个目录循环,我最终丢失了所有外部 SSD space。
- The application is installed in the way it should
缺点:
- 安装 Mac
你必须损失 12GB
到目前为止,这对我来说非常有用。
我刚刚将 Xcode 12.3 安装到 /Applications,然后将 .app 复制到我的外部驱动器,然后删除了原来的。
之后:
ln -s /Volumes/ExternalSSD/Applications/Xcode.app /Applications/Xcode.app
第一次启动用了一段时间,现在好了。
MacOS 11.1, M1 2020 Air.
(无需克隆 OS 或启动外部驱动器,就像其他帖子所建议的那样)。
花了很长时间回答@cesder,这绝对很棒。我确实发现了移动模拟器的问题。 Xcode > 11.3 如果我使用 simlink 将找不到它们,但使用别名效果很好。
要创建别名:
右键单击外部驱动器上的 CoreSimulator
文件夹,然后 select Make alias
,然后将其复制到 ~/Library/Developer/
编辑:通过将外部驱动器格式化为 'Mac OS extended (journaled)',我已经能够成功地 运行 Xcode。它是 ExFAT,Xcode 出于某种原因不喜欢它。
我还没有测试过将模拟器移动到外部驱动器,但是移动所有 Xcode 对我来说已经足够了。
要将 Xcode 移动到您的外部驱动器,只需按照 Xcode <= 11.3 的@cesder 说明进行操作,它应该可以工作。我已经在 12.2 (12B45b) 上测试过了。
我找到了一种非常简单的方法来在外部驱动器中安装 Xcode,但模拟器文件仍会下载到 Mac 安装中。
从以下位置获取独立的 Xcode 应用程序:
Apple Developer Xcode Downloads
(使用 Apple 开发者帐户登录)
登录后,输入您想要的版本,然后下载Xcode_x_x_x.xip文件。请记住,Xcode 11.4.1 是 8 GB,因此这将需要一段时间,具体取决于您的互联网连接。
下载文件后,单击 .xip 将其解压缩。您的 Mac 会将其解压缩到您下载它的同一文件夹中。这个提取过程是自动的。单击 .xip 文件后,您无需再执行任何操作。此步骤需要几分钟时间。
[可选] 提取后,如果您使用多个版本,请将应用程序重命名为“Xcode11.x.x”。
将该文件拖到您的外部驱动器。
也许您在使用 Transporter 将您的应用程序提交到 Mac App Store 时会发现未找到错误。在这种情况下,转到首选项 > 位置 > 命令行工具,然后 select 你的版本。
这就是我现在使用 Unity 开发 Mac 应用程序的方式。稍后我将尝试对 iOS 执行相同的操作。如果我发现其他问题和解决方法,我会在这里更新(如果我不能,我会在这里寻求帮助)。
Caution : Only tried for cordova projects. Thanks @cseder
来自 macOS Big Sur(11.0.1)、Xcode 12.3、MacBook Air (2017)、WD 外置硬盘(非 SSD)的报告:
- 从 apple developer website
下载 .xip 文件
- 将 .xip 文件移动到外部硬盘驱动器(我也将此硬盘驱动器用作时间机器。我不确定这种情况是否是一个因素)
- 确保您的 本地 硬盘驱动器至少有 25 GB 可用空间 space。因为在安装过程中本地硬盘填充,安装完成后,free space return.
- 双击 .xip 文件。
- 耐心点。久等了:) (我没用过SSD:)
- 瞧!
注:
- 您的 Xcode 应用不会显示在启动面板中。
- 我没有使用全功能。仅用于编译一个cordova项目。
系统 MacBook Pro,带外部 SSD。,MacOS BigSur 版本 11.2.1
我在本地磁盘上安装 Xcode 版本 12.4。
安装后我复制了Xcode.app到外盘,并删除了本地盘的版本。
没有做进一步的改变。
从外部磁盘启动 Xcode。没有问题。
小心:第一次开始需要 5 分钟测试
我想安装 xcode 以部署跨平台 flutter 应用程序,但我找不到足够的 space Xcode 有没有其他解决方案可以将它安装在内部存储上
请先阅读此内容!
目前,此答案仅对运行s:
的系统有效XCode <= v.11.3 运行ning macOS <= v.10.15.2
为什么?(简短版):
随着 XCode 11.3.x,Apple 在 /usr/lib/libxcselect.dylib
中激活了一些(直到现在)休眠检查,可以检查开发者工具是否位于只读 /由 SIP 保护的不可变系统分区,当您进行 xcode-select -s
目录切换 尝试时被触发。
11.x“Big Sur”macOS 版本,由于 like this 的原因,将其锁定得更加严格。 移动系统相关文件,甚至从外部驱动器启动都无法正常工作,因为新的“加密密封”,the new SSV(签名系统卷)的一部分拒绝启动或 运行 select如果哈希被更改(文件输入/输出等),则程序。
我还没有找到绕过这些检查的方法。 我对使用此方法后损坏的系统不承担任何责任,如果您选择修补更新版本的 XCode / macOS,请先进行完整备份!祝你好运!
正在安装 Xcode、模拟器和其他工具到外部存储
如评论中所述,如果您已经安装了 Xcode,则该过程非常简单。 首先将 Xcode 从内部 HD 复制到外部驱动器,重命名原始驱动器和 运行 第 4 步和第 5 步中的命令,这应该可以解决问题。如果是这样,请删除原始(现已重命名)目录/应用程序包。
我的经验是,如果你还没有 Xcode,这个过程会比较复杂。
可能有更简单的方法来做到这一点,但在我尝试过的每件事都遇到不同的错误之后,我在 MacBook Pro 16" 运行ning 上以这种方式完成了 macOS Catalina (10.15.2) 和 Xcode 11.3:
我一直将外置驱动器连接到 MacBook,使用一点魔术贴,因为我使用的三星 T5 驱动器又小又轻。
它安装在:
/Volumes/SSD
在外部驱动器上,我已将 Xcode 复制到:
/Volumes/SSD/Applications
按照以下步骤安装 Xcode:
从 Apple's Developer Site 下载最新的 11.3 Xcode 版本(不是 Beta)(这是一个 7.3GB 的下载,您需要通过方式)
安装Xcode命令行工具(到内部驱动器),可以通过运行在终端中输入以下命令来触发:
sudo xcode-select --install
这将触发命令行工具的安装并建立/Library/Developer/CommandLineTools
安装后将其设置为默认的开发者工具路径。现在,Xcode 下载为 .xip 文件,需要使用 macOS 附带的存档实用程序。
我已经在SSD上创建了一个目录:
/Volumes/SSD/Applications
并将 Xcode_11_3.xip 文件移至此处,然后通过在 Finder 中双击将其解压缩。
注意: 它将解压到与 .xip 文件相同的文件夹,进入 Xcode.app,但也会将 7.3GB 的 .xip 文件保留在那里。 解压后,您可以将.xip文件移到某处备份或直接删除。现在使用以下命令更改默认的开发人员工具目录:
sudo xcode-select -s /Volumes/SSD/Applications/Xcode.app/Contents/Developer
然后执行另一个zsh -l
或重新启动 Terminal.app。将Xcode.app设置为默认的开发者工具目录后,运行这个命令,让Xcode自己明白:
/usr/bin/xcrun --find xcodebuild
这花了一点时间,然后我回来了:
/Volumes/SSD/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild
移动模拟器/模拟器
模拟器、缓存和所有这些也占用了大量 space 但存在于其他地方。
对于 Xcode,模拟器通常位于:
~/Library/Developer/CoreSimulator
如果您希望最大限度地利用本地驱动器上的可用空间 space,则需要将整个目录结构移动到外部驱动器。
您可以通过 Finder.app 使用常规移动操作,首先执行常规 ⌘ + C (cmd+c) 复制 ~/Library/Developer/CoreSimulator
然后在目标位置,您可以使用 ⌥ + ⌘ + V
(opt+cmd+v) 直接移动复制的内容(可能需要管理员密码)。
我用/Volumes/SSD/Library/Developer/
不得不提到这一点,因为许多人不知道如何在 Finder 中正确地“剪切和粘贴”文件,最终先复制然后返回删除...:)
现在创建符号链接使用:
ln -s /Volumes/SSD/Library/Developer/CoreSimulator /Users/<your_user>/Library/Developer
您现在应该可以像往常一样使用和更新模拟器了。
第一次 运行 可能会抛出错误,但随后的 运行 应该没问题。有时重启也可能是一件好事...
Android 模拟器默认位于下面的某处
~/.android/
使用与 Xcode 模拟器相同的步骤将整个 ~/.android
目录移动到您的外部驱动器上的某个位置并按照所述进行符号链接,因此您最终会得到如下内容:
.android -> /Volumes/SSD/Library/android
当您在终端中执行 $ ls -la ~
时。
Homebrew 用户注意事项
如果您使用 Homebrew 来安装软件包(就像许多人一样),那么如果您移动
/Library/Developer/CommandLineTools
目录,并将尝试从源代码编译一些瓶子。
Homebrew 显然需要在与 sudo xcode-select --install
一起安装的单独命令行工具包中找到的一些工具,这些工具在常规 Xcode 安装中缺失(我在升级到 Python 的新版本时注意到了这一点,它是无论我尝试了什么,仍然是从源代码编译的。)
因此,如果您使用 Homebrew,您最好 将命令行工具安装在默认位置。
只需按照 sudo xcode-select --install
命令的说明进行安装,然后将其留在那里,反正不会占用太多空间 space。
重要,记得接受xcodebuild许可 在使用依赖于它,使用这样的命令(使用您自己的路径):
sudo /Volumes/SSD/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -license accept
或者在已经检测到开发者工具并在外部驱动器上找到的情况下,路径已由 XCode 设置:
sudo xcodebuild -license accept
应该可以解决问题。
正如我所说,可能有更简单的解决方案,但是
以这种方式完成后,我已经能够毫无错误地使用 Homebrew 和 Xcode + MacOS、iOS 和 Flutter 框架的工具。
此外,我在 /Applications
中为 Xcode.app 创建了一个别名,以便将它与其他应用程序放在一起。 (Cmd + Opt 将 Xcode.app 拖到 Finder 中的 /Applications)。
通过这种方式在内部驱动器上为自己节省了大量 space。
回复评论中的问题:
Can I upgrade Xcode / Simulators after using this method?
只要您在按住 ⌥ + ⌘
的同时拖动应用程序,从外部驱动器的 Xcode.app 到 /Applications/Xcode.app
创建一个好的旧“别名”,我就没有遇到任何问题更新,但是 我通过从 Apple Developer Site 下载升级,而不是通过 macOS AppStore,因为我注意到 AppStore 不接受别名并认为 Xcode 未安装。
有关 Xcode 版本 > 11.3
的更新正如我在答案顶部提到的,如果您使用的 Xcode 版本高于 11.3,我无法保证这个答案。
我已经在新机器上使用全新安装完成了所有步骤。
我在尝试解决这个问题时遇到了一些阻碍,而且我只有有限的时间来做这件事。
问题比预期的要复杂一些。
待办事项:
✅ 今天(9月8日星期二)到货
✅ 安装 macOS,Xcode,Android SDK 和 Flutter SDK 开发文件
✅ 将 Flutter SDK、Android SDK 和 Android 模拟器移动到外部 SSD
✅ 将 iOS 模拟器文件移动到外部 SSD
[] 失败:将 Xcode 和平台文件移动到外部 SSD
✅ 适配 Zsh 环境变量/脚本以反映变化
似乎那些启用了 SIP 的用户(可能是大多数用户)在从 Xcode 应用程序包中访问工具时会遇到麻烦,如果它被移动到内部驱动器之外。
您可能会想,“嘿,我在 /usr/bin
或其他地方有我的工具,但问题是这些文件仅仅是 shim 二进制文件 ,这使用系统库解析 Developer 目录的路径,其中安装了所有实际的可执行文件、库和支持文件。
这使事情变得更加复杂,因为您现在甚至不再知道实际使用了哪些文件。试试看:
$ otool -L /usr/bin/xcrun
# or
$ otool -L /usr/bin/xcode-select
然后看看倾泻而出的东西...大多数工具也是如此。
如果您反汇编 /usr/lib/libxcselect.dylib
(允许吗?)当 运行ning Xcode 版本 11.3 之后显然会执行一些额外的检查。
我回去检查了配置,这些测试可用于几个版本,但它们在以前的消费者版本中没有被激活。
因此,当 目录切换 尝试按照我原来的回答中的描述进行时,libxcselect
工具现在将执行至少一次(不)健全性检查以确保Xcode 及其工具 运行 来自内部(安全)存储,它具有由 SIP 保护的不可变系统配置。
System Integrity Protection,因此,您不能只是移动或删除它。
我的猜测是您必须禁用 SIP 才能使这项工作正常进行,这不是一个可接受的解决方案,因为它会带来很多安全性和稳定性问题(甚至更差的性能)。
寻找中间立场
问题:如何通过将开发人员文件移动到外部驱动器来释放内部驱动器上的 space。
关于移动 Xcode 部分,我已经尝试了几乎所有我能想到的方法,但无论如何我都遇到了新的障碍和障碍。
SO. 我不得不认输,寻求妥协。
我可以忍受在我的 MacBook Pro 的内部 256GB NVMe 驱动器上节省了大约 50GB 的 space。
我移动没有问题:
~/Library/Android/*
(整个Android SDK目录)
~/.android/*
(缓存和 .avd 模拟器图像文件)
仅使用符号链接,复制内容并删除原件。
这只对那些使用 Android SDK 和工具进行开发的人感兴趣,所以很遗憾,我无法解决由于 Apple 关于“外国、敌对”位置的可执行文件的限制性新政策而导致的疯狂问题。
仅这两个目录就为我节省了相当一部分 space,所以我想暂时就是这样。
我曾尝试将 Xcode 捆绑包的某些部分移出应用程序捆绑包并取得了不同程度的成功,但正如您在此屏幕截图中所见:
Xcode.app 的大部分都在“Platforms”目录中,当我开始弄乱这些文件时,构建工具对我造成了破坏,但有时却没有,所以我真的不知道.
模拟器文件本身可以移动,根据您使用的平台(iOS / iPadOS 等)版本的数量,这将为您节省几 GB 到大量 GB 之间的任何内容。
这些位于内部:
~/Library/Developer/CoreSimulator
如原始答案中所述,我已经能够使用符号链接轻松移动整个 CoreSimulator 目录。
我会继续努力解决这个问题,但现在,这就是问题所在。
@cseder 你真是个救星!
顺便说一句,如果您在 Mac Catalina 中遇到问题或需要很长时间才能在执行步骤 5 /usr/bin/xcrun --find xcodebuild
时进行验证,只需:
- 关闭计算机
- 开机,快速进入安全模式(按多次CMD+R)
- 登录到您的帐户并在安全模式开启后打开终端
- 运行 此命令
csrutil disable
<- 将禁用从互联网下载软件的验证 - 运行
sudo reboot
然后你可以直接打开Xcode而不做任何/usr/bin/xcrun --find xcodebuild
请注意,在您能够 运行 Xcode 之后,请确保再次关闭并在安全模式下启用 csrutil enable
。
除了将 XCode 移动到外部驱动器之外,您还可以克隆 mac 光盘并将整个操作系统移动到外部驱动器上并使其可启动。
你需要的东西:
- 大容量、快速的外部 SSD,例如 Samsung X5 Thunderbolt 3 驱动器。
- 一个Mac磁盘克隆器(例如Carbon Copy Cloner beta for Big Sur, or SuperDuper!)
安装克隆软件,按照说明操作,您将在不到一个小时内获得可启动的外部驱动器(取决于您克隆的内容)
您现在有一个便携式开发磁盘,可以插入并从同一个 mac 启动。从其他 mac 启动可能无法像 cseder 在评论中建议的那样工作。
首次启动和使用 XCode 时,Apple OS 将对应用程序执行一些验证,但完成后应该没问题。
我有一个 2018 mac-mini 运行 Big Sur,只有 128GB 内置 SSD。每次我需要升级 XCode 时,我都必须删除所有模拟器。升级到 Big Sur 更难 :-/
性能?
外部驱动器 (Samsung T5) 的写入速度比 Apple 在 mac-mini 上使用的廉价内置 SSD 快 3 倍。根据 BlackMagic,读取速度大致相同。总体而言,在外部驱动器上构建 Flutter 应用程序的速度提高了大约 10%。
我找到了一个更简单的解决方案。在您的 Mac 上创建一个新用户。授予管理员权限(可选),将刚刚创建的用户帐户的主目录设置为外部硬盘驱动器。然后登录到新用户并在 ~/Applications 目录而不是 /Applications 中安装 Xcode。然后 Xcode 安装在您的外部 ssd 上。到目前为止,我使用它没有问题!希望对你有帮助。
编辑:我忘了说我应该从开发者网站下载 Xcode。还没有尝试从 App Store 下载。
以下是对我有用的方法,不仅适用于 XCode,而且适用于所有应用程序。
- 将MacOS安装到外部媒体(SSD会更好)。
- 您需要启用从外部驱动器启动。您可以在重启后看到苹果符号后立即按 Command 和 R 来执行此操作
- 在外部媒体上安装 MacOS 后,安装所需的任何应用程序。 WhatsApp、XCode、IntelliJ、Adobe Photoshop 等
- 完成后,更改启动设置,从 MacMini 或 Macbook pro 驱动器启动。
- 创建指向您在外部驱动器上安装的应用程序的符号链接
示例:
cd /应用程序 ln -s "/Volumes/Extreme SSD/Applications/XCode.app" XCode.app
我已经在我的 Mac 上的所有应用程序上尝试过这个,它非常有效。
优点: - 减少头痛。将 XCode 目录复制到外部 SSD 可能不起作用。我已经这样做了,奇怪的是,有一个目录循环,我最终丢失了所有外部 SSD space。
- The application is installed in the way it should
缺点: - 安装 Mac
你必须损失 12GB到目前为止,这对我来说非常有用。
我刚刚将 Xcode 12.3 安装到 /Applications,然后将 .app 复制到我的外部驱动器,然后删除了原来的。 之后:
ln -s /Volumes/ExternalSSD/Applications/Xcode.app /Applications/Xcode.app
第一次启动用了一段时间,现在好了。 MacOS 11.1, M1 2020 Air.
(无需克隆 OS 或启动外部驱动器,就像其他帖子所建议的那样)。
花了很长时间回答@cesder,这绝对很棒。我确实发现了移动模拟器的问题。 Xcode > 11.3 如果我使用 simlink 将找不到它们,但使用别名效果很好。
要创建别名:
右键单击外部驱动器上的 CoreSimulator
文件夹,然后 select Make alias
,然后将其复制到 ~/Library/Developer/
编辑:通过将外部驱动器格式化为 'Mac OS extended (journaled)',我已经能够成功地 运行 Xcode。它是 ExFAT,Xcode 出于某种原因不喜欢它。
我还没有测试过将模拟器移动到外部驱动器,但是移动所有 Xcode 对我来说已经足够了。 要将 Xcode 移动到您的外部驱动器,只需按照 Xcode <= 11.3 的@cesder 说明进行操作,它应该可以工作。我已经在 12.2 (12B45b) 上测试过了。
我找到了一种非常简单的方法来在外部驱动器中安装 Xcode,但模拟器文件仍会下载到 Mac 安装中。
从以下位置获取独立的 Xcode 应用程序: Apple Developer Xcode Downloads (使用 Apple 开发者帐户登录)
登录后,输入您想要的版本,然后下载Xcode_x_x_x.xip文件。请记住,Xcode 11.4.1 是 8 GB,因此这将需要一段时间,具体取决于您的互联网连接。
下载文件后,单击 .xip 将其解压缩。您的 Mac 会将其解压缩到您下载它的同一文件夹中。这个提取过程是自动的。单击 .xip 文件后,您无需再执行任何操作。此步骤需要几分钟时间。
[可选] 提取后,如果您使用多个版本,请将应用程序重命名为“Xcode11.x.x”。
将该文件拖到您的外部驱动器。
也许您在使用 Transporter 将您的应用程序提交到 Mac App Store 时会发现未找到错误。在这种情况下,转到首选项 > 位置 > 命令行工具,然后 select 你的版本。
这就是我现在使用 Unity 开发 Mac 应用程序的方式。稍后我将尝试对 iOS 执行相同的操作。如果我发现其他问题和解决方法,我会在这里更新(如果我不能,我会在这里寻求帮助)。
Caution : Only tried for cordova projects. Thanks @cseder
来自 macOS Big Sur(11.0.1)、Xcode 12.3、MacBook Air (2017)、WD 外置硬盘(非 SSD)的报告:
- 从 apple developer website 下载 .xip 文件
- 将 .xip 文件移动到外部硬盘驱动器(我也将此硬盘驱动器用作时间机器。我不确定这种情况是否是一个因素)
- 确保您的 本地 硬盘驱动器至少有 25 GB 可用空间 space。因为在安装过程中本地硬盘填充,安装完成后,free space return.
- 双击 .xip 文件。
- 耐心点。久等了:) (我没用过SSD:)
- 瞧!
注:
- 您的 Xcode 应用不会显示在启动面板中。
- 我没有使用全功能。仅用于编译一个cordova项目。
系统 MacBook Pro,带外部 SSD。,MacOS BigSur 版本 11.2.1 我在本地磁盘上安装 Xcode 版本 12.4。 安装后我复制了Xcode.app到外盘,并删除了本地盘的版本。 没有做进一步的改变。 从外部磁盘启动 Xcode。没有问题。 小心:第一次开始需要 5 分钟测试