Ответ 1
Это может произойти из-за установки нескольких Xcode или во время обновления Xcode. Единственное, что нужно сделать, это открыть Xcode → Window → Devices, выбрать дублированное устройство и удалить его.
Повторный симулятор iPhone появился только после того, как я удалил папку ~/Library/Developer/Xcode/CoreSimulator
Как решить эту проблему?
Я попытался удалить папку ~/Library/Developer/Xcode
и папку ~/Library/Application Support/iPhoneSimulator
. Но все не удалось.
Это может произойти из-за установки нескольких Xcode или во время обновления Xcode. Единственное, что нужно сделать, это открыть Xcode → Window → Devices, выбрать дублированное устройство и удалить его.
У меня такая же проблема после установки бета-версии Xcode. Я обнаружил, что есть несколько решений для устранения этой проблемы.
https://github.com/fastlane/fastlane/tree/master/snapshot
использование: gem install fastlane; fastlane snapshot reset_simulators
Я решил проблему с этой библиотекой, и ее очень просто использовать.
Вы можете проверить установленные имитаторы и удалить их. Но это займет слишком много времени, если у вас много симуляторов.
вы можете использовать команду xcrun в терминале. Но вам нужно ввести конкретное имя устройства с помощью команды.
У меня было очень много! Слишком много, чтобы удалить один за другим в устройствах, спасибо Apple за то, что вы не включили мульти-выбор. Не удаляйте двойное нажатие либо, либо вы будете разбивать Xcode. Я нашел script, который мог удалять дубликаты, но он работал только в том случае, если в каждом случае было только один дубликат, поэтому в моем случае это не сработало. Поэтому я отредактировал script, чтобы просто удалить все симуляторы, а затем вы можете добавить все, что вам нужно, просто щелкнув плюс в окне "Устройства".
Сохраните следующее как 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.