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