droid_adbs 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +12 -1
- data/lib/droid_adbs/aapt.rb +5 -1
- data/lib/droid_adbs/commons/backup.rb +14 -2
- data/lib/droid_adbs/commons/devices.rb +12 -6
- data/lib/droid_adbs/commons/grant.rb +22 -0
- data/lib/droid_adbs/commons/ime.rb +16 -8
- data/lib/droid_adbs/version.rb +1 -1
- data/lib/droid_adbs.rb +29 -22
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 568bd488d848be1f37d46702e9b2f5c151c826ab
|
4
|
+
data.tar.gz: 1aba89a26ec167fae9a811d70349ae8c0c0df0a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a33f99f5a6e38732f4176a56f1574197385891b8167dcb9a6eb2ca5bca9fc9ade201d78f499b6847c692d1e496803c0cf86ad4d111b50ef23c147862e09589c
|
7
|
+
data.tar.gz: ea5ab0b50f306212c196ff7bc3fca9c5ac63cf1f4fbedfdc48a5810c77458e63024561e4d500c4fa7e2f6738178283294b00820c8d27f28b80727da290ee8d9b
|
data/README.md
CHANGED
@@ -19,7 +19,15 @@ Or install it yourself as:
|
|
19
19
|
|
20
20
|
## Usage
|
21
21
|
|
22
|
-
|
22
|
+
Example:
|
23
|
+
|
24
|
+
```
|
25
|
+
::DroidAdbs.device_serial = "device cerial you would like to connect" # set device_serial
|
26
|
+
::DroidAdbs devices # means `adb devices`
|
27
|
+
::DroidAdbs.install(app_path) # install `app_path` to the device
|
28
|
+
```
|
29
|
+
|
30
|
+
Please read yard documents if you would like to know more.
|
23
31
|
|
24
32
|
## Development
|
25
33
|
|
@@ -30,6 +38,9 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
30
38
|
## Rubygems
|
31
39
|
- https://rubygems.org/gems/droid_adbs
|
32
40
|
|
41
|
+
## Documents
|
42
|
+
You can get document by `yard` command.
|
43
|
+
|
33
44
|
## Contributing
|
34
45
|
|
35
46
|
Bug reports and pull requests are welcome on GitHub at https://github.com/KazuCocoa/droid_adbs. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
data/lib/droid_adbs/aapt.rb
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
module DroidAdbs
|
2
2
|
module Aapt
|
3
3
|
class << self
|
4
|
+
# @param [String] package_path
|
5
|
+
# @param [String] out_path
|
6
|
+
# @raise RuntimeError because get_manifesto can't find aapt command
|
7
|
+
# @return [fixnum]
|
4
8
|
def get_manifesto(package_path, out_path)
|
5
|
-
raise "should set path to aapt, android-sdks/build-tools/xxxx" if `which aapt`.empty?
|
9
|
+
raise RuntimeError, "should set path to aapt, android-sdks/build-tools/xxxx" if `which aapt`.empty?
|
6
10
|
dumped_data = `aapt dump xmltree #{package_path} AndroidManifest.xml`
|
7
11
|
File.write out_path, dumped_data
|
8
12
|
end
|
@@ -6,31 +6,43 @@ module DroidAdbs
|
|
6
6
|
|
7
7
|
# https://developer.android.com/intl/ja/training/backup/autosyncapi.html#testing
|
8
8
|
|
9
|
+
# @raise RuntimeError because backup available over SDK 23
|
10
|
+
# @return [String] message from adb command
|
9
11
|
def enable_backup_logs
|
10
|
-
|
12
|
+
raise RuntimeError, "Backup support over SDK 23(Android 6.0, M)" unless available_backup?
|
11
13
|
`#{::DroidAdbs.shell} setprop log.tag.BackupXmlParserLogging VERBOSE`
|
12
14
|
end
|
13
15
|
|
16
|
+
# @param [String] package A package name you would like to backup
|
17
|
+
# @raise RuntimeError because backup available over SDK 23
|
18
|
+
# @return [String] message from adb command
|
14
19
|
def full_backup(package)
|
15
|
-
|
20
|
+
raise RuntimeError, "Backup support over SDK 23(Android 6.0, M)" unless available_backup?
|
16
21
|
`#{::DroidAdbs.shell} bmgr run`
|
17
22
|
`#{::DroidAdbs.shell} bmgr fullbackup #{package}`
|
18
23
|
end
|
19
24
|
|
25
|
+
# @param [String] package A package name you would like to backup
|
26
|
+
# @return [String] message from adb command
|
20
27
|
def restore(package)
|
21
28
|
fail "Backup support over SDK 23(Android 6.0, M)" unless available_backup?
|
22
29
|
`#{::DroidAdbs.shell} bmgr restore #{package}`
|
23
30
|
end
|
24
31
|
|
32
|
+
# @return [String] message from adb command
|
25
33
|
def transports
|
26
34
|
`#{::DroidAdbs.shell} bmgr list transports`
|
27
35
|
end
|
28
36
|
|
37
|
+
# @param [String] transport
|
38
|
+
# @param [String] package A package name you would like to backup
|
39
|
+
# @return [String] message from adb command and puts message
|
29
40
|
def clear_backup(transport, package)
|
30
41
|
`#{::DroidAdbs.shell} bmgr wipe #{transport} #{package}`
|
31
42
|
puts "You can also clear the backup data and associated metadata wither by turning backup off and on in Settings > Backup."
|
32
43
|
end
|
33
44
|
|
45
|
+
# @return [Boolean] Return true if API Level against target device is over 23
|
34
46
|
def available_backup?
|
35
47
|
::DroidAdbs::Devices.device_build_version_sdk.to_i >= 23
|
36
48
|
end
|
@@ -5,32 +5,37 @@ module DroidAdbs
|
|
5
5
|
class << self
|
6
6
|
### device infos
|
7
7
|
# @return [String] message from adb command
|
8
|
-
#
|
8
|
+
# @example result of message
|
9
|
+
# docomo/SO-04E_1274-2936/SO-04E:4.2.2/10.3.1.B.0.256/_753rg:user/release-keys
|
9
10
|
def device_fingerprint
|
10
11
|
`#{::DroidAdbs.shell} getprop ro.build.fingerprint`.chomp
|
11
12
|
end
|
12
13
|
|
13
14
|
### device infos
|
14
15
|
# @return [String] message from adb command
|
15
|
-
#
|
16
|
+
# @example result of message
|
17
|
+
# SO-04E
|
16
18
|
def device_model
|
17
19
|
`#{::DroidAdbs.shell} getprop ro.product.model`.chomp
|
18
20
|
end
|
19
21
|
|
20
22
|
# @return [String] message from adb command
|
21
|
-
#
|
23
|
+
# @example result of message
|
24
|
+
# 4.2.2
|
22
25
|
def device_build_version_release
|
23
26
|
`#{::DroidAdbs.shell} getprop ro.build.version.release`.chomp
|
24
27
|
end
|
25
28
|
|
26
29
|
# @return [String] message from adb command
|
27
|
-
#
|
30
|
+
# @example result of message
|
31
|
+
# 17
|
28
32
|
def device_build_version_sdk
|
29
33
|
`#{::DroidAdbs.shell} getprop ro.build.version.sdk`.chomp
|
30
34
|
end
|
31
35
|
|
32
36
|
# @return [String] message from adb command
|
33
|
-
#
|
37
|
+
# @example result of message
|
38
|
+
# "en"
|
34
39
|
def current_language
|
35
40
|
language = `#{::DroidAdbs.shell} getprop persist.sys.language`.chomp
|
36
41
|
return language unless language.empty?
|
@@ -39,7 +44,8 @@ module DroidAdbs
|
|
39
44
|
end
|
40
45
|
|
41
46
|
# @return [String] message from adb command
|
42
|
-
#
|
47
|
+
# @example result of message
|
48
|
+
# "ja-JP"
|
43
49
|
def current_locale
|
44
50
|
locale = `#{::DroidAdbs.shell} getprop persist.sys.locale`.chomp
|
45
51
|
return locale unless locale.empty?
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require_relative "../../droid_adbs"
|
2
|
+
|
3
|
+
module DroidAdbs
|
4
|
+
module Grant
|
5
|
+
class << self
|
6
|
+
# @param [String] package A name of package you would like to allow permission
|
7
|
+
# @param [Object] permission Permission you would like to allow
|
8
|
+
# @return [String] message from adb command
|
9
|
+
def grant(package:, permission:)
|
10
|
+
result = `#{::DroidAdbs.shell} pm grant #{package} #{permission}`.chomp
|
11
|
+
|
12
|
+
unless result.empty?
|
13
|
+
exception = "java.lang.IllegalArgumentException:"
|
14
|
+
error_message = result.each_line.find { |line| line.include? exception }.chomp
|
15
|
+
raise RuntimeError, message unless error_message.empty?
|
16
|
+
end
|
17
|
+
|
18
|
+
result
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -3,29 +3,37 @@ require_relative "../../droid_adbs"
|
|
3
3
|
module DroidAdbs
|
4
4
|
module IME
|
5
5
|
class << self
|
6
|
-
# @return [String] message from adb command
|
6
|
+
# @return [String] message from adb command as pure string.
|
7
7
|
def get_ime_with_string
|
8
8
|
`#{::DroidAdbs.shell} ime list`.chomp
|
9
9
|
end
|
10
10
|
|
11
|
-
# @return [Array] Array of IME ID list
|
12
|
-
#
|
11
|
+
# @return [Array] Array of IME ID list
|
12
|
+
# @example
|
13
|
+
# [
|
14
|
+
# "com.agilebits.onepassword/.filling.FillingInputMethodService",
|
15
|
+
# "com.google.android.googlequicksearchbox/com.google.android.voicesearch.ime.VoiceInputMethodService"
|
16
|
+
# ]
|
13
17
|
def get_ime_list
|
14
18
|
string = get_ime_with_string
|
15
19
|
parse_ime_list(string)
|
16
20
|
end
|
17
21
|
|
18
22
|
# @param [String] ime_id ID provided by IME such as "com.google.android.inputmethod.japanese/.MozcService"
|
19
|
-
# @return [String] message from adb command
|
20
|
-
#
|
21
|
-
#
|
23
|
+
# @return [String] message from adb command.
|
24
|
+
# If it succeeded to set IME, then it returns "Input method com.google.android.inputmethod.japanese/.MozcService selected"
|
25
|
+
# If it failed to set IME because of no ID, then it returns "Error: Unknown id: ime_id"
|
22
26
|
def set_ime(ime_id)
|
23
27
|
`#{::DroidAdbs.shell} ime set #{ime_id}`.chomp
|
24
28
|
end
|
25
29
|
|
26
30
|
# @param [String] ime_lists
|
27
|
-
# @return [Array] Array of IME ID list
|
28
|
-
#
|
31
|
+
# @return [Array] Array of IME ID list
|
32
|
+
# @example
|
33
|
+
# [
|
34
|
+
# "com.agilebits.onepassword/.filling.FillingInputMethodService",
|
35
|
+
# "com.google.android.googlequicksearchbox/com.google.android.voicesearch.ime.VoiceInputMethodService"
|
36
|
+
# ]
|
29
37
|
def parse_ime_list(ime_lists)
|
30
38
|
ime_lists.each_line.map { |line| line.chomp.scan(/\A\S+:\z/).first }.compact.map(&:chop)
|
31
39
|
end
|
data/lib/droid_adbs/version.rb
CHANGED
data/lib/droid_adbs.rb
CHANGED
@@ -4,6 +4,7 @@ require_relative "droid_adbs/commons/devices"
|
|
4
4
|
require_relative "droid_adbs/commons/backup"
|
5
5
|
require_relative "droid_adbs/commons/ime"
|
6
6
|
require_relative "droid_adbs/commons/wm"
|
7
|
+
require_relative "droid_adbs/commons/grant"
|
7
8
|
require_relative "droid_adbs/aapt"
|
8
9
|
|
9
10
|
module DroidAdbs
|
@@ -30,55 +31,58 @@ module DroidAdbs
|
|
30
31
|
`#{adb} devices`.scan(/^.*\t/).map(&:strip)
|
31
32
|
end
|
32
33
|
|
33
|
-
# @param
|
34
|
+
# @param [String] app Application path
|
34
35
|
# @return [String] message from adb command
|
35
36
|
def install(app)
|
36
37
|
result = `#{adb_serial} install -r #{app}`
|
37
|
-
|
38
|
-
|
38
|
+
raise RuntimeError, result if result.include?("Error:")
|
39
|
+
raise RuntimeError, "invalid APK" if result.include?("Invalid APK file:")
|
40
|
+
raise RuntimeError, "failed to update apk because INSTALL_FAILED_VERSION_DOWNGRADE" if result.include?("INSTALL_FAILED_VERSION_DOWNGRADE")
|
39
41
|
result
|
40
42
|
end
|
41
43
|
|
42
|
-
# @param
|
44
|
+
# @param [String] app Application path
|
43
45
|
# @return [String] message from adb command
|
44
46
|
def install_with_grant(app)
|
45
47
|
result = `#{adb_serial} install -r -g #{app}`
|
46
|
-
|
47
|
-
|
48
|
+
raise RuntimeError, result if result.include?("Error:")
|
49
|
+
raise RuntimeError, "invalid APK" if result.include?("Invalid APK file:")
|
50
|
+
raise RuntimeError, "failed to update apk because INSTALL_FAILED_VERSION_DOWNGRADE" if result.include?("INSTALL_FAILED_VERSION_DOWNGRADE")
|
48
51
|
result
|
49
52
|
end
|
50
53
|
|
51
|
-
# @param
|
54
|
+
# @param [String] app Application path
|
52
55
|
# @return [String] message from adb command
|
53
56
|
def install_with(app, option = "")
|
54
57
|
result = `#{adb_serial} install #{option} #{app}`
|
55
|
-
|
56
|
-
|
58
|
+
raise RuntimeError, result if result.include?("Error:")
|
59
|
+
raise RuntimeError, "invalid APK" if result.include?("Invalid APK file:")
|
60
|
+
raise RuntimeError, "failed to update apk because INSTALL_FAILED_VERSION_DOWNGRADE" if result.include?("INSTALL_FAILED_VERSION_DOWNGRADE")
|
57
61
|
result
|
58
62
|
end
|
59
63
|
|
60
64
|
|
61
|
-
# @param
|
65
|
+
# @param [String] package A package name you would like to uninstall
|
62
66
|
# @return [String] message from adb command
|
63
67
|
def uninstall(package)
|
64
68
|
`#{adb_serial} uninstall #{package}`
|
65
69
|
end
|
66
70
|
|
67
|
-
# @param
|
71
|
+
# @param [String] package A package name you would like to uninstall similar ones
|
68
72
|
# @return [String] message from adb command
|
69
73
|
def uninstall_similar(package)
|
70
74
|
installed_packages = installed_similar(package)
|
71
75
|
installed_packages.each { |pack| `#{adb_serial} uninstall #{pack}` }
|
72
76
|
end
|
73
77
|
|
74
|
-
# @param
|
78
|
+
# @param [String] package A package name you would like to delete data in device local
|
75
79
|
# @return [String] message from adb command
|
76
80
|
def delete_data(package)
|
77
81
|
result = `#{shell} pm clear #{package}`.strip
|
78
82
|
puts "failed to delete data" unless result == "Success"
|
79
83
|
end
|
80
84
|
|
81
|
-
# @param
|
85
|
+
# @param [String] package A package name you would like to check installed or not
|
82
86
|
# @return [Bool] If the package installed, return true. Else return false
|
83
87
|
def installed?(package)
|
84
88
|
result = `#{shell} pm list packages -e #{package}`.strip
|
@@ -86,20 +90,20 @@ module DroidAdbs
|
|
86
90
|
false
|
87
91
|
end
|
88
92
|
|
89
|
-
# @param
|
93
|
+
# @param [String] package A package name you would like to collect similar package
|
90
94
|
# @return [Array] all package names
|
91
95
|
def installed_similar(package)
|
92
96
|
result = `#{shell} pm list packages -e #{package}`.strip
|
93
97
|
result.each_line.map { |pack| pack.strip.sub("package:", "") }
|
94
98
|
end
|
95
99
|
|
96
|
-
# @param
|
100
|
+
# @param [String] activity An activity name you would like to launch
|
97
101
|
# @return [String] message from adb command
|
98
102
|
def start(activity)
|
99
103
|
`#{shell} am start -n #{activity}`
|
100
104
|
end
|
101
105
|
|
102
|
-
# @param
|
106
|
+
# @param [String] account_type accountType of Android OS
|
103
107
|
# @return [String] message from adb command
|
104
108
|
def launch_login_activity(account_type)
|
105
109
|
if ::DroidAdbs::Devices.device_build_version_sdk.to_i >= 21
|
@@ -109,14 +113,14 @@ module DroidAdbs
|
|
109
113
|
end
|
110
114
|
end
|
111
115
|
|
112
|
-
# @param
|
116
|
+
# @param [String] package A package name you would like to stop
|
113
117
|
# @return [String] message from adb command
|
114
118
|
def force_stop(package)
|
115
119
|
`#{shell} am force-stop #{package}`
|
116
120
|
end
|
117
121
|
|
118
|
-
# @param
|
119
|
-
# @param
|
122
|
+
# @param [String] broadcats_item Target item for broadcast
|
123
|
+
# @param [String] broadcast_extra putExtra to send broadcast.
|
120
124
|
# @return [String] message from adb command
|
121
125
|
def send_broadcast(broadcats_item, broadcast_extra = "")
|
122
126
|
`#{shell} am broadcast -a #{broadcats_item} #{broadcast_extra}`
|
@@ -134,14 +138,14 @@ module DroidAdbs
|
|
134
138
|
`#{shell} dumpsys window windows | grep -E "mCurrentFocus|mFocusedApp"`
|
135
139
|
end
|
136
140
|
|
137
|
-
# @param [String]
|
141
|
+
# @param referrer [String] To broadcast
|
138
142
|
# @return [String] message from adb command
|
139
143
|
def install_referrer_broadcast(referrer)
|
140
144
|
`#{shell} broadcast window -a com.android.vending.INSTALL_REFERRER --include-stopped-packages --es referrer #{referrer}`
|
141
145
|
end
|
142
146
|
|
143
147
|
# send referrer for TVs
|
144
|
-
# @param [String]
|
148
|
+
# @param [String] ref to broadcast
|
145
149
|
# @return [String] message from adb command
|
146
150
|
def broad_install_referrer(ref)
|
147
151
|
`#{shell} am broadcast -a com.android.vending.INSTALL_REFERRER --include-stopped-packages --es referrer #{ref}`
|
@@ -154,10 +158,13 @@ module DroidAdbs
|
|
154
158
|
`#{shell} input keyevent 82`
|
155
159
|
end
|
156
160
|
|
161
|
+
# @param [String] text Pin code to unlock
|
162
|
+
# @return [String] message from adb command
|
157
163
|
def unlock_with_pin(text)
|
158
164
|
`#{shell} input text #{text} && #{shell} input keyevent 66`
|
159
165
|
end
|
160
166
|
|
167
|
+
# @return [String] message from adb command
|
161
168
|
def screen_on_or_off
|
162
169
|
`#{shell} input keyevent 26`
|
163
170
|
end
|
@@ -174,4 +181,4 @@ module DroidAdbs
|
|
174
181
|
"-s #{device_serial}"
|
175
182
|
end
|
176
183
|
end
|
177
|
-
end
|
184
|
+
end # module DroidAdbs
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: droid_adbs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kazuaki MATSUO
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -72,6 +72,7 @@ files:
|
|
72
72
|
- lib/droid_adbs/aapt.rb
|
73
73
|
- lib/droid_adbs/commons/backup.rb
|
74
74
|
- lib/droid_adbs/commons/devices.rb
|
75
|
+
- lib/droid_adbs/commons/grant.rb
|
75
76
|
- lib/droid_adbs/commons/ime.rb
|
76
77
|
- lib/droid_adbs/commons/settings.rb
|
77
78
|
- lib/droid_adbs/commons/wm.rb
|