app-info 2.8.3 → 2.8.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bdaf1f27e2e99bcb2f956e47cec30e4b24f22222e592e253a1a35329ae09ddb1
4
- data.tar.gz: deee5130996188ef10b5d61277b434b4abfcec1739f519332576610e6ab9f3ef
3
+ metadata.gz: f9406b7552e0bea00883446b85250398c7818120de74d0d6d3545d7b9b0d7ef6
4
+ data.tar.gz: a99bb2c55b4214ad72f8e6cf2e720199902fb37ad174b71bb5f9f4d529ba81a3
5
5
  SHA512:
6
- metadata.gz: a4a25969b08c4badb8120341af2596f3bf5e0ef9170298e182ef8536ad14d843bf8469019ce3cd2753b5c4c5b8ba215b5ea1eb85b1b8922309788637e83d62e6
7
- data.tar.gz: 126e88b55bcb3bfa091d96993a1dd18f919dd75f4e77b3927313b26b587892e1eae7317f54ad22c0ad54ffefc6efdb3f142b525b0708497a2a818fd4b4e4be64
6
+ metadata.gz: '018d93bb67f489d4908f0701285ee6c177a627f3b5c602e90c24629da25f91fc2f5cb9b091675d471741361211289b71ed7c1ab51402f30cea843126c9c6271c'
7
+ data.tar.gz: 5eecd5818b12032898d33a14f74c43592d120ab751b2e4393591b0fd81e4df5cebb94342111478392fd84c5963f762de0383873c547176f74d546f7bfb7b8013
@@ -12,11 +12,11 @@ jobs:
12
12
  strategy:
13
13
  fail-fast: false
14
14
  matrix:
15
- ruby: [ ruby-2.5, ruby-2.6, ruby-2.7, ruby-3.0 ]
15
+ ruby: [ ruby-2.5, ruby-2.6, ruby-2.7, ruby-3.0, ruby-3.1, ruby-3.2 ]
16
16
  os: [ ubuntu-latest ]
17
17
 
18
18
  steps:
19
- - uses: actions/checkout@v2
19
+ - uses: actions/checkout@v3
20
20
 
21
21
  - uses: ruby/setup-ruby@v1
22
22
  with:
@@ -30,11 +30,11 @@ jobs:
30
30
  runs-on: ubuntu-latest
31
31
 
32
32
  steps:
33
- - uses: actions/checkout@v2
33
+ - uses: actions/checkout@v3
34
34
 
35
35
  - uses: ruby/setup-ruby@v1
36
36
  with:
37
- ruby-version: 2.7
37
+ ruby-version: 3.0
38
38
  bundler-cache: true
39
39
 
40
40
  - name: bundle exec rubocop
@@ -0,0 +1,15 @@
1
+ name: Create Release
2
+ on:
3
+ push:
4
+ tags:
5
+ - "v*"
6
+
7
+ jobs:
8
+ create:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - name: Create Release
12
+ uses: softprops/action-gh-release@v1
13
+ if: startsWith(github.ref, 'refs/tags/')
14
+ with:
15
+ files: CHANGELOG.md
data/CHANGELOG.md CHANGED
@@ -9,6 +9,19 @@ 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.8.5] (2023-03-16)
13
+
14
+ ### Fixed
15
+
16
+ - Sync the latest appt2 proto files to parse Android SDK 31+ for aab parser. [#51](https://github.com/icyleaf/app_info/issues/51) (thanks @[UpBra](https://github.com/UpBra))
17
+
18
+ ## [2.8.4] (2023-03-09)
19
+
20
+ ### Fixed
21
+
22
+ - Force android device return as boolean for aab parser.
23
+ - Handle string resources referencing other resources for apk parser.
24
+
12
25
  ## [2.8.3] (2022-06-27)
13
26
 
14
27
  ### Fixed
@@ -234,7 +247,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
234
247
 
235
248
  - Updated dependency of CFPropertly list be a range between 2.3.4. (thanks @[cschroed](https://github.com/cschroed))
236
249
 
237
- [Unreleased]: https://github.com/icyleaf/app-info/compare/v2.8.3..HEAD
250
+ [Unreleased]: https://github.com/icyleaf/app-info/compare/v2.8.5..HEAD
251
+ [2.8.5]: https://github.com/icyleaf/app-info/compare/v2.8.4...v2.8.5
252
+ [2.8.4]: https://github.com/icyleaf/app-info/compare/v2.8.3...v2.8.4
238
253
  [2.8.3]: https://github.com/icyleaf/app-info/compare/v2.8.2...v2.8.3
239
254
  [2.8.2]: https://github.com/icyleaf/app-info/compare/v2.8.1...v2.8.2
240
255
  [2.8.1]: https://github.com/icyleaf/app-info/compare/v2.8.0...v2.8.1
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # app_info
2
2
 
3
3
  [![Language](https://img.shields.io/badge/ruby-2.5+-701516.svg)](.github/workflows/ci.yml)
4
- [![Build Status](https://img.shields.io/github/workflow/status/icyleaf/app_info/CI)](https://github.com/icyleaf/app_info/actions/workflows/ci.yml)
4
+ [![Build Status](https://img.shields.io/github/actions/workflow/status/icyleaf/app_info/ci.yml)](https://github.com/icyleaf/app_info/actions/workflows/ci.yml)
5
5
  [![Gem version](https://img.shields.io/gem/v/app-info.svg?style=flat)](https://rubygems.org/gems/app_info)
6
6
  [![License](https://img.shields.io/badge/license-MIT-red.svg?style=flat)](LICENSE)
7
7
 
@@ -12,11 +12,23 @@ Teardown tool for mobile app (ipa, apk and aab file), macOS app and dSYM.zip fil
12
12
  - Android file
13
13
  - `.apk`
14
14
  - `.aab` (Androld App Bundle)
15
- - iOS ipa file
15
+ - iOS file
16
+ - `.ipa`
16
17
  - `Info.plist` file
17
18
  - `.mobileprovision`/`.provisionprofile` file
18
19
  - Zipped macOS App file
20
+ - `.app.zip`
19
21
  - Zipped dSYMs file
22
+ - `.dSYM.zip`
23
+
24
+ <hr />
25
+
26
+ ![Zealot Showcase](https://github.com/tryzealot/docs/blob/main/static/img/showcase-light.png#gh-light-mode-only)
27
+ ![Zealot Showcase](https://github.com/tryzealot/docs/blob/main/static/img/showcase-dark.png#gh-dark-mode-only)
28
+
29
+ [Zealot](https://zealot.ews.im/docs/user-guide/) is a self-hosted Beta App Distribution for Android, iOS and macOS apps. app_info it the core inside.
30
+
31
+ <hr />
20
32
 
21
33
  ## Installation
22
34
 
data/app_info.gemspec CHANGED
@@ -21,13 +21,13 @@ Gem::Specification.new do |spec|
21
21
  spec.required_ruby_version = '>= 2.5'
22
22
 
23
23
  spec.add_dependency 'CFPropertyList', '< 3.1.0', '>= 2.3.4'
24
- spec.add_dependency 'image_size', '>= 1.5', '< 3.1'
24
+ spec.add_dependency 'image_size', '>= 1.5', '< 3.3'
25
25
  spec.add_dependency 'ruby-macho', '>= 1.4', '< 4'
26
- spec.add_dependency 'android_parser', '~> 2.5.0'
26
+ spec.add_dependency 'android_parser', '~> 2.5.1'
27
27
  spec.add_dependency 'rubyzip', '>= 1.2', '< 3.0'
28
28
  spec.add_dependency 'uuidtools', '>= 2.1.5', '< 2.3.0'
29
29
  spec.add_dependency 'icns', '~> 0.2.0'
30
- spec.add_dependency 'google-protobuf', '>= 3.19.4', '< 3.22.0'
30
+ spec.add_dependency 'google-protobuf', '>= 3.19.4', '< 3.23.0'
31
31
 
32
32
  spec.add_development_dependency 'bundler', '>= 1.12'
33
33
  spec.add_development_dependency 'rake', '>= 10.0'
data/lib/app_info/aab.rb CHANGED
@@ -79,15 +79,15 @@ module AppInfo
79
79
  # end
80
80
 
81
81
  def wear?
82
- use_features&.include?('android.hardware.type.watch')
82
+ !!use_features&.include?('android.hardware.type.watch')
83
83
  end
84
84
 
85
85
  def tv?
86
- use_features&.include?('android.software.leanback')
86
+ !!use_features&.include?('android.software.leanback')
87
87
  end
88
88
 
89
89
  def automotive?
90
- use_features&.include?('android.hardware.type.automotive')
90
+ !!use_features&.include?('android.hardware.type.automotive')
91
91
  end
92
92
 
93
93
  def min_sdk_version
@@ -10,4 +10,6 @@ module AppInfo
10
10
  class NotFoundError < Error; end
11
11
 
12
12
  class UnkownFileTypeError < Error; end
13
+
14
+ class ProtobufParseError < Error; end
13
15
  end
@@ -85,9 +85,7 @@ module AppInfo
85
85
  def tempdir(file, prefix:)
86
86
  dest_path ||= File.join(File.dirname(file), prefix)
87
87
  dest_file = File.join(dest_path, File.basename(file))
88
-
89
- Dir.mkdir(dest_path, 0_700) unless Dir.exist?(dest_path)
90
-
88
+ FileUtils.mkdir_p(dest_path, mode: 0_700)
91
89
  dest_file
92
90
  end
93
91
  end
@@ -44,7 +44,7 @@ module AppInfo
44
44
  end
45
45
 
46
46
  def png?
47
- PNG_HEADER == header.bytes
47
+ header.bytes == PNG_HEADER
48
48
  end
49
49
 
50
50
  def [](offset, length)
@@ -17,7 +17,7 @@ module AppInfo
17
17
  private
18
18
 
19
19
  def parse(_)
20
- raise 'not implemented'
20
+ raise ProtobufParseError, 'not implemented'
21
21
  end
22
22
  end
23
23
 
@@ -152,6 +152,8 @@ module AppInfo
152
152
 
153
153
  def intent_filters(search: nil)
154
154
  activities.each_with_object([]) do |activity, obj|
155
+ next unless activity.respond_to?(:intent_filter)
156
+
155
157
  intent_filters = activity.intent_filter
156
158
  next if intent_filters.nil? || intent_filters&.empty?
157
159
 
@@ -182,6 +184,8 @@ module AppInfo
182
184
  CATEGORY_BROWSABLE = 'android.intent.category.BROWSABLE'
183
185
 
184
186
  def deep_links?
187
+ return unless respond_to?(:data)
188
+
185
189
  browsable? && data.any? { |d| DEEP_LINK_SCHEMES.include?(d.scheme) }
186
190
  end
187
191
 
@@ -193,6 +197,12 @@ module AppInfo
193
197
  .uniq
194
198
  end
195
199
 
200
+ def schemes?
201
+ return unless respond_to?(:data)
202
+
203
+ browsable? && data.any? { |d| !DEEP_LINK_SCHEMES.include?(d.scheme) }
204
+ end
205
+
196
206
  def schemes
197
207
  return unless schemes?
198
208
 
@@ -201,23 +211,21 @@ module AppInfo
201
211
  .uniq
202
212
  end
203
213
 
204
- def schemes?
205
- browsable? && data.any? { |d| !DEEP_LINK_SCHEMES.include?(d.scheme) }
206
- end
207
-
208
214
  def browsable?
209
215
  exist?(CATEGORY_BROWSABLE)
210
216
  end
211
217
 
212
218
  def exist?(name, type: nil)
213
219
  if type.to_s.empty? && !name.start_with?('android.intent.')
214
- raise 'Fill type or use correct name'
220
+ raise ProtobufParseError, 'Not found intent type'
215
221
  end
216
222
 
217
223
  type ||= name.split('.')[2]
218
- raise 'Not found type' unless TYPES.include?(type)
224
+ raise ProtobufParseError, 'Not found intent type' unless TYPES.include?(type)
225
+
226
+ return false unless intent = send(type.to_sym)
219
227
 
220
- values = send(type.to_sym).select { |e| e.name == name }
228
+ values = intent.select { |e| e.name == name }
221
229
  values.empty? ? false : values
222
230
  end
223
231
  end
@@ -3,7 +3,7 @@
3
3
  ## Convert to ruby model
4
4
 
5
5
  ```bash
6
- cd app_info/lib/app_info/abb/proto
6
+ cd lib/app_info/protobuf/models
7
7
 
8
8
  protoc --ruby_out=. Resources.proto
9
9
  protoc --ruby_out=. Configuration.proto
@@ -132,6 +132,11 @@ message Visibility {
132
132
 
133
133
  // The comment associated with the <public> tag.
134
134
  string comment = 3;
135
+
136
+ // Indicates that the resource id may change across builds and that the public R.java identifier
137
+ // for this resource should not be final. This is set to `true` for resources in `staging-group`
138
+ // tags.
139
+ bool staged_api = 4;
135
140
  }
136
141
 
137
142
  // Whether a resource comes from a compile-time overlay and is explicitly allowed to not overlay an
@@ -185,6 +190,12 @@ message OverlayableItem {
185
190
  uint32 overlayable_idx = 4;
186
191
  }
187
192
 
193
+ // The staged resource ID definition of a finalized resource.
194
+ message StagedId {
195
+ Source source = 1;
196
+ uint32 staged_id = 2;
197
+ }
198
+
188
199
  // An entry ID in the range [0x0000, 0xffff].
189
200
  message EntryId {
190
201
  uint32 id = 1;
@@ -217,6 +228,9 @@ message Entry {
217
228
  // The set of values defined for this entry, each corresponding to a different
218
229
  // configuration/variant.
219
230
  repeated ConfigValue config_value = 6;
231
+
232
+ // The staged resource ID of this finalized resource.
233
+ StagedId staged_id = 7;
220
234
  }
221
235
 
222
236
  // A Configuration/Value pair.
@@ -268,6 +282,7 @@ message CompoundValue {
268
282
  Styleable styleable = 3;
269
283
  Array array = 4;
270
284
  Plural plural = 5;
285
+ MacroBody macro = 6;
271
286
  }
272
287
  }
273
288
 
@@ -299,6 +314,13 @@ message Reference {
299
314
 
300
315
  // Whether this reference is dynamic.
301
316
  Boolean is_dynamic = 5;
317
+
318
+ // The type flags used when compiling the reference. Used for substituting the contents of macros.
319
+ uint32 type_flags = 6;
320
+
321
+ // Whether raw string values would have been accepted in place of this reference definition. Used
322
+ // for substituting the contents of macros.
323
+ bool allow_raw = 7;
302
324
  }
303
325
 
304
326
  // A value that represents an ID. This is just a placeholder, as ID values are used to occupy a
@@ -586,3 +608,32 @@ message XmlAttribute {
586
608
  // The optional interpreted/compiled version of the `value` string.
587
609
  Item compiled_item = 6;
588
610
  }
611
+
612
+ message MacroBody {
613
+ string raw_string = 1;
614
+ StyleString style_string = 2;
615
+ repeated UntranslatableSection untranslatable_sections = 3;
616
+ repeated NamespaceAlias namespace_stack = 4;
617
+ SourcePosition source = 5;
618
+ }
619
+
620
+ message NamespaceAlias {
621
+ string prefix = 1;
622
+ string package_name = 2;
623
+ bool is_private = 3;
624
+ }
625
+
626
+ message StyleString {
627
+ message Span {
628
+ string name = 1;
629
+ uint32 start_index = 2;
630
+ uint32 end_index = 3;
631
+ }
632
+ string str = 1;
633
+ repeated Span spans = 2;
634
+ }
635
+
636
+ message UntranslatableSection {
637
+ uint64 start_index = 1;
638
+ uint64 end_index = 2;
639
+ }
@@ -47,6 +47,7 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
47
47
  optional :level, :enum, 1, "aapt.pb.Visibility.Level"
48
48
  optional :source, :message, 2, "aapt.pb.Source"
49
49
  optional :comment, :string, 3
50
+ optional :staged_api, :bool, 4
50
51
  end
51
52
  add_enum "aapt.pb.Visibility.Level" do
52
53
  value :UNKNOWN, 0
@@ -80,6 +81,10 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
80
81
  value :ACTOR, 8
81
82
  value :CONFIG_SIGNATURE, 9
82
83
  end
84
+ add_message "aapt.pb.StagedId" do
85
+ optional :source, :message, 1, "aapt.pb.Source"
86
+ optional :staged_id, :uint32, 2
87
+ end
83
88
  add_message "aapt.pb.EntryId" do
84
89
  optional :id, :uint32, 1
85
90
  end
@@ -90,6 +95,7 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
90
95
  optional :allow_new, :message, 4, "aapt.pb.AllowNew"
91
96
  optional :overlayable_item, :message, 5, "aapt.pb.OverlayableItem"
92
97
  repeated :config_value, :message, 6, "aapt.pb.ConfigValue"
98
+ optional :staged_id, :message, 7, "aapt.pb.StagedId"
93
99
  end
94
100
  add_message "aapt.pb.ConfigValue" do
95
101
  optional :config, :message, 1, "aapt.pb.Configuration"
@@ -122,6 +128,7 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
122
128
  optional :styleable, :message, 3, "aapt.pb.Styleable"
123
129
  optional :array, :message, 4, "aapt.pb.Array"
124
130
  optional :plural, :message, 5, "aapt.pb.Plural"
131
+ optional :macro, :message, 6, "aapt.pb.MacroBody"
125
132
  end
126
133
  end
127
134
  add_message "aapt.pb.Boolean" do
@@ -133,6 +140,8 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
133
140
  optional :name, :string, 3
134
141
  optional :private, :bool, 4
135
142
  optional :is_dynamic, :message, 5, "aapt.pb.Boolean"
143
+ optional :type_flags, :uint32, 6
144
+ optional :allow_raw, :bool, 7
136
145
  end
137
146
  add_enum "aapt.pb.Reference.Type" do
138
147
  value :REFERENCE, 0
@@ -285,6 +294,31 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
285
294
  optional :resource_id, :uint32, 5
286
295
  optional :compiled_item, :message, 6, "aapt.pb.Item"
287
296
  end
297
+ add_message "aapt.pb.MacroBody" do
298
+ optional :raw_string, :string, 1
299
+ optional :style_string, :message, 2, "aapt.pb.StyleString"
300
+ repeated :untranslatable_sections, :message, 3, "aapt.pb.UntranslatableSection"
301
+ repeated :namespace_stack, :message, 4, "aapt.pb.NamespaceAlias"
302
+ optional :source, :message, 5, "aapt.pb.SourcePosition"
303
+ end
304
+ add_message "aapt.pb.NamespaceAlias" do
305
+ optional :prefix, :string, 1
306
+ optional :package_name, :string, 2
307
+ optional :is_private, :bool, 3
308
+ end
309
+ add_message "aapt.pb.StyleString" do
310
+ optional :str, :string, 1
311
+ repeated :spans, :message, 2, "aapt.pb.StyleString.Span"
312
+ end
313
+ add_message "aapt.pb.StyleString.Span" do
314
+ optional :name, :string, 1
315
+ optional :start_index, :uint32, 2
316
+ optional :end_index, :uint32, 3
317
+ end
318
+ add_message "aapt.pb.UntranslatableSection" do
319
+ optional :start_index, :uint64, 1
320
+ optional :end_index, :uint64, 2
321
+ end
288
322
  end
289
323
  end
290
324
 
@@ -305,6 +339,7 @@ module Aapt
305
339
  Overlayable = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("aapt.pb.Overlayable").msgclass
306
340
  OverlayableItem = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("aapt.pb.OverlayableItem").msgclass
307
341
  OverlayableItem::Policy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("aapt.pb.OverlayableItem.Policy").enummodule
342
+ StagedId = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("aapt.pb.StagedId").msgclass
308
343
  EntryId = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("aapt.pb.EntryId").msgclass
309
344
  Entry = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("aapt.pb.Entry").msgclass
310
345
  ConfigValue = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("aapt.pb.ConfigValue").msgclass
@@ -340,5 +375,10 @@ module Aapt
340
375
  XmlElement = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("aapt.pb.XmlElement").msgclass
341
376
  XmlNamespace = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("aapt.pb.XmlNamespace").msgclass
342
377
  XmlAttribute = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("aapt.pb.XmlAttribute").msgclass
378
+ MacroBody = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("aapt.pb.MacroBody").msgclass
379
+ NamespaceAlias = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("aapt.pb.NamespaceAlias").msgclass
380
+ StyleString = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("aapt.pb.StyleString").msgclass
381
+ StyleString::Span = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("aapt.pb.StyleString.Span").msgclass
382
+ UntranslatableSection = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("aapt.pb.UntranslatableSection").msgclass
343
383
  end
344
384
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AppInfo
4
- VERSION = '2.8.3'
4
+ VERSION = '2.8.5'
5
5
  end
data/lib/app_info.rb CHANGED
@@ -26,6 +26,8 @@ Zip.warn_invalid_date = false
26
26
  # AppInfo Module
27
27
  module AppInfo
28
28
  class << self
29
+ UNKNOWN_FORMAT = :unkown
30
+
29
31
  # Get a new parser for automatic
30
32
  def parse(file)
31
33
  raise NotFoundError, file unless File.exist?(file)
@@ -44,6 +46,10 @@ module AppInfo
44
46
  end
45
47
  alias dump parse
46
48
 
49
+ def parse?(file)
50
+ file_type(file) != UNKNOWN_FORMAT
51
+ end
52
+
47
53
  # Detect file type by read file header
48
54
  #
49
55
  # TODO: This can be better solution, if anyone knows, tell me please.
@@ -55,7 +61,7 @@ module AppInfo
55
61
  detect_mobileprovision(header_hex)
56
62
  end
57
63
 
58
- type || :unkown
64
+ type || UNKNOWN_FORMAT
59
65
  end
60
66
 
61
67
  private
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: 2.8.3
4
+ version: 2.8.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - icyleaf
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-27 00:00:00.000000000 Z
11
+ date: 2023-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: CFPropertyList
@@ -39,7 +39,7 @@ dependencies:
39
39
  version: '1.5'
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '3.1'
42
+ version: '3.3'
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: '3.1'
52
+ version: '3.3'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: ruby-macho
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -76,14 +76,14 @@ dependencies:
76
76
  requirements:
77
77
  - - "~>"
78
78
  - !ruby/object:Gem::Version
79
- version: 2.5.0
79
+ version: 2.5.1
80
80
  type: :runtime
81
81
  prerelease: false
82
82
  version_requirements: !ruby/object:Gem::Requirement
83
83
  requirements:
84
84
  - - "~>"
85
85
  - !ruby/object:Gem::Version
86
- version: 2.5.0
86
+ version: 2.5.1
87
87
  - !ruby/object:Gem::Dependency
88
88
  name: rubyzip
89
89
  requirement: !ruby/object:Gem::Requirement
@@ -147,7 +147,7 @@ dependencies:
147
147
  version: 3.19.4
148
148
  - - "<"
149
149
  - !ruby/object:Gem::Version
150
- version: 3.22.0
150
+ version: 3.23.0
151
151
  type: :runtime
152
152
  prerelease: false
153
153
  version_requirements: !ruby/object:Gem::Requirement
@@ -157,7 +157,7 @@ dependencies:
157
157
  version: 3.19.4
158
158
  - - "<"
159
159
  - !ruby/object:Gem::Version
160
- version: 3.22.0
160
+ version: 3.23.0
161
161
  - !ruby/object:Gem::Dependency
162
162
  name: bundler
163
163
  requirement: !ruby/object:Gem::Requirement
@@ -225,6 +225,7 @@ extra_rdoc_files: []
225
225
  files:
226
226
  - ".github/dependabot.yml"
227
227
  - ".github/workflows/ci.yml"
228
+ - ".github/workflows/create_release.yml"
228
229
  - ".gitignore"
229
230
  - ".rspec"
230
231
  - ".rubocop.yml"
@@ -282,7 +283,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
282
283
  - !ruby/object:Gem::Version
283
284
  version: '0'
284
285
  requirements: []
285
- rubygems_version: 3.2.32
286
+ rubygems_version: 3.4.1
286
287
  signing_key:
287
288
  specification_version: 4
288
289
  summary: Teardown tool for mobile app(ipa/apk) and dSYM file, analysis metedata like