-
-
Save cabeca/3ff77007204e5479f7af to your computer and use it in GitHub Desktop.
| #!/usr/bin/env ruby | |
| require 'JSON' | |
| device_types = JSON.parse `xcrun simctl list -j devicetypes` | |
| runtimes = JSON.parse `xcrun simctl list -j runtimes` | |
| devices = JSON.parse `xcrun simctl list -j devices` | |
| devices['devices'].each do |runtime, runtime_devices| | |
| runtime_devices.each do |device| | |
| puts "Removing device #{device['name']} (#{device['udid']})" | |
| `xcrun simctl delete #{device['udid']}` | |
| end | |
| end | |
| device_types['devicetypes'].each do |device_type| | |
| runtimes['runtimes'].select{|runtime| runtime['availability'] == '(available)'}.each do |runtime| | |
| puts "Creating #{device_type['name']} with #{runtime['name']}" | |
| command = "xcrun simctl create '#{device_type['name']} #{runtime['name']}' #{device_type['identifier']} #{runtime['identifier']}" | |
| command_output = `#{command}` | |
| sleep 0.5 | |
| end | |
| end |
Great, looks good! Just one strange thing - I get these errors:
Creating iPad Air 2 with iOS 9.2
Creating iPad Air 2 with tvOS 9.1
An error was encountered processing the command (domain=com.apple.CoreSimulator.SimError, code=157):
Incompatible device
Creating iPad Air 2 with watchOS 2.1
An error was encountered processing the command (domain=com.apple.CoreSimulator.SimError, code=157):
Incompatible device
for almost every device… I mean it doesn't seem to make sense to e.g. create "iPad Air 2 with tvOS 9.1", so I guess this is OK?
Maybe you can do some check in the inner loop when creating, to prevent these errors.
Thanks for the script, it helps a lot. But it seems that it creates all simulators for every version and device in xcode, even they are not downloaded yet.
If you are a CocoaPod writer, You might want to change line 19 from
command = "xcrun simctl create '#{device_type['name']} #{runtime['name']}' #{device_type['identifier']} #{runtime['identifier']}"to
command = "xcrun simctl create '#{device_type['name']}' #{device_type['identifier']} #{runtime['identifier']}"to omit generating simulator names like iPhone 4s iOS 9.3 and generate iPhone 4s instead, otherwise it causes: CocoaPods/CocoaPods#5320 (comment)
If you're using a more recent version of Ruby, you may need to change
require 'JSON'torequire 'json'