mattintosh note

どこかのエンジニアモドキの備忘録

macOS で Xcode の要らない SDK を消して空き領域を増やす

Xcode 使ってますか?最近は Command Line Tools なんてものがあるので Xcode.app をわざわざ入れる必要がなくなりましたよね(最近って言うほど最近ではない)。私は人様に配布するものを作っているので Xcode.app のお世話になっています。

この Xcode.app ですが、インストールすると約 5 GB くらいになります。32-bit のコンパイルもするので xcode-selectXcode 9.x 系と Xcode 10.x 系を切り替えて使うんですが、両方合わせると 10 GB を超えます。

Xcode.app には様々なプラットフォームに応じたツールが入っています。以下は 9.2 の場合です。

  • AppleTVOS.platform
  • AppleTVSimulator.platform
  • MacOSX.platform
  • WatchOS.platform
  • WatchSimulator.platform
  • iPhoneOS.platform
  • iPhoneSimulator.platform

この中で私が使うのは MacOSX だけです。なので要らないプラットフォームは毎回削除してます。(xip コマンドに exclude 的なオプションがありそうな気もするがマニュアルには解凍の -x オプションすら載っていない)

まずは MacOSX.platform 以外のプラットフォームディレクトリを探します。

Terminal

find /Applications/Xcode.app -type d -name "*.platform" \! -name "MacOSX.platform"

出てくるのものは下記の通りですが、私は AppleTV も iPhone も AppleWatch も開発しませんので消します。

Result

/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform
/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform
/Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform
/Applications/Xcode.app/Contents/Developer/Platforms/WatchSimulator.platform
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/Developer/Platforms/AppleTVSimulator.platform
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/Developer/Platforms/iPhoneSimulator.platform

削除前の容量を確認しておくと Xcode 9.2 で 5.7 GB でした。

Terminal

$ du -sh /Applications/Xcode.app
5.7G    /Applications/Xcode.app

削除は find コマンドの結果を xargs コマンドに渡して rm コマンドで削除するだけです。

Terminal

find /Applications/Xcode.app -type d -name "*.platform" \! -name "MacOSX.platform" | sudo xargs rm -rf

削除前は 5.7 GB でしたが 1.4 GB まで減りました。かなりの減量ですね。

Terminal

$ du -sh /Applications/Xcode.app
1.4G    /Applications/Xcode.app

xcodebuild コマンドで SDK を確認すると macOSSDK だけになりますが問題なく使えます。

Terminal

$ xcodebuild -showsdks
macOS SDKs:
        macOS 10.13                     -sdk macosx10.13

「メインでは Xcode 10.x 系を使っているんだけどたまに Xcode 9.x 系使いたいんだよなぁ…」という時に 9.x 系の不要な SDK を削除しておくと容量を無駄に喰わなくて済みます。