删除~/Library/Developer/Xcode/CoreSimulator
文件夹
如何解决这个问题?
我尝试删除~/Library/Developer/Xcode
文件夹和~/Library/Application Support/iPhoneSimulator
文件夹。但都失败了。
答案 0 :(得分:55)
可能由于安装了多个Xcode或在Xcode升级期间发生。唯一需要做的就是打开Xcode - >窗口 - >设备选择重复的设备并将其删除。
答案 1 :(得分:32)
安装Xcode测试版后,我遇到了同样的问题。 我发现有几种解决方案可以解决这个问题。
https://github.com/fastlane/fastlane/tree/master/snapshot
用法:gem install fastlane; fastlane snapshot reset_simulators
我用这个库解决了我的问题,使用非常简单。
您可以检查已安装的模拟器并将其删除。但是如果你有很多模拟器需要很长时间。
你可以在终端中使用xcrun命令。但是您需要使用命令输入特定的设备名称。
答案 2 :(得分:5)
我有点儿了!在设备中逐个删除太多,感谢Apple不包括多选。不要双击删除,否则您将崩溃Xcode。我找到了一个可以删除重复项的脚本,但是只有每种类型只有1个副本才有用,所以在我的情况下不起作用。因此我编辑了脚本以简单地删除所有模拟器,然后只需在“设备”窗口中单击加号即可添加任何需要的文件。
将以下内容另存为remove_all_sims.py
:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
from subprocess import Popen, PIPE
from subprocess import call
p = Popen(["xcrun","simctl","list","devices"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
output, err = p.communicate(b"input data that is passed to subprocess' stdin")
blocks = re.split("--\s+(.*?)\s+--",output)
dic = {}
i=0
for block in blocks:
matches = re.findall("iOS 8.4",block)
if len(matches)>0:
content = blocks[i+1]
lines = content.split("\n")
for line in lines:
line = line.strip()
if len(line)>0:
match = re.match("(.*?)\(",line)
if match:
devicename = match.group(1)
idMatch = re.match(".*?\((.*?)\).*",line)
dic[devicename] = idMatch.group(1)
call(["xcrun","simctl","delete",idMatch.group(1)])
# print match.group(1)
# print line
i = i+1
for guid in dic.itervalues():
call(["xcrun","simctl","delete",guid])
然后运行:
python remove_all_sims.py
请注意其仅适用于iOS 8.4模拟器的硬编码。