重装或清理 Xcode 的完整步骤(详解)

【新增】
一般清理,

  1. 从 App Store 下载安装 DevCleaner ,可以清理掉很多。
  2. 命令行作一般清理
  • xcrun simctl list 列出所有 devices / runtimes 等等
  • xcrun simctl delete unavailable 删除不再可用的模拟器数据(实际删除的是 ~/Library/Developer/CoreSimulator/Devices 的某个子目录,子目录名字是该模拟器的UUID)(包括模拟器配置和安装的 app,不包括模拟器的运行时 runtime)
  • /Library/Developer/CoreSimulator/Profiles/Runtimes,超级占空间的模拟器的 runtime,(用 Finder 或者du -sh *查看占空间情况),Finder 打开文件夹后删除,或者sudo rm -rf 某个具体的模拟器运行时,反正得输入开机密码。
  1. Xcode下载资料的缓存 ~/Library/Caches/com.apple.dt.Xcode,这个目录下的Downloads 子目录可能占了很多空间,建议清空。

【原文】
彻底清理
直接更新Xcode会将配置信息和旧模拟器都保留,有时会产生一些无法推测原因的混乱。
如果你想安装一个全新的Xcode,请按下面的步骤进行:

  1. 删除App
    移除 /Applications/Xcode.app,并从垃圾桶移除(若不清除会影响后续的find结果;如果从 LaunchPad 长按并点叉叉删除则不进垃圾桶);

  2. 找到并删除Xcode的相关文件(文档,模拟器,plug-ins,编译记录)

find / -maxdepth 7 -name Xcode 2>/dev/null 

(命令末尾的 2>/dev/null 是过滤掉没有文件夹访问权限的提示信息)
将找到的目录悉数删除(删除前先确认有没有自定义的名为Xcode的什么文件)

  1. 找到并删除Xcode配置信息,安装记录,Cookie/Cache/CrashReporter,等等
find / -maxdepth 7 -name com.apple.dt.\* 2>/dev/null 

(dt是developer tools的意思,比如Xcode的bundleId是com.apple.dt.Xcode,假定你只安装了苹果家Xcode这一个开发工具)
列出这些目录,其中,/System/Library/LaunchAgents/ 目录下的
com.apple.dt.CommandLineTools.installondemand.plist
这个文件不建议删除(此处不作解释)
不要手工删除 /var 目录下的内容,重启时应该会自动删除。若发现文件太大,且重启后也不消失,可先移到某个用户目录)

所以安全稳妥的删除方式是,执行下面的两个命令将它们全部删除,
(涉及两个目录,/Library 和 ~/Library,前者是系统目录,后者是用户目录)

find /Library -maxdepth 7 -name com.apple.dt.\* 2>/dev/null -print0 | xargs -0 sudo rm -rf
find ~/Library -maxdepth 7 -name com.apple.dt.\* 2>/dev/null -print0 | xargs -0 sudo rm -rf 

(-print0是将NUL作为分隔符,NUL也就是'/0',而不是空格;-0与此相应)

  1. 谨慎移除名为Developer的系统目录下的内容
find / -maxdepth 5 -name Developer 2>/dev/null 

找到的结果里,有3个值得注意的目录

/Library/Developer
~/Library/Application\ Support/Developer
~/Library/Developer

对于找到的 /Library/Developer 目录,可能包含的3个子目录是:
CommandLineTools,命令行工具,可删除,日后重装不难,
CoreSimulator,模拟器(非常占空间的运行时 runtime),如果你不希望新安装的Xcode使用旧的模拟器,建议一并删除(Xcode的设置菜单里可重新下载)(用 finder 删除或 sudo rm -rf 才行,反正要输入开机密码)
PrivateFrameworks目录,请不要删除,如果要删除,请先将它的名字后加上.bak,在新的Xcode安装成功并能成功编译项目后再行删除——否则,有导致新Xcode无法启动的风险。尚不清楚这个目录是首次安装Xcode时引入的,还是macOS自带的。

~/Library/Application\ Support/Developer 目录下安装的是 plug-in,由于Xcode 早已禁用 plug-in,而推荐 Xcode Extension,所以该Developer目录完全可以删除。

~/Library/Developer 下的3个子目录都可以删除。下面讲这3个子目录的用途:
CoreSimulator,存放模拟器配置数据(下载的模拟器存放在前面讲过的系统目录下,而不是这个用户目录);
XCPGDevices暂不清楚用途,但确认可删,且其子目录结构与 CoreSimulator目录下的任一模拟器相似;
Xcode目录存放一些临时数据,其DerivedData存储编译缓存和每个项目的索引数据,iOS DeviceSupport子目录存放插到mac机上的手机索引信息,如果删除该目录,会导致下次将手机插入mac时不能马上开始调试,而需要等待几分钟。

  1. provisioning profile 目录
~/Library/MobileDevice/Provisioning Profiles

一般不需要清理。
有意思的是,这个目录下的授权证书文件名就是证书的 UUID

security cms -Di xx.mobileprovision | grep -A 1 UUID

就能对比出结果了。

其他参考资料

  1. ios-simulator-simctl
  2. stackoverflow: How to remove old unneeded devices
  3. stackoverflow: Can I delete data from iOS DeviceSupport
  4. delete-temporary-items-private-var-folders-mac-os-x
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容