WeZZard
WeZZard

Reputation: 3546

Duplicate iPhone Simulators Appeared on My Xcode

A duplicate iPhone simulator just appeared after I deleted ~/Library/Developer/Xcode/CoreSimulator folder

Duplicate iPhone Simulators

How to solve this problem?

I've tried to delete ~/Library/Developer/Xcode folder and ~/Library/Application Support/iPhoneSimulator folder. But all failed.

Upvotes: 24

Views: 5353

Answers (3)

sangjoon moon
sangjoon moon

Reputation: 720

I have a same issue after installing Xcode beta version. I found that there are several solution to fix this issue.

1. snapshot

https://github.com/fastlane/fastlane/tree/master/snapshot

usage : gem install fastlane; fastlane snapshot reset_simulators

I solved my problem with this library and it is very simple to use.

2. Xcode->Window->Devices

You can check installed simulators and delete them. But it will take too long time if you have many simulators.

3. xcrun simctl delete

you can use xcrun command in terminal. But you need to input a specific device name with command.

Upvotes: 32

malhal
malhal

Reputation: 30569

I had kinda a lot! Too many to delete one by one in Devices, thanks Apple for not including multi-select. Don't double tap delete either or you'll crash Xcode. I found a script that could delete duplicates however it only worked if there was only 1 duplicate of each type so didn't work in my case. I therefor edited the script to simply delete all the simulators, and then you can add any you need just by clicking plus in the Devices window.

Save the following as 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])

Then run:

python remove_all_sims.py

Note its hard coded for iOS 8.4 simulators only.

Many duplicates

Upvotes: 5

Nikita Leonov
Nikita Leonov

Reputation: 5694

It may happen because of multiple Xcode installed or during Xcode upgrades. The only thing that need to be done is to open Xcode -> Window -> Devices select duplicated device and delete it.

Upvotes: 55

Related Questions