Class: Ash::Adb::Device

Inherits:
Object
  • Object
show all
Defined in:
lib/ash/adb/device.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(serial_number, state, qualifiers = nil) ⇒ Device

Returns a new instance of Device.



5
6
7
8
9
10
# File 'lib/ash/adb/device.rb', line 5

def initialize(serial_number, state, qualifiers=nil)
  @serial_number = serial_number
  @state         = state
  @qualifiers    = qualifiers
  @packages      = parse_device_package_list
end

Instance Attribute Details

#packagesObject (readonly)

Returns the value of attribute packages.



3
4
5
# File 'lib/ash/adb/device.rb', line 3

def packages
  @packages
end

#qualifiersObject (readonly)

Returns the value of attribute qualifiers.



3
4
5
# File 'lib/ash/adb/device.rb', line 3

def qualifiers
  @qualifiers
end

#serial_numberObject (readonly)

Returns the value of attribute serial_number.



3
4
5
# File 'lib/ash/adb/device.rb', line 3

def serial_number
  @serial_number
end

#stateObject (readonly)

Returns the value of attribute state.



3
4
5
# File 'lib/ash/adb/device.rb', line 3

def state
  @state
end

Instance Method Details

#adb_over_wifiObject



24
25
26
# File 'lib/ash/adb/device.rb', line 24

def adb_over_wifi
  Client.run("adb -s #{@serial_number} tcpip 5555")
end

#adb_port_forward(local, remote, remote_protocol = "tcp") ⇒ Object



20
21
22
# File 'lib/ash/adb/device.rb', line 20

def adb_port_forward(local, remote, remote_protocol="tcp")
  Client.run("adb -s #{@serial_number} forward tcp:#{local} #{remote_protocol}:#{remote}")
end

#featuresObject



36
37
38
39
40
41
42
# File 'lib/ash/adb/device.rb', line 36

def features
  adb_command = "adb -s #{@serial_number} shell pm list features"
  raw_features_output = Client.run(adb_command)
  raw_features_output.split("\r\n").map do |feature|
    feature.split(":").last
  end
end

#generate_bugreportObject



12
13
14
# File 'lib/ash/adb/device.rb', line 12

def generate_bugreport
  Client.run("adb -s #{@serial_number} shell bugreport") 
end

#librariesObject



44
45
46
47
48
49
50
# File 'lib/ash/adb/device.rb', line 44

def libraries
  adb_command = "adb -s #{@serial_number} shell pm list libraries"
  raw_library_output = Client.run(adb_command)
  raw_library_output.split("\r\n").map do |library|
    library.split(":").last
  end
end

#parse_device_package_listObject



52
53
54
55
56
57
58
59
# File 'lib/ash/adb/device.rb', line 52

def parse_device_package_list
  Client.run("adb -s #{@serial_number} shell pm list packages -f").split("\r\n").map do |package_line|
    package_line = package_line.split(":").last.split("=")
    package_path = package_line.first
    package_name = package_line.last
    Package.new(package_path, package_name)
  end
end

#permission_groupsObject



28
29
30
31
32
33
34
# File 'lib/ash/adb/device.rb', line 28

def permission_groups
  adb_command = "adb -s #{@serial_number} shell pm list permission-groups"
  raw_pg_output = Client.run(adb_command)
  raw_pg_output.split("\r\n").map do |permission_group|
    permission_group.split(":").last
  end
end

#save_bugreport(path = FileSaver.construct_save_path("bugreport.txt")) ⇒ Object



16
17
18
# File 'lib/ash/adb/device.rb', line 16

def save_bugreport(path = FileSaver.construct_save_path("bugreport.txt"))
  File.open(path, 'w') {|f| f.write(generate_bugreport) }
end