Class: AdbExtended::Adb
- Inherits:
-
Object
- Object
- AdbExtended::Adb
- Defined in:
- lib/adb_extended/adb.rb
Class Method Summary collapse
- .battery(serial) ⇒ Object
- .devices ⇒ Object
- .dumpsys(serial, stat = nil) ⇒ Object
- .enter_text(text, submit = false, serial = nil) ⇒ Object
- .install(path, serial = nil) ⇒ Object
- .logcat(serial, level = "D", package) ⇒ Object
- .pidcat(serial, level = "d", package = nil) ⇒ Object
- .screenshot(serial = nil) ⇒ Object
- .shell(serial) ⇒ Object
- .uninstall(package, serial = nil) ⇒ Object
Class Method Details
.battery(serial) ⇒ Object
30 31 32 33 34 |
# File 'lib/adb_extended/adb.rb', line 30 def self.battery(serial) stats = dumpsys(serial, "battery") return stats.select { |s| s.include?("level") }[0] end |
.devices ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/adb_extended/adb.rb', line 9 def self.devices stdout, stderr, status = Open3.capture3("adb devices -l") device_ids = stdout.lines[0...-1] return device_ids.drop(1).map{ |device| split = device.gsub(/\s+/m, ' ').strip.split(" ") { :serial => split[0], :type => split[1], :usb => split[2].gsub('usb:', ''), :product => split[3].gsub('product:', ''), :model => split[4].gsub('model:', ''), :transport_id => split[5].gsub('transport_id:', '') } } end |
.dumpsys(serial, stat = nil) ⇒ Object
25 26 27 28 |
# File 'lib/adb_extended/adb.rb', line 25 def self.dumpsys(serial, stat = nil) stdout, stderr, status = Open3.capture3("adb -s #{serial} shell dumpsys #{stat}") return stdout.lines end |
.enter_text(text, submit = false, serial = nil) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/adb_extended/adb.rb', line 84 def self.enter_text(text, submit = false, serial = nil) key_event = submit ? 66 : 61 if serial != nil stdout, stderr, status = Open3.capture3("adb -s #{serial} shell input tap 0 500 && adb -s #{serial} shell input text #{text} && adb -s #{serial} shell input keyevent #{key_event}") else devices.each { |device| stdout, stderr, status = Open3.capture3("adb -s #{device[:serial]} shell input tap 0 500 && adb -s #{device[:serial]} shell input text #{text} && adb -s #{device[:serial]} shell input keyevent #{key_event}") } end sleep 0.1 end |
.install(path, serial = nil) ⇒ Object
62 63 64 65 66 67 68 69 70 71 |
# File 'lib/adb_extended/adb.rb', line 62 def self.install(path, serial = nil) if serial != nil exec "adb -s #{serial} install -r #{path}" else devices.each { |device| puts "Installing on #{device[:model]}" exec "adb -s #{device[:serial]} install -r #{path}" } end end |
.logcat(serial, level = "D", package) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/adb_extended/adb.rb', line 44 def self.logcat(serial, level = "D", package) stdout, stderr, status = Open3.capture3("adb -s #{serial} shell ps") filter = nil if package != nil package_info = stdout.lines.select { |line| line.include?("#{package}") } if package_info.size == 0 puts 'Application not running' exit 1 end columns = package_info[0].gsub(/\s+/m, ' ').strip.split(" ") filter = "| grep -F #{columns[1]}" end exec "adb -s #{serial} logcat *:#{level} #{filter}" end |
.pidcat(serial, level = "d", package = nil) ⇒ Object
40 41 42 |
# File 'lib/adb_extended/adb.rb', line 40 def self.pidcat(serial, level = "d", package = nil) exec "pidcat -s #{serial} -l #{level} #{package}" end |
.screenshot(serial = nil) ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/adb_extended/adb.rb', line 96 def self.screenshot(serial = nil) t = Time.now = t.strftime("%Y%m%d-%H%M%S") if serial != nil exec "adb -s #{serial} shell /system/bin/screencap /sdcard/screen.png && adb -s #{serial} pull /sdcard/screen.png screen-#{}.png && adb -s #{serial} shell rm /sdcard/screen.png" else devices.each { |device| puts "Taking screenshot on #{device[:model]}" stdout, stderr, status = Open3.capture3("adb -s #{device[:serial]} shell /system/bin/screencap /sdcard/screen.png && adb -s #{device[:serial]} pull /sdcard/screen.png screen-#{}-#{device[:model]}.png && adb -s #{device[:serial]} shell rm /sdcard/screen.png") puts stdout } end end |
.shell(serial) ⇒ Object
36 37 38 |
# File 'lib/adb_extended/adb.rb', line 36 def self.shell(serial) exec "adb -s #{serial} shell" end |
.uninstall(package, serial = nil) ⇒ Object
73 74 75 76 77 78 79 80 81 82 |
# File 'lib/adb_extended/adb.rb', line 73 def self.uninstall(package, serial = nil) if serial != nil exec "adb -s #{serial} uninstall #{package}" else devices.each { |device| puts "Uninstalling from #{device[:model]}" exec "adb -s #{device[:serial]} uninstall #{package}" } end end |