Class: FastlaneCore::DeviceManager::Device

Inherits:
Object
  • Object
show all
Defined in:
fastlane_core/lib/fastlane_core/device_manager.rb

Overview

Use the UDID for the given device when setting the destination Why? Because we might get this error message > The requested device could not be found because multiple devices matched the request.

This happens when you have multiple simulators for a given device type / iOS combination

{ platform:iOS Simulator, id:1685B071-AFB2-4DC1-BE29-8370BA4A6EBD, OS:9.0, name:iPhone 5 }
{ platform:iOS Simulator, id:A141F23B-96B3-491A-8949-813B376C28A7, OS:9.0, name:iPhone 5 }

We don’t want to deal with that, so we just use the UDID

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name: nil, udid: nil, os_type: nil, os_version: nil, state: nil, is_simulator: nil) ⇒ Device

Returns a new instance of Device.



189
190
191
192
193
194
195
196
197
# File 'fastlane_core/lib/fastlane_core/device_manager.rb', line 189

def initialize(name: nil, udid: nil, os_type: nil, os_version: nil, state: nil, is_simulator: nil)
  self.name = name
  self.udid = udid
  self.os_type = os_type
  self.os_version = os_version
  self.ios_version = os_version
  self.state = state
  self.is_simulator = is_simulator
end

Instance Attribute Details

#ios_versionObject

Preserved for backwards compatibility



185
186
187
# File 'fastlane_core/lib/fastlane_core/device_manager.rb', line 185

def ios_version
  @ios_version
end

#is_simulatorObject

Returns the value of attribute is_simulator.



187
188
189
# File 'fastlane_core/lib/fastlane_core/device_manager.rb', line 187

def is_simulator
  @is_simulator
end

#nameObject

Returns the value of attribute name.



181
182
183
# File 'fastlane_core/lib/fastlane_core/device_manager.rb', line 181

def name
  @name
end

#os_typeObject

Returns the value of attribute os_type.



183
184
185
# File 'fastlane_core/lib/fastlane_core/device_manager.rb', line 183

def os_type
  @os_type
end

#os_versionObject

Returns the value of attribute os_version.



184
185
186
# File 'fastlane_core/lib/fastlane_core/device_manager.rb', line 184

def os_version
  @os_version
end

#stateObject

Returns the value of attribute state.



186
187
188
# File 'fastlane_core/lib/fastlane_core/device_manager.rb', line 186

def state
  @state
end

#udidObject

Returns the value of attribute udid.



182
183
184
# File 'fastlane_core/lib/fastlane_core/device_manager.rb', line 182

def udid
  @udid
end

Instance Method Details

#bootObject



203
204
205
206
207
208
209
210
211
212
# File 'fastlane_core/lib/fastlane_core/device_manager.rb', line 203

def boot
  return unless is_simulator
  return unless os_type == "iOS"
  return if self.state == 'Booted'

  # Boot the simulator and wait for it to finish booting
  UI.message("Booting #{self}")
  `xcrun simctl bootstatus #{self.udid} -b &> /dev/null`
  self.state = 'Booted'
end

#deleteObject



230
231
232
233
234
# File 'fastlane_core/lib/fastlane_core/device_manager.rb', line 230

def delete
  UI.message("Deleting #{self}")
  shutdown
  `xcrun simctl delete #{self.udid}`
end

#disable_slide_to_typeObject



236
237
238
239
240
241
242
243
244
245
246
247
# File 'fastlane_core/lib/fastlane_core/device_manager.rb', line 236

def disable_slide_to_type
  return unless is_simulator
  return unless os_type == "iOS"
  return unless Gem::Version.new(os_version) >= Gem::Version.new('13.0')
  UI.message("Disabling 'Slide to Type' #{self}")

  plist_buddy = '/usr/libexec/PlistBuddy'
  plist_buddy_cmd = "-c \"Add :KeyboardContinuousPathEnabled bool false\""
  plist_path = File.expand_path("~/Library/Developer/CoreSimulator/Devices/#{self.udid}/data/Library/Preferences/com.apple.keyboard.ContinuousPath.plist")

  Helper.backticks("#{plist_buddy} #{plist_buddy_cmd} #{plist_path} >/dev/null 2>&1")
end

#resetObject



224
225
226
227
228
# File 'fastlane_core/lib/fastlane_core/device_manager.rb', line 224

def reset
  UI.message("Resetting #{self}")
  shutdown
  `xcrun simctl erase #{self.udid}`
end

#shutdownObject



214
215
216
217
218
219
220
221
222
# File 'fastlane_core/lib/fastlane_core/device_manager.rb', line 214

def shutdown
  return unless is_simulator
  return unless os_type == "iOS"
  return if self.state != 'Booted'

  UI.message("Shutting down #{self.udid}")
  `xcrun simctl shutdown #{self.udid} 2>/dev/null`
  self.state = 'Shutdown'
end

#to_sObject



199
200
201
# File 'fastlane_core/lib/fastlane_core/device_manager.rb', line 199

def to_s
  self.name
end