Class: RunLoop::Device
- Inherits:
-
Object
- Object
- RunLoop::Device
- Defined in:
- lib/run_loop/device.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#state ⇒ Object
readonly
Returns the value of attribute state.
-
#udid ⇒ Object
readonly
Returns the value of attribute udid.
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Class Method Summary collapse
-
.device_with_identifier(udid_or_name, options = {}) ⇒ RunLoop::Device
Returns a device given a udid or name.
Instance Method Summary collapse
-
#initialize(name, version, udid, state = nil) ⇒ Device
constructor
Create a new device.
-
#instruction_set ⇒ String
Return the instruction set for this device.
-
#instruments_identifier(xcode = SIM_CONTROL.xcode) ⇒ String
Returns and instruments-ready device identifier that is a suitable value for DEVICE_TARGET environment variable.
-
#physical_device? ⇒ Boolean
Is this a physical device?.
-
#simulator? ⇒ Boolean
Is this a simulator?.
Constructor Details
#initialize(name, version, udid, state = nil) ⇒ Device
Create a new device.
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/run_loop/device.rb', line 26 def initialize(name, version, udid, state=nil) @name = name @udid = udid @state = state if version.is_a? String @version = RunLoop::Version.new version else @version = version end end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
6 7 8 |
# File 'lib/run_loop/device.rb', line 6 def name @name end |
#state ⇒ Object (readonly)
Returns the value of attribute state.
9 10 11 |
# File 'lib/run_loop/device.rb', line 9 def state @state end |
#udid ⇒ Object (readonly)
Returns the value of attribute udid.
8 9 10 |
# File 'lib/run_loop/device.rb', line 8 def udid @udid end |
#version ⇒ Object (readonly)
Returns the value of attribute version.
7 8 9 |
# File 'lib/run_loop/device.rb', line 7 def version @version end |
Class Method Details
.device_with_identifier(udid_or_name, options = {}) ⇒ RunLoop::Device
Returns a device given a udid or name. In the case of a physical device, the udid is the device identifier. In the case of a simulator the name is the _instruments identifier_ as reported by ‘$ xcrun instruments -s devices` - this is the identifier that can be passed to instruments.
Note that if you have a device and simulator with the same name, the simulator will always be selected.
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/run_loop/device.rb', line 64 def self.device_with_identifier(udid_or_name, ={}) if .is_a?(RunLoop::SimControl) RunLoop.deprecated('1.5.0', %q( The 'sim_control' argument has been deprecated. It has been replaced by an options hash with two keys: :sim_control and :instruments. Please update your sources.)) = { :sim_control => , :instruments => RunLoop::Instruments.new } else = { :sim_control => RunLoop::SimControl.new, :instruments => RunLoop::Instruments.new } = .merge() end instruments = [:instruments] sim_control = [:sim_control] xcode = sim_control.xcode simulator = sim_control.simulators.detect do |sim| sim.instruments_identifier(xcode) == udid_or_name || sim.udid == udid_or_name end return simulator if !simulator.nil? physical_device = instruments.physical_devices.detect do |device| device.name == udid_or_name || device.udid == udid_or_name end return physical_device if !physical_device.nil? raise ArgumentError, "Could not find a device with a UDID or name matching '#{udid_or_name}'" end |
Instance Method Details
#instruction_set ⇒ String
Finding the instruction set of a device requires a third-party tool like ideviceinfo. Example: ‘$ ideviceinfo -u 89b59 < snip > ab7ba –key ’CPUArchitecture’ => arm64`
Return the instruction set for this device.
Simulator The simulator instruction set will be i386 or x86_64 depending on the the (marketing) name of the device.
179 180 181 182 183 184 185 186 187 188 189 |
# File 'lib/run_loop/device.rb', line 179 def instruction_set if simulator? if ['iPhone 4s', 'iPhone 5', 'iPad 2', 'iPad Retina'].include?(self.name) 'i386' else 'x86_64' end else raise 'Finding the instruction set of a device requires a third-party tool like ideviceinfo' end end |
#instruments_identifier(xcode = SIM_CONTROL.xcode) ⇒ String
As of 1.5.0, the XCTools optional argument has become a non-optional Xcode argument.
Returns and instruments-ready device identifier that is a suitable value for DEVICE_TARGET environment variable.
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/run_loop/device.rb', line 128 def instruments_identifier(xcode=SIM_CONTROL.xcode) if xcode.is_a?(RunLoop::XCTools) RunLoop.deprecated('1.5.0', %q( RunLoop::XCTools has been replaced with a non-optional RunLoop::Xcode argument. Please update your sources to pass an instance of RunLoop::Xcode)) end if physical_device? udid else if version == RunLoop::Version.new('7.0.3') version_part = version.to_s else version_part = "#{version.major}.#{version.minor}" end if xcode.version_gte_7? "#{name} (#{version_part})" elsif xcode.version_gte_6? "#{name} (#{version_part} Simulator)" else udid end end end |
#physical_device? ⇒ Boolean
Is this a physical device?
157 158 159 |
# File 'lib/run_loop/device.rb', line 157 def physical_device? not udid[DEVICE_UDID_REGEX, 0].nil? end |
#simulator? ⇒ Boolean
Is this a simulator?
163 164 165 |
# File 'lib/run_loop/device.rb', line 163 def simulator? not physical_device? end |