我想安装xcode来部署跨平台的flutter应用程序,但我找不到足够的空间来存放Xcode,是否有其他解决方案可将其安装在内部存储上
如评论中所述,如果您已经安装了Xcode,则过程非常简单。首先将Xcode从内部HD移到外部HD,然后运行步骤4和5中的命令,这应该可以解决问题。
我的经验是,如果您尚未安装Xcode,则过程会有些复杂。
可能有更简单的方法来执行此操作,但是在我尝试过的每件事上都遇到不同的错误之后,我在运行 macOS Catalina(10.15.2) 和 Xcode 11.3 的MacBook Pro 16“上以这种方式进行了操作 :
我始终将外部驱动器连接到MacBook,使用一点Velcro,因为我使用的Samsung T5驱动器又小又轻。它安装在:
/Volumes/SSD
在外部驱动器上,我将Xcode安装到:
/Volumes/SSD/Applications
请按照以下过程安装Xcode:
从苹果开发者网站下载最新的11.3 Xcode版本(不是Beta版)(这是7.3GB下载,您需要注册一个免费的开发者帐户)
安装Xcode命令行工具(到内部驱动器),可以通过在终端中运行以下命令来触发:
sudo xcode-select --install
这将触发命令行工具的安装并建立 /Library/Developer/CommandLineTools
/Library/Developer/CommandLineTools
路径,并将其设置为安装后的默认开发人员工具路径。
现在,Xcode下载是一个.xip文件,需要使用macOS随附的Archive Utility进行扩展/解压缩。 我已经在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。
sudo xcode-select -s /Volumes/SSD/Applications/Xcode.app/Contents/Developer
zsh -l
将Xcode.app设置为默认的开发人员工具目录之后,运行以下命令,使Xcode能够自己弄清楚: /usr/bin/xcrun --find xcodebuild
/usr/bin/xcrun --find xcodebuild
这花了一段时间,然后我回来了: /Volumes/SSD/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild
/Volumes/SSD/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild
模拟器,缓存和所有其他也占用相当多的空间,但仍位于其他地方。 对于Xcode,模拟器通常位于下面~/Library/Developer
~/Library/Developer
如果您想最大化本地驱动器上的可用空间,则需要将整个目录结构移至外部驱动器。您可以通过Finder.app使用常规移动操作,方法是先进行常规⌘+ C(cmd + c)复制,~/Library/Developer然后在目标位置(例如 )进行复制/Volumes/<ext_drive_name>/<some_dir_name>,我/Volumes/SSD/Library/使用⌥ + ⌘ + V(opt + cmd + v)可以移动复制的内容直接显示内容(可能需要管理员密码)。
/Volumes/<ext_drive_name>/<some_dir_name>
/Volumes/SSD/Library/
⌥ + ⌘ + V
只是不得不提到这一点,因为许多人不知道如何在Finder中“剪切和粘贴”文件,最终先进行复制然后再删除… :)
现在使用进行符号链接ln -s /Volumes/SSD/Library/Developer /Users/<your_user>/Library/,您应该能够照常使用和更新模拟器。
ln -s /Volumes/SSD/Library/Developer /Users/<your_user>/Library/
默认情况下,Android模拟器位于下面~/.android/... 的某处。使用与Xcode模拟器相同的过程将整个~/.android目录移动到外部驱动器和符号链接上的位置,如上所述,因此最终得到以下结果:
~/.android/...
~/.android
.android -> /Volumes/SSD/Library/android
当您$ ls -la ~在终端机中进行操作时。
$ ls -la ~
如果您正在使用Homebrew来安装软件包(就像许多其他软件包一样),则如果您移动/Library/Developer/CommandLineTools目录并似乎会尝试从源代码编译某些瓶子,则Homebrew似乎没有注册您已安装CommandLineTools 。 显然Homebrew仍然需要在单独的命令行工具包中找到一些工具sudo xcode-select --install,而常规Xcode安装中缺少这些工具(我在升级到新版本的Python时注意到了这一点,无论我尝试了什么,它仍从源代码进行编译。)
因此,如果您使用Homebrew,最好 将命令行工具安装在默认位置。 只需按照sudo xcode-select --install命令中的说明进行安装,然后将其保留在那里,反正不会占用太多空间。
我不知道,但是在我看来,这是以某种方式硬编码到Homebrew的配置中的。
另外, 请记住 在使用依赖于 xcodebuild 的工具之前,使用像这样的命令(具有自己的路径) 来接受 依赖于它的工具:
sudo /Volumes/SSD/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -license accept
就像我说的那样,那里可能会有更简单的解决方案,但是通过这种方式,我已经能够在没有错误的情况下使用Homebrew并在MacOS,iOS和Flutter框架中使用Xcode +工具。
另外,我还为Xcode.app创建了一个别名,/Applications以方便将其与其他应用程序放在一起。(将Cmd + Opt拖动Xcode.app到Finder中的/ Applications)。这样,为自己节省了内部驱动器上的大量空间。
/Applications
针对评论中的问题:
使用此方法后是否可以升级Xcode /模拟器?
只要从外部驱动器的Xcode.app创建良好的旧“别名”,/Applications/Xcode.app然后按住拖动该应用程序⌥ + ⌘,我就不会有任何更新问题, 但是 我可以通过从Apple Developer Site下载而不是通过macOS AppStore进行升级,因为我注意到AppStore不接受别名,并认为未安装Xcode。
/Applications/Xcode.app
⌥ + ⌘