app-info 2.1.1 → 2.3.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/.rubocop.yml +1 -2
- data/.travis.yml +1 -0
- data/CHANGELOG.md +40 -1
- data/README.md +17 -1
- data/app_info.gemspec +2 -2
- data/lib/app_info.rb +2 -0
- data/lib/app_info/apk.rb +2 -6
- data/lib/app_info/dsym.rb +4 -1
- data/lib/app_info/ipa.rb +12 -2
- data/lib/app_info/ipa/framework.rb +51 -0
- data/lib/app_info/ipa/info_plist.rb +2 -0
- data/lib/app_info/ipa/mobile_provision.rb +137 -0
- data/lib/app_info/ipa/plugin.rb +16 -0
- data/lib/app_info/version.rb +1 -1
- metadata +24 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e60db88b8b1bc77db8a80623e1f5f52f47114e04f7941486ca8e21ee9ca19f2
|
4
|
+
data.tar.gz: 78c45e538580d4c1c48807b77f38f650a09f4d1610581efb1c423d870c14425f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bfba684fb8bcf015c46f5457b2f4ea1e3bcbaac670a921f2b748a208d1069efff449e22ffb373754622d55927e4f65554aaa5e33c3576dbd55eb3437d3084ee0
|
7
|
+
data.tar.gz: 470dedd66f3bbd04a328e36a125599ca53c0ba9cc7c6778dea6cf74d61f348661080a0f4b801b8b02557c7e842a68e1ecbc7c585f0271e15e5625566ac7a1763
|
data/.rubocop.yml
CHANGED
@@ -26,7 +26,7 @@ Metrics/BlockLength:
|
|
26
26
|
Metrics/MethodLength:
|
27
27
|
Max: 20
|
28
28
|
|
29
|
-
|
29
|
+
Layout/LineLength:
|
30
30
|
Max: 100
|
31
31
|
|
32
32
|
Metrics/ClassLength:
|
@@ -36,6 +36,5 @@ Metrics/ClassLength:
|
|
36
36
|
Metrics/CyclomaticComplexity:
|
37
37
|
Max: 10
|
38
38
|
|
39
|
-
|
40
39
|
Style/Documentation:
|
41
40
|
Enabled: false
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -9,6 +9,40 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
9
9
|
|
10
10
|
> List all changes before release a new version.
|
11
11
|
|
12
|
+
## [2.3.0] (2021-01-15)
|
13
|
+
|
14
|
+
### Changed
|
15
|
+
|
16
|
+
- Change `IPA::ExportType::INHOUSE` to `IPA::ExportType::ENTERPRISE` and change the value. #[24](https://github.com/icyleaf/app-info/pull/24)
|
17
|
+
### Added
|
18
|
+
|
19
|
+
- Add `plugins`, `frameworks` to `AppInfo::IPA`. #[25](https://github.com/icyleaf/app-info/pull/25)
|
20
|
+
|
21
|
+
## [2.2.0] (2020-07-21)
|
22
|
+
|
23
|
+
### Added
|
24
|
+
|
25
|
+
- Add `platforms`, `platform` and `type` to `AppInfo::MobileProvision`.
|
26
|
+
- Add Enabled Capabilities support for mobileprovision. #[21](https://github.com/icyleaf/app-info/pull/19)
|
27
|
+
|
28
|
+
## [2.1.4] (2020-01-21)
|
29
|
+
|
30
|
+
### Fixed
|
31
|
+
|
32
|
+
- Correct Zipped dSYM filename with directory.
|
33
|
+
|
34
|
+
## [2.1.3] (2020-01-16)
|
35
|
+
|
36
|
+
### Fixed
|
37
|
+
|
38
|
+
- Store Android icon with BINARY mode AGAIN(correct way).
|
39
|
+
|
40
|
+
## [2.1.2] (2020-01-11)
|
41
|
+
|
42
|
+
### Fixed
|
43
|
+
|
44
|
+
- Correct Android icon temporary path.
|
45
|
+
- Store Android icon force encoding with BINARY.
|
12
46
|
|
13
47
|
## [2.1.1] (2019-12-28)
|
14
48
|
|
@@ -57,7 +91,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
57
91
|
|
58
92
|
- Updated dependency of CFPropertly list be a range between 2.3.4. (thanks @[cschroed](https://github.com/cschroed))
|
59
93
|
|
60
|
-
[Unreleased]: https://github.com/icyleaf/app-info/compare/v2.
|
94
|
+
[Unreleased]: https://github.com/icyleaf/app-info/compare/v2.3.0..HEAD
|
95
|
+
[2.2.0]: https://github.com/icyleaf/app-info/compare/v2.2.0...v2.3.0
|
96
|
+
[2.2.0]: https://github.com/icyleaf/app-info/compare/v2.1.4...v2.2.0
|
97
|
+
[2.1.4]: https://github.com/icyleaf/app-info/compare/v2.1.3...v2.1.4
|
98
|
+
[2.1.3]: https://github.com/icyleaf/app-info/compare/v2.1.2...v2.1.3
|
99
|
+
[2.1.2]: https://github.com/icyleaf/app-info/compare/v2.1.1...v2.1.2
|
61
100
|
[2.1.1]: https://github.com/icyleaf/app-info/compare/v2.1.0...v2.1.1
|
62
101
|
[2.1.0]: https://github.com/icyleaf/app-info/compare/v2.0.0...v2.1.0
|
63
102
|
[2.0.0]: https://github.com/icyleaf/app-info/compare/v1.1.2...v2.0.0
|
data/README.md
CHANGED
@@ -12,7 +12,7 @@ Teardown tool for mobile app(ipa/apk) and dSYM.zip file, analysis metedata like
|
|
12
12
|
- Android apk file
|
13
13
|
- iOS ipa file
|
14
14
|
- Info.plist file
|
15
|
-
- .mobileprovision file
|
15
|
+
- .mobileprovision/.provisionprofile file
|
16
16
|
- dSYM(.zip) file
|
17
17
|
|
18
18
|
## Installation
|
@@ -101,6 +101,14 @@ ipa.release_type
|
|
101
101
|
ipa.archs
|
102
102
|
# => [:armv7, :arm64]
|
103
103
|
|
104
|
+
# get built-in frameworks
|
105
|
+
ipa.frameworks
|
106
|
+
# => [<AppInfo::Framework:520 @name=Masonry.framework>, <AppInfo::Framework:520 @name=libswiftPhotos.dylib>]
|
107
|
+
|
108
|
+
# get built-in plugins
|
109
|
+
ipa.plugins
|
110
|
+
# => [<AppInfo::Plugin:1680 @name=NotificationService>]
|
111
|
+
|
104
112
|
# get more propety in Info.plist
|
105
113
|
ipa.info[:CFBundleDisplayName]
|
106
114
|
# => 'AppInfoDemo'
|
@@ -127,6 +135,14 @@ profile.team_name
|
|
127
135
|
# get UDID of devices
|
128
136
|
profile.devices
|
129
137
|
# => ['18cf53cddee60c5af9c97b1521e7cbf8342628da']
|
138
|
+
|
139
|
+
# detect type
|
140
|
+
profile.type
|
141
|
+
# => :development/:adhoc/:appstore/:enterprise
|
142
|
+
|
143
|
+
# get enabled capabilities
|
144
|
+
profile.enabled_capabilities
|
145
|
+
# => ['Apple Pay', 'iCloud', 'Sign In with Apple', ...]
|
130
146
|
```
|
131
147
|
|
132
148
|
### dSYM
|
data/app_info.gemspec
CHANGED
@@ -20,12 +20,12 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.required_ruby_version = '>= 2.3'
|
21
21
|
|
22
22
|
spec.add_dependency 'CFPropertyList', ['< 3.1.0', '>= 2.3.4']
|
23
|
-
spec.add_dependency 'image_size', '>= 1.5', '< 2.
|
23
|
+
spec.add_dependency 'image_size', '>= 1.5', '< 2.2'
|
24
24
|
spec.add_dependency 'pngdefry', '~> 0.1.2'
|
25
25
|
spec.add_dependency 'ruby-macho', '~> 2.2.0'
|
26
26
|
spec.add_dependency 'ruby_android', '~> 0.7.7'
|
27
27
|
spec.add_dependency 'rubyzip', '>= 1.2', '< 3.0'
|
28
|
-
spec.add_dependency 'uuidtools', '
|
28
|
+
spec.add_dependency 'uuidtools', '>= 2.1.5', '< 2.3.0'
|
29
29
|
|
30
30
|
spec.add_development_dependency 'bundler', '>= 1.12'
|
31
31
|
spec.add_development_dependency 'rake', '>= 10.0'
|
data/lib/app_info.rb
CHANGED
@@ -5,6 +5,8 @@ require 'app_info/version'
|
|
5
5
|
require 'app_info/ipa'
|
6
6
|
require 'app_info/ipa/info_plist'
|
7
7
|
require 'app_info/ipa/mobile_provision'
|
8
|
+
require 'app_info/ipa/plugin'
|
9
|
+
require 'app_info/ipa/framework'
|
8
10
|
require 'app_info/apk'
|
9
11
|
require 'app_info/dsym'
|
10
12
|
require 'app_info/proguard'
|
data/lib/app_info/apk.rb
CHANGED
@@ -54,8 +54,6 @@ module AppInfo
|
|
54
54
|
resource.find('@string/app_name')
|
55
55
|
end
|
56
56
|
|
57
|
-
|
58
|
-
|
59
57
|
def device_type
|
60
58
|
if wear?
|
61
59
|
Device::WATCH
|
@@ -120,12 +118,10 @@ module AppInfo
|
|
120
118
|
|
121
119
|
@icons = @apk.icon.each_with_object([]) do |(path, data), obj|
|
122
120
|
icon_name = File.basename(path)
|
123
|
-
icon_path = File.join(tmp_path, File.
|
121
|
+
icon_path = File.join(tmp_path, File.dirname(path))
|
124
122
|
icon_file = File.join(icon_path, icon_name)
|
125
123
|
FileUtils.mkdir_p icon_path
|
126
|
-
File.open(icon_file, '
|
127
|
-
f.write data
|
128
|
-
end
|
124
|
+
File.open(icon_file, 'wb') { |f| f.write(data) }
|
129
125
|
|
130
126
|
obj << {
|
131
127
|
name: icon_name,
|
data/lib/app_info/dsym.rb
CHANGED
@@ -84,7 +84,10 @@ module AppInfo
|
|
84
84
|
dsym_dir = nil
|
85
85
|
@contents = Util.unarchive(@file, path: 'dsym') do |path, zip_file|
|
86
86
|
zip_file.each do |f|
|
87
|
-
dsym_dir
|
87
|
+
unless dsym_dir
|
88
|
+
dsym_dir = f.name
|
89
|
+
dsym_dir = dsym_dir.split('/')[0] # fix filename is xxx.app.dSYM/Contents
|
90
|
+
end
|
88
91
|
|
89
92
|
f_path = File.join(path, f.name)
|
90
93
|
zip_file.extract(f, f_path) unless File.exist?(f_path)
|
data/lib/app_info/ipa.rb
CHANGED
@@ -18,9 +18,11 @@ module AppInfo
|
|
18
18
|
module ExportType
|
19
19
|
DEBUG = 'Debug'
|
20
20
|
ADHOC = 'AdHoc'
|
21
|
-
|
21
|
+
ENTERPRISE = 'Enterprise'
|
22
22
|
RELEASE = 'Release'
|
23
23
|
UNKOWN = nil
|
24
|
+
|
25
|
+
INHOUSE = 'Enterprise' # Rename and Alias to enterprise
|
24
26
|
end
|
25
27
|
|
26
28
|
def initialize(file)
|
@@ -60,7 +62,7 @@ module AppInfo
|
|
60
62
|
if devices
|
61
63
|
ExportType::ADHOC
|
62
64
|
else
|
63
|
-
ExportType::
|
65
|
+
ExportType::ENTERPRISE
|
64
66
|
end
|
65
67
|
else
|
66
68
|
ExportType::DEBUG
|
@@ -86,6 +88,14 @@ module AppInfo
|
|
86
88
|
metadata? ? true : false
|
87
89
|
end
|
88
90
|
|
91
|
+
def plugins
|
92
|
+
@plugins ||= Plugin.parse(app_path)
|
93
|
+
end
|
94
|
+
|
95
|
+
def frameworks
|
96
|
+
@frameworks ||= Framework.parse(app_path)
|
97
|
+
end
|
98
|
+
|
89
99
|
def hide_developer_certificates
|
90
100
|
mobileprovision.delete('DeveloperCertificates') if mobileprovision?
|
91
101
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'forwardable'
|
4
|
+
|
5
|
+
module AppInfo
|
6
|
+
# iOS Plugin parser
|
7
|
+
class Framework
|
8
|
+
extend Forwardable
|
9
|
+
|
10
|
+
def self.parse(path, name = 'Frameworks')
|
11
|
+
files = Dir.glob(File.join(path, name.to_s, '*'))
|
12
|
+
return [] if files.empty?
|
13
|
+
|
14
|
+
files.each_with_object([]) do |file, obj|
|
15
|
+
obj << new(file)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
attr_reader :file
|
20
|
+
|
21
|
+
def_delegators :info, :display_name, :bundle_name, :release_version, :build_version,
|
22
|
+
:identifier, :bundle_id, :min_sdk_version, :device_type
|
23
|
+
|
24
|
+
def initialize(file)
|
25
|
+
@file = file
|
26
|
+
end
|
27
|
+
|
28
|
+
def name
|
29
|
+
File.basename(file)
|
30
|
+
end
|
31
|
+
|
32
|
+
def macho
|
33
|
+
return unless lib?
|
34
|
+
|
35
|
+
require 'macho'
|
36
|
+
MachO.open(file)
|
37
|
+
end
|
38
|
+
|
39
|
+
def lib?
|
40
|
+
File.file?(file)
|
41
|
+
end
|
42
|
+
|
43
|
+
def info
|
44
|
+
@info ||= InfoPlist.new(file)
|
45
|
+
end
|
46
|
+
|
47
|
+
def to_s
|
48
|
+
"<#{self.class}:#{object_id} @name=#{name}>"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -19,6 +19,26 @@ module AppInfo
|
|
19
19
|
mobileprovision.try(:[], 'AppIDName')
|
20
20
|
end
|
21
21
|
|
22
|
+
def type
|
23
|
+
return :development if development?
|
24
|
+
return :adhoc if adhoc?
|
25
|
+
return :appstore if appstore?
|
26
|
+
return :enterprise if enterprise?
|
27
|
+
end
|
28
|
+
|
29
|
+
def platforms
|
30
|
+
return unless platforms = mobileprovision.try(:[], 'Platform')
|
31
|
+
|
32
|
+
platforms.map { |v|
|
33
|
+
v = 'macOS' if v == 'OSX'
|
34
|
+
v.downcase.to_sym
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
def platform
|
39
|
+
platforms[0]
|
40
|
+
end
|
41
|
+
|
22
42
|
def devices
|
23
43
|
mobileprovision.try(:[], 'ProvisionedDevices')
|
24
44
|
end
|
@@ -56,6 +76,123 @@ module AppInfo
|
|
56
76
|
end
|
57
77
|
end
|
58
78
|
|
79
|
+
# Detect is development type of mobileprovision
|
80
|
+
#
|
81
|
+
# related link: https://stackoverflow.com/questions/1003066/what-does-get-task-allow-do-in-xcode
|
82
|
+
def development?
|
83
|
+
case platform.downcase.to_sym
|
84
|
+
when :ios
|
85
|
+
entitlements['get-task-allow'] == true
|
86
|
+
when :macos
|
87
|
+
!devices.nil?
|
88
|
+
else
|
89
|
+
raise Error, "Not implement with platform: #{platform}"
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
# Detect app store type
|
94
|
+
#
|
95
|
+
# related link: https://developer.apple.com/library/archive/qa/qa1830/_index.html
|
96
|
+
def appstore?
|
97
|
+
case platform.downcase.to_sym
|
98
|
+
when :ios
|
99
|
+
!development? && entitlements.key?('beta-reports-active')
|
100
|
+
when :macos
|
101
|
+
!development?
|
102
|
+
else
|
103
|
+
raise Error, "Not implement with platform: #{platform}"
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def adhoc?
|
108
|
+
return false if platform == :macos # macOS no need adhoc
|
109
|
+
|
110
|
+
!development? && !devices.nil?
|
111
|
+
end
|
112
|
+
|
113
|
+
def enterprise?
|
114
|
+
return false if platform == :macos # macOS no need adhoc
|
115
|
+
|
116
|
+
!development? && !adhoc? && !appstore?
|
117
|
+
end
|
118
|
+
alias inhouse? enterprise?
|
119
|
+
|
120
|
+
# Enabled Capabilites
|
121
|
+
#
|
122
|
+
# Related link: https://developer.apple.com/support/app-capabilities/
|
123
|
+
def enabled_capabilities
|
124
|
+
capabilities = []
|
125
|
+
if adhoc? || appstore?
|
126
|
+
capabilities << 'In-App Purchase' << 'GameKit'
|
127
|
+
end
|
128
|
+
|
129
|
+
entitlements.each do |key, value|
|
130
|
+
case key
|
131
|
+
when 'aps-environment'
|
132
|
+
capabilities << 'Push Notifications'
|
133
|
+
when 'com.apple.developer.applesignin'
|
134
|
+
capabilities << 'Sign In with Apple'
|
135
|
+
when 'com.apple.developer.siri'
|
136
|
+
capabilities << 'SiriKit'
|
137
|
+
when 'com.apple.security.application-groups'
|
138
|
+
capabilities << 'App Groups'
|
139
|
+
when 'com.apple.developer.associated-domains'
|
140
|
+
capabilities << 'Associated Domains'
|
141
|
+
when 'com.apple.developer.default-data-protection'
|
142
|
+
capabilities << 'Data Protection'
|
143
|
+
when 'com.apple.developer.networking.networkextension'
|
144
|
+
capabilities << 'Network Extensions'
|
145
|
+
when 'com.apple.developer.networking.vpn.api'
|
146
|
+
capabilities << 'Personal VPN'
|
147
|
+
when 'com.apple.developer.healthkit', 'com.apple.developer.healthkit.access'
|
148
|
+
capabilities << 'HealthKit' unless capabilities.include?('HealthKit')
|
149
|
+
when 'com.apple.developer.icloud-services', 'com.apple.developer.icloud-container-identifiers'
|
150
|
+
capabilities << 'iCloud' unless capabilities.include?('iCloud')
|
151
|
+
when 'com.apple.developer.in-app-payments'
|
152
|
+
capabilities << 'Apple Pay'
|
153
|
+
when 'com.apple.developer.homekit'
|
154
|
+
capabilities << 'HomeKit'
|
155
|
+
when 'com.apple.developer.user-fonts'
|
156
|
+
capabilities << 'Fonts'
|
157
|
+
when 'com.apple.developer.pass-type-identifiers'
|
158
|
+
capabilities << 'Wallet'
|
159
|
+
when 'inter-app-audio'
|
160
|
+
capabilities << 'Inter-App Audio'
|
161
|
+
when 'com.apple.developer.networking.multipath'
|
162
|
+
capabilities << 'Multipath'
|
163
|
+
when 'com.apple.developer.authentication-services.autofill-credential-provider'
|
164
|
+
capabilities << 'AutoFill Credential Provider'
|
165
|
+
when 'com.apple.developer.networking.wifi-info'
|
166
|
+
capabilities << 'Access WiFi Information'
|
167
|
+
when 'com.apple.external-accessory.wireless-configuration'
|
168
|
+
capabilities << 'Wireless Accessory Configuration'
|
169
|
+
when 'com.apple.developer.kernel.extended-virtual-addressing'
|
170
|
+
capabilities << 'Extended Virtual Address Space'
|
171
|
+
when 'com.apple.developer.nfc.readersession.formats'
|
172
|
+
capabilities << 'NFC Tag Reading'
|
173
|
+
when 'com.apple.developer.ClassKit-environment'
|
174
|
+
capabilities << 'ClassKit'
|
175
|
+
when 'com.apple.developer.networking.HotspotConfiguration'
|
176
|
+
capabilities << 'Hotspot'
|
177
|
+
when 'com.apple.developer.devicecheck.appattest-environment'
|
178
|
+
capabilities << 'App Attest'
|
179
|
+
when 'com.apple.developer.coremedia.hls.low-latency'
|
180
|
+
capabilities << 'Low Latency HLS'
|
181
|
+
when 'com.apple.developer.associated-domains.mdm-managed'
|
182
|
+
capabilities << 'MDM Managed Associated Domains'
|
183
|
+
# macOS Only
|
184
|
+
when 'com.apple.developer.maps'
|
185
|
+
capabilities << 'Maps'
|
186
|
+
when 'com.apple.developer.system-extension.install'
|
187
|
+
capabilities << 'System Extension'
|
188
|
+
when 'com.apple.developer.networking.custom-protocol'
|
189
|
+
capabilities << 'Custom Network Protocol'
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
capabilities
|
194
|
+
end
|
195
|
+
|
59
196
|
def [](key)
|
60
197
|
mobileprovision.try(:[], key.to_s)
|
61
198
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'app_info/ipa/framework'
|
4
|
+
|
5
|
+
module AppInfo
|
6
|
+
# iOS Plugin parser
|
7
|
+
class Plugin < Framework
|
8
|
+
extend Forwardable
|
9
|
+
|
10
|
+
def self.parse(path, name = 'PlugIns')
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def_delegators :info, :name
|
15
|
+
end
|
16
|
+
end
|
data/lib/app_info/version.rb
CHANGED
metadata
CHANGED
@@ -1,35 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: app-info
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- icyleaf
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: CFPropertyList
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 2.3.4
|
20
17
|
- - "<"
|
21
18
|
- !ruby/object:Gem::Version
|
22
19
|
version: 3.1.0
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 2.3.4
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: 2.3.4
|
30
27
|
- - "<"
|
31
28
|
- !ruby/object:Gem::Version
|
32
29
|
version: 3.1.0
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.3.4
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: image_size
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
version: '1.5'
|
40
40
|
- - "<"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '2.
|
42
|
+
version: '2.2'
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -49,7 +49,7 @@ dependencies:
|
|
49
49
|
version: '1.5'
|
50
50
|
- - "<"
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: '2.
|
52
|
+
version: '2.2'
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: pngdefry
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -116,16 +116,22 @@ dependencies:
|
|
116
116
|
name: uuidtools
|
117
117
|
requirement: !ruby/object:Gem::Requirement
|
118
118
|
requirements:
|
119
|
-
- - "
|
119
|
+
- - ">="
|
120
120
|
- !ruby/object:Gem::Version
|
121
121
|
version: 2.1.5
|
122
|
+
- - "<"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 2.3.0
|
122
125
|
type: :runtime
|
123
126
|
prerelease: false
|
124
127
|
version_requirements: !ruby/object:Gem::Requirement
|
125
128
|
requirements:
|
126
|
-
- - "
|
129
|
+
- - ">="
|
127
130
|
- !ruby/object:Gem::Version
|
128
131
|
version: 2.1.5
|
132
|
+
- - "<"
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: 2.3.0
|
129
135
|
- !ruby/object:Gem::Dependency
|
130
136
|
name: bundler
|
131
137
|
requirement: !ruby/object:Gem::Requirement
|
@@ -193,8 +199,10 @@ files:
|
|
193
199
|
- lib/app_info/core_ext/object/try.rb
|
194
200
|
- lib/app_info/dsym.rb
|
195
201
|
- lib/app_info/ipa.rb
|
202
|
+
- lib/app_info/ipa/framework.rb
|
196
203
|
- lib/app_info/ipa/info_plist.rb
|
197
204
|
- lib/app_info/ipa/mobile_provision.rb
|
205
|
+
- lib/app_info/ipa/plugin.rb
|
198
206
|
- lib/app_info/proguard.rb
|
199
207
|
- lib/app_info/util.rb
|
200
208
|
- lib/app_info/version.rb
|
@@ -202,7 +210,7 @@ homepage: http://github.com/icyleaf/app-info
|
|
202
210
|
licenses:
|
203
211
|
- MIT
|
204
212
|
metadata: {}
|
205
|
-
post_install_message:
|
213
|
+
post_install_message:
|
206
214
|
rdoc_options: []
|
207
215
|
require_paths:
|
208
216
|
- lib
|
@@ -217,8 +225,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
217
225
|
- !ruby/object:Gem::Version
|
218
226
|
version: '0'
|
219
227
|
requirements: []
|
220
|
-
rubygems_version: 3.
|
221
|
-
signing_key:
|
228
|
+
rubygems_version: 3.1.4
|
229
|
+
signing_key:
|
222
230
|
specification_version: 4
|
223
231
|
summary: Teardown tool for mobile app(ipa/apk) and dSYM file, analysis metedata like
|
224
232
|
version, name, icon
|