app-info 1.0.5 → 1.1.0
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/Gemfile +1 -1
- data/README.md +37 -1
- data/Rakefile +2 -2
- data/app_info.gemspec +2 -2
- data/lib/app_info/parser.rb +22 -0
- data/lib/app_info/parser/apk.rb +65 -7
- data/lib/app_info/parser/ipa.rb +4 -0
- data/lib/app_info/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 348142dbbeecec1ec30e820e2ec8c37a5d9be66ebc5926e5d733614c3a810147
|
4
|
+
data.tar.gz: a0d411d78587fc3a83d83d1b077d0c4662742eb5dee1860a95d32b7296cb560a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: acf5cee8ba9187a39709a8dd0c7bab31f501d04265b563a2b419b28a1e4352509fb290127ad37eb368eca741c309067fef6ba80b4a6152991bdf30f3425cd669
|
7
|
+
data.tar.gz: f911bc65aa41ebc8b4dadf2f3d765a81b1205207fb770b68ba931a28d858f0e77cd5808ff9c6faaf09c986d00b52b463b70fd470d3876ae4aa5d318191feacc3
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -51,6 +51,14 @@ Teardown suport iPhone/iPad/Universal.
|
|
51
51
|
```ruby
|
52
52
|
ipa = AppInfo.parse('iphone.ipa')
|
53
53
|
|
54
|
+
# get app file size
|
55
|
+
ipa.size
|
56
|
+
# => 3093823
|
57
|
+
|
58
|
+
# get app file size in human reable.
|
59
|
+
ipa.size(true)
|
60
|
+
# => 29 MB
|
61
|
+
|
54
62
|
# get app release version
|
55
63
|
ipa.release_version
|
56
64
|
# => 1.0
|
@@ -109,12 +117,20 @@ profile.devices
|
|
109
117
|
```ruby
|
110
118
|
apk = AppInfo.parse('android.apk')
|
111
119
|
|
120
|
+
# get app file size
|
121
|
+
ipa.size
|
122
|
+
# => 3093823
|
123
|
+
|
124
|
+
# get app file size in human reable.
|
125
|
+
ipa.size(true)
|
126
|
+
# => 29 MB
|
127
|
+
|
112
128
|
# get app release version
|
113
129
|
apk.release_version
|
114
130
|
# => 1.0
|
115
131
|
|
116
132
|
# get app package name
|
117
|
-
apk.
|
133
|
+
apk.bundle_id
|
118
134
|
# => com.icyleaf.AppInfoDemo
|
119
135
|
|
120
136
|
# get app icons
|
@@ -125,6 +141,26 @@ apk.icons
|
|
125
141
|
apk.min_sdk_version
|
126
142
|
# => 13
|
127
143
|
|
144
|
+
# get use_permissions list
|
145
|
+
apk.use_permissions
|
146
|
+
# => [...]
|
147
|
+
|
148
|
+
# get activitiy list
|
149
|
+
apk.activities
|
150
|
+
# => [...]
|
151
|
+
|
152
|
+
# get service list
|
153
|
+
apk.services
|
154
|
+
# => [...]
|
155
|
+
|
156
|
+
# get certificate list
|
157
|
+
apk.certificates
|
158
|
+
# => [...]
|
159
|
+
|
160
|
+
# get sign list
|
161
|
+
apk.signs
|
162
|
+
# => [...]
|
163
|
+
|
128
164
|
# detect app type (It's difficult to detect phone or tablet)
|
129
165
|
ipa.tv?
|
130
166
|
ipa.wear?
|
data/Rakefile
CHANGED
data/app_info.gemspec
CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_dependency 'ruby_android', '~> 0.7.7'
|
23
23
|
spec.add_dependency 'image_size', '~> 1.5.0'
|
24
24
|
|
25
|
-
spec.add_development_dependency 'bundler', '
|
26
|
-
spec.add_development_dependency 'rake', '
|
25
|
+
spec.add_development_dependency 'bundler', '>= 1.12'
|
26
|
+
spec.add_development_dependency 'rake', '>= 10.0'
|
27
27
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
28
28
|
end
|
data/lib/app_info/parser.rb
CHANGED
@@ -14,5 +14,27 @@ module AppInfo
|
|
14
14
|
def self.mac?
|
15
15
|
RbConfig::CONFIG['host_os'] =~ /darwin/ ? true : false
|
16
16
|
end
|
17
|
+
|
18
|
+
module Util
|
19
|
+
FILE_SIZE_UNITS = %w[B KB MB GB TB].freeze
|
20
|
+
|
21
|
+
def self.file_size(file, humanable)
|
22
|
+
file_size = File.size(file)
|
23
|
+
humanable ? size_to_humanable(file_size) : file_size
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.size_to_humanable(number)
|
27
|
+
if number.to_i < 1024
|
28
|
+
exponent = 0
|
29
|
+
else
|
30
|
+
max_exp = FILE_SIZE_UNITS.size - 1
|
31
|
+
exponent = (Math.log(number) / Math.log(1024)).to_i
|
32
|
+
exponent = max_exp if exponent > max_exp
|
33
|
+
number = format('%.2f', (number / (1024**exponent.to_f)))
|
34
|
+
end
|
35
|
+
|
36
|
+
"#{number} #{FILE_SIZE_UNITS[exponent]}"
|
37
|
+
end
|
38
|
+
end
|
17
39
|
end
|
18
40
|
end
|
data/lib/app_info/parser/apk.rb
CHANGED
@@ -22,6 +22,10 @@ module AppInfo
|
|
22
22
|
@apk = ::Android::Apk.new(file)
|
23
23
|
end
|
24
24
|
|
25
|
+
def size(humanable = false)
|
26
|
+
AppInfo::Parser::Util.file_size(@file, humanable)
|
27
|
+
end
|
28
|
+
|
25
29
|
def os
|
26
30
|
Parser::Platform::ANDROID
|
27
31
|
end
|
@@ -58,11 +62,11 @@ module AppInfo
|
|
58
62
|
# end
|
59
63
|
|
60
64
|
def wear?
|
61
|
-
|
65
|
+
use_features.include?('android.hardware.type.watch')
|
62
66
|
end
|
63
67
|
|
64
68
|
def tv?
|
65
|
-
|
69
|
+
use_features.include?('android.software.leanback')
|
66
70
|
end
|
67
71
|
|
68
72
|
def min_sdk_version
|
@@ -73,12 +77,36 @@ module AppInfo
|
|
73
77
|
manifest.doc.elements['/manifest/uses-sdk'].attributes['targetSdkVersion'].to_i
|
74
78
|
end
|
75
79
|
|
76
|
-
def
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
+
def use_permissions
|
81
|
+
manifest.use_permissions
|
82
|
+
end
|
83
|
+
|
84
|
+
def use_features
|
85
|
+
manifest_values('/manifest/uses-feature')
|
86
|
+
end
|
87
|
+
|
88
|
+
def signs
|
89
|
+
@apk.signs.each_with_object([]) do |(path, sign), obj|
|
90
|
+
obj << Sign.new(path, sign)
|
80
91
|
end
|
81
|
-
|
92
|
+
end
|
93
|
+
|
94
|
+
def certificates
|
95
|
+
@apk.certificates.each_with_object([]) do |(path, certificate), obj|
|
96
|
+
obj << Certificate.new(path, certificate)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def activities
|
101
|
+
components.select {|c| c.type == 'activity' }
|
102
|
+
end
|
103
|
+
|
104
|
+
def services
|
105
|
+
components.select {|c| c.type == 'service' }
|
106
|
+
end
|
107
|
+
|
108
|
+
def components
|
109
|
+
manifest.components
|
82
110
|
end
|
83
111
|
|
84
112
|
def manifest
|
@@ -89,6 +117,10 @@ module AppInfo
|
|
89
117
|
@apk.resource
|
90
118
|
end
|
91
119
|
|
120
|
+
def dex
|
121
|
+
@apk.dex
|
122
|
+
end
|
123
|
+
|
92
124
|
def icons
|
93
125
|
unless @icons
|
94
126
|
tmp_path = File.join(Dir.mktmpdir, "AppInfo-android-#{SecureRandom.hex}")
|
@@ -116,6 +148,32 @@ module AppInfo
|
|
116
148
|
alias identifier bundle_id
|
117
149
|
alias package_name bundle_id
|
118
150
|
alias device_type os
|
151
|
+
|
152
|
+
private
|
153
|
+
|
154
|
+
def manifest_values(path, key = 'name')
|
155
|
+
values = []
|
156
|
+
manifest.doc.each_element(path) do |elem|
|
157
|
+
values << elem.attributes[key]
|
158
|
+
end
|
159
|
+
values.uniq
|
160
|
+
end
|
161
|
+
|
162
|
+
class Certificate
|
163
|
+
attr_reader :path, :certificate
|
164
|
+
def initialize(path, certificate)
|
165
|
+
@path = path
|
166
|
+
@certificate = certificate
|
167
|
+
end
|
168
|
+
end # /Certificate
|
169
|
+
|
170
|
+
class Sign
|
171
|
+
attr_reader :path, :sign
|
172
|
+
def initialize(path, sign)
|
173
|
+
@path = path
|
174
|
+
@sign = sign
|
175
|
+
end
|
176
|
+
end # /Certificate
|
119
177
|
end # /APK
|
120
178
|
end # /Parser
|
121
179
|
end # /AppInfo
|
data/lib/app_info/parser/ipa.rb
CHANGED
data/lib/app_info/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: app-info
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- icyleaf
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: CFPropertyList
|
@@ -76,28 +76,28 @@ dependencies:
|
|
76
76
|
name: bundler
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- - "
|
79
|
+
- - ">="
|
80
80
|
- !ruby/object:Gem::Version
|
81
81
|
version: '1.12'
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
|
-
- - "
|
86
|
+
- - ">="
|
87
87
|
- !ruby/object:Gem::Version
|
88
88
|
version: '1.12'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: rake
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
|
-
- - "
|
93
|
+
- - ">="
|
94
94
|
- !ruby/object:Gem::Version
|
95
95
|
version: '10.0'
|
96
96
|
type: :development
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
|
-
- - "
|
100
|
+
- - ">="
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: '10.0'
|
103
103
|
- !ruby/object:Gem::Dependency
|