app-info 2.8.2 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +12 -7
  3. data/.github/workflows/ci.yml +7 -5
  4. data/.github/workflows/create_release.yml +15 -0
  5. data/.rubocop.yml +33 -11
  6. data/CHANGELOG.md +107 -1
  7. data/Gemfile +10 -5
  8. data/README.md +82 -15
  9. data/Rakefile +11 -0
  10. data/app_info.gemspec +14 -5
  11. data/lib/app_info/aab.rb +76 -110
  12. data/lib/app_info/android/signature.rb +114 -0
  13. data/lib/app_info/android/signatures/base.rb +53 -0
  14. data/lib/app_info/android/signatures/info.rb +158 -0
  15. data/lib/app_info/android/signatures/v1.rb +63 -0
  16. data/lib/app_info/android/signatures/v2.rb +121 -0
  17. data/lib/app_info/android/signatures/v3.rb +131 -0
  18. data/lib/app_info/android/signatures/v4.rb +18 -0
  19. data/lib/app_info/android.rb +181 -0
  20. data/lib/app_info/apk.rb +77 -112
  21. data/lib/app_info/apple.rb +192 -0
  22. data/lib/app_info/certificate.rb +176 -0
  23. data/lib/app_info/const.rb +76 -0
  24. data/lib/app_info/core_ext/object/try.rb +3 -1
  25. data/lib/app_info/core_ext/string/inflector.rb +2 -0
  26. data/lib/app_info/dsym/debug_info.rb +81 -0
  27. data/lib/app_info/dsym/macho.rb +62 -0
  28. data/lib/app_info/dsym.rb +35 -135
  29. data/lib/app_info/error.rb +3 -1
  30. data/lib/app_info/file.rb +49 -0
  31. data/lib/app_info/helper/archive.rb +37 -0
  32. data/lib/app_info/helper/file_size.rb +25 -0
  33. data/lib/app_info/helper/generate_class.rb +29 -0
  34. data/lib/app_info/helper/protobuf.rb +12 -0
  35. data/lib/app_info/helper/signatures.rb +229 -0
  36. data/lib/app_info/helper.rb +5 -128
  37. data/lib/app_info/info_plist.rb +66 -29
  38. data/lib/app_info/ipa/framework.rb +4 -4
  39. data/lib/app_info/ipa.rb +61 -135
  40. data/lib/app_info/macos.rb +54 -102
  41. data/lib/app_info/mobile_provision.rb +66 -48
  42. data/lib/app_info/pe.rb +322 -0
  43. data/lib/app_info/png_uncrush.rb +25 -5
  44. data/lib/app_info/proguard.rb +39 -22
  45. data/lib/app_info/protobuf/manifest.rb +22 -11
  46. data/lib/app_info/protobuf/models/Configuration_pb.rb +1 -0
  47. data/lib/app_info/protobuf/models/README.md +8 -1
  48. data/lib/app_info/protobuf/models/Resources.proto +51 -0
  49. data/lib/app_info/protobuf/models/Resources_pb.rb +42 -0
  50. data/lib/app_info/protobuf/resources.rb +5 -5
  51. data/lib/app_info/version.rb +1 -1
  52. data/lib/app_info.rb +93 -43
  53. metadata +57 -37
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a3da34af686efd6aacd4b80fbb8b49a9c1dd38f101075a4950214ef3bc83314b
4
- data.tar.gz: 0c0359085eca517924e26b89e649ce6ae42683532676dc0f14613daccab3686b
3
+ metadata.gz: 77ca2c693d75ac261a17cb20e06e643a5de75a4d9eb15b1b5f83a151780368df
4
+ data.tar.gz: e9d70889b047b04b60f50a70a20d9651145486c855e059999a8037828e53e9a6
5
5
  SHA512:
6
- metadata.gz: d9fa46b089aae06843662fd5f5780012f34b0913a231183e18a7a8bdec227012069c1e0d11ae613460f7b5b73cd76c7039e46e85215b6d103360be9d05391bd6
7
- data.tar.gz: a2f9e51a8180b6baac585fd5f5e02528ddd46063477e1fcb3738967e0738b56aab902096694483c834473f17cf3e229d4241a62351297c76243383979b61da4b
6
+ metadata.gz: c186bac4cab303067045830362c0f95deefc7c2488375f8dcb2113ea1bbc019982d645f4a29c44ab946e55c238c7e4820d0f9c1f443346143f4ed4183ebcaf32
7
+ data.tar.gz: 3755af0041ef4068a6e28399d77c17744fe7f76cf321aca94e719b19fcf1357ad64a06a63b191a9960a347423d874355dfda6995208a0ae992769de5635e2582
@@ -1,9 +1,14 @@
1
1
  version: 2
2
2
  updates:
3
- - package-ecosystem: bundler
4
- directory: "/"
5
- schedule:
6
- interval: daily
7
- time: "21:00"
8
- timezone: Asia/Shanghai
9
- open-pull-requests-limit: 10
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ time: "21:00"
8
+ timezone: Asia/Shanghai
9
+ open-pull-requests-limit: 10
10
+
11
+ - package-ecosystem: "github-actions"
12
+ directory: "/"
13
+ schedule:
14
+ interval: "daily"
@@ -1,8 +1,10 @@
1
1
  name: CI
2
2
  on:
3
3
  push:
4
+ paths-ignore:
5
+ - '*.md'
4
6
  branches:
5
- - master
7
+ - main
6
8
  pull_request:
7
9
 
8
10
  jobs:
@@ -12,11 +14,11 @@ jobs:
12
14
  strategy:
13
15
  fail-fast: false
14
16
  matrix:
15
- ruby: [ ruby-2.5, ruby-2.6, ruby-2.7, ruby-3.0 ]
17
+ ruby: [ ruby-2.5, ruby-2.6, ruby-2.7, ruby-3.0, ruby-3.1, ruby-3.2 ]
16
18
  os: [ ubuntu-latest ]
17
19
 
18
20
  steps:
19
- - uses: actions/checkout@v2
21
+ - uses: actions/checkout@v3
20
22
 
21
23
  - uses: ruby/setup-ruby@v1
22
24
  with:
@@ -30,11 +32,11 @@ jobs:
30
32
  runs-on: ubuntu-latest
31
33
 
32
34
  steps:
33
- - uses: actions/checkout@v2
35
+ - uses: actions/checkout@v3
34
36
 
35
37
  - uses: ruby/setup-ruby@v1
36
38
  with:
37
- ruby-version: 2.7
39
+ ruby-version: 3.0
38
40
  bundler-cache: true
39
41
 
40
42
  - 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/.rubocop.yml CHANGED
@@ -27,6 +27,24 @@ AllCops:
27
27
  - 'lib/app_info/protobuf/models/*_pb.rb'
28
28
  - 'main.rb'
29
29
 
30
+ Layout/LineLength:
31
+ Max: 100
32
+ Exclude:
33
+ - 'lib/app_info/helper/signatures.rb'
34
+ - 'lib/app_info/android/signatures/info.rb'
35
+ - 'lib/app_info/apk.rb'
36
+
37
+ Lint/AssignmentInCondition:
38
+ Enabled: false
39
+
40
+ Lint/UnusedMethodArgument:
41
+ Exclude:
42
+ - 'lib/app_info/file.rb'
43
+
44
+ Lint/UselessAssignment:
45
+ Exclude:
46
+ - 'lib/app_info/android/signatures/v3.rb'
47
+
30
48
  Metrics/AbcSize:
31
49
  Max: 100
32
50
 
@@ -36,13 +54,15 @@ Metrics/BlockLength:
36
54
  - 'lib/app_info/mobile_provision.rb'
37
55
 
38
56
  Metrics/MethodLength:
39
- Max: 20
57
+ Max: 30
40
58
  Exclude:
41
- - 'lib/app_info/png_uncrush.rb'
42
59
  - 'lib/app_info/mobile_provision.rb'
60
+ - 'lib/app_info/android/signatures/v2.rb'
61
+ - 'lib/app_info/android/signatures/v3.rb'
43
62
 
44
- Layout/LineLength:
45
- Max: 100
63
+ Metrics/ParameterLists:
64
+ Exclude:
65
+ - 'lib/app_info/helper/signatures.rb'
46
66
 
47
67
  Metrics/ClassLength:
48
68
  CountComments: false
@@ -54,12 +74,16 @@ Metrics/CyclomaticComplexity:
54
74
  Metrics/PerceivedComplexity:
55
75
  Max: 18
56
76
 
57
- Lint/AssignmentInCondition:
58
- Enabled: false
77
+ Metrics/BlockNesting:
78
+ Exclude:
79
+ - 'lib/app_info/dsym.rb'
59
80
 
60
81
  Style/Documentation:
61
82
  Enabled: false
62
83
 
84
+ Style/ClassAndModuleChildren:
85
+ Enabled: false
86
+
63
87
  Style/PerlBackrefs:
64
88
  Exclude:
65
89
  - 'lib/app_info/core_ext/string/inflector.rb'
@@ -67,10 +91,8 @@ Style/PerlBackrefs:
67
91
  Style/DocumentDynamicEvalDefinition:
68
92
  Enabled: false
69
93
 
70
- Metrics/BlockNesting:
71
- Exclude:
72
- - 'lib/app_info/dsym.rb'
73
-
74
-
75
94
  Style/SlicingWithRange:
76
95
  Enabled: false
96
+
97
+ Style/ClassVars:
98
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -9,6 +9,104 @@ 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
+ ## [3.0.0] (2023-04-18)
13
+
14
+ ### Added
15
+
16
+ - New Windows PE format parser. [#47](https://github.com/icyleaf/app_info/pull/47)
17
+ - Android parser add v2, v3 scheme signature support. [#55](https://github.com/icyleaf/app_info/pull/55]
18
+ - dSYM parer accept multi dSYM target in a zip file. [#56](https://github.com/icyleaf/app_info/pull/56)
19
+ - Better document for yardoc.
20
+ - Android parser `.icons` method add exclude param to filter icons.
21
+ - Add `.files` method to proguard parser.
22
+
23
+ ### Changed
24
+
25
+ - Add `AppInfo::File` base class for all parsers.
26
+ - Add `AppInfo::Certifiate` X509 certificate wrapped and apply in Android/MobileProvision.
27
+ - Re-organize categories `.platform` to `.manufacturer`, `.platform` and `.device` for all parsers.
28
+ - Remove `.sign_version` method in Android parser.
29
+ - Rename `.file_type` to `.format` method in all parers and return a `AppInfo::Format` type.
30
+ - Remove duplice `AppInfo::AndroidDevice` class.
31
+ - Remove `AppInfo::MobileProvision::DeveloperCertificate` class, use `AppInfo::Certifiate` instead.
32
+ - Deprecate `.signs` and `.certifiates` methods in Android parser, use `.signatures` instead.
33
+ - Deprecate `.developer_certs` method in MobileProvision parser, use `.certificates` instead.
34
+ - Change ExportType values type to symbol both IPA and macOS parsers. [#58](https://github.com/icyleaf/app_info/pull/58)
35
+
36
+ ## [3.0.0.beta4] (2023-04-11)
37
+
38
+ ### Added
39
+
40
+ - Add `.files` method to proguard parser.
41
+
42
+ ### Fixed
43
+
44
+ - Fail to extract dsym contents.
45
+
46
+ ## [3.0.0.beta3] (2023-04-05)
47
+
48
+ ### Added
49
+
50
+ - Android parser `.icons` method add exclude param to filter icons.
51
+
52
+ ### Changed
53
+
54
+ - Rename `.platform` to `.manufacturer`, rename `.opera_sytem` to `.platform` for all parsers.
55
+
56
+ ### Fixed
57
+
58
+ - Minor fixes.
59
+
60
+ ## [3.0.0.beta2] (2023-04-04)
61
+
62
+ ### Changed
63
+
64
+ - Re-organize categories `.platform`, `.opera_sytem` and `.device` for all parsers. [#58](https://github.com/icyleaf/app_info/pull/58)
65
+ - Change ExportType values type to symbol both IPA and macOS parsers. [#58](https://github.com/icyleaf/app_info/pull/58)
66
+
67
+ ## [3.0.0.beta1] (2023-04-04)
68
+
69
+ ### Added
70
+
71
+ - New Windows PE format parser. [#47](https://github.com/icyleaf/app_info/pull/47)
72
+ - Android parser add v2, v3 scheme signature support. [#55](https://github.com/icyleaf/app_info/pull/55]
73
+ - dSYM parer accept multi dSYM target in a zip file. [#56](https://github.com/icyleaf/app_info/pull/56)
74
+ - Better document for yardoc.
75
+
76
+ ### Changed
77
+
78
+ - Add `AppInfo::File` base class for all parsers.
79
+ - Add `AppInfo::Certifiate` X509 certificate wrapped and apply in Android/MobileProvision.
80
+ - Remove `.sign_version` method in Android parser.
81
+ - Rename `.file_type` to `.format` method in all parers and return a `AppInfo::Format` type.
82
+ - Remove duplice `AppInfo::AndroidDevice` class.
83
+ - Remove `AppInfo::MobileProvision::DeveloperCertificate` class, use `AppInfo::Certifiate` instead.
84
+ - Deprecate `.signs` and `.certifiates` methods in Android parser, use `.signatures` instead.
85
+ - Deprecate `.developer_certs` method in MobileProvision parser, use `.certificates` instead.
86
+
87
+ ### Fixed
88
+
89
+ - Fixed minor typo.
90
+
91
+ ## [2.8.5] (2023-03-16)
92
+
93
+ ### Fixed
94
+
95
+ - 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))
96
+
97
+ ## [2.8.4] (2023-03-09)
98
+
99
+ ### Fixed
100
+
101
+ - Force android device return as boolean for aab parser.
102
+ - Handle string resources referencing other resources for apk parser.
103
+
104
+ ## [2.8.3] (2022-06-27)
105
+
106
+ ### Fixed
107
+
108
+ - Fix properties in `AndroidManifest.xml` of aab file with null state prediction.
109
+
12
110
  ## [2.8.2] (2022-02-13)
13
111
 
14
112
  ### Fixed
@@ -228,7 +326,15 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
228
326
 
229
327
  - Updated dependency of CFPropertly list be a range between 2.3.4. (thanks @[cschroed](https://github.com/cschroed))
230
328
 
231
- [Unreleased]: https://github.com/icyleaf/app-info/compare/v2.8.2..HEAD
329
+ [Unreleased]: https://github.com/icyleaf/app-info/compare/v3.0.0..HEAD
330
+ [3.0.0]: https://github.com/icyleaf/app-info/compare/v2.8.5...v3.0.0
331
+ [3.0.0.beta4]: https://github.com/icyleaf/app-info/compare/v3.0.0.beta3...v3.0.0.beta4
332
+ [3.0.0.beta3]: https://github.com/icyleaf/app-info/compare/v3.0.0.beta2...v3.0.0.beta3
333
+ [3.0.0.beta2]: https://github.com/icyleaf/app-info/compare/v3.0.0.beta1...v3.0.0.beta2
334
+ [3.0.0.beta1]: https://github.com/icyleaf/app-info/compare/v2.8.5...v3.0.0.beta1
335
+ [2.8.5]: https://github.com/icyleaf/app-info/compare/v2.8.4...v2.8.5
336
+ [2.8.4]: https://github.com/icyleaf/app-info/compare/v2.8.3...v2.8.4
337
+ [2.8.3]: https://github.com/icyleaf/app-info/compare/v2.8.2...v2.8.3
232
338
  [2.8.2]: https://github.com/icyleaf/app-info/compare/v2.8.1...v2.8.2
233
339
  [2.8.1]: https://github.com/icyleaf/app-info/compare/v2.8.0...v2.8.1
234
340
  [2.8.0]: https://github.com/icyleaf/app-info/compare/v2.7.0...v2.8.0
data/Gemfile CHANGED
@@ -5,8 +5,13 @@ source 'https://rubygems.org'
5
5
  # Specify your gem's dependencies in app-info.gemspec
6
6
  gemspec
7
7
 
8
- # group :development do
9
- # gem 'awesome_print'
10
- # gem 'debase'
11
- # gem 'ruby-debug-ide'
12
- # end
8
+ group :development do
9
+ gem 'awesome_print'
10
+ gem 'debug' # For ruby 3.0+\
11
+ gem 'yard'
12
+ end
13
+
14
+ group :development, :test do
15
+ gem 'rspec'
16
+ gem 'rubocop'
17
+ end
data/README.md CHANGED
@@ -1,22 +1,38 @@
1
- # app_info
1
+ # app-info
2
2
 
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)
5
- [![Gem version](https://img.shields.io/gem/v/app-info.svg?style=flat)](https://rubygems.org/gems/app_info)
6
- [![License](https://img.shields.io/badge/license-MIT-red.svg?style=flat)](LICENSE)
3
+ [![Language](https://img.shields.io/badge/ruby-2.5+-701516)](.github/workflows/ci.yml)
4
+ [![Gem version](https://img.shields.io/gem/v/app-info?include_prereleases)](https://rubygems.org/gems/app-info)
5
+ [![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)
6
+ [![License](https://img.shields.io/github/license/icyleaf/app-info)](LICENSE)
7
7
 
8
- Teardown tool for mobile app (ipa, apk and aab file), macOS app and dSYM.zip file, analysis metedata like version, name, icon etc.
8
+ Teardown tool for mobile app (ipa, apk and aab file), macOS app, dSYM.zip file and Windows PE file.
9
+ Analysis metedata like version, name, icon etc.
9
10
 
10
11
  ## Support
11
12
 
12
13
  - Android file
13
14
  - `.apk`
14
15
  - `.aab` (Androld App Bundle)
15
- - iOS ipa file
16
+ - iOS file
17
+ - `.ipa`
16
18
  - `Info.plist` file
17
19
  - `.mobileprovision`/`.provisionprofile` file
18
- - Zipped macOS App file
19
- - Zipped dSYMs file
20
+ - macOS App file (archived by starnd pkzip format)
21
+ - `.app.zip`
22
+ - dSYMs file (archived by starnd pkzip format)
23
+ - `.dSYM.zip`
24
+ - Windows PE file
25
+ - `.exe`
26
+ - `.zip` (binary in a zip file)
27
+
28
+ <hr />
29
+
30
+ ![Zealot Showcase](https://github.com/tryzealot/docs/blob/main/static/img/showcase-light.png#gh-light-mode-only)
31
+ ![Zealot Showcase](https://github.com/tryzealot/docs/blob/main/static/img/showcase-dark.png#gh-dark-mode-only)
32
+
33
+ [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.
34
+
35
+ <hr />
20
36
 
21
37
  ## Installation
22
38
 
@@ -53,6 +69,8 @@ parser = AppInfo.parse('android.aab')
53
69
  parser = AppInfo.parse('u-u-i-d.mobileprovision')
54
70
  parser = AppInfo.parse('macOS.App.zip')
55
71
  parser = AppInfo.parse('App.dSYm.zip')
72
+ parser = AppInfo.parse('win.exe')
73
+ parser = AppInfo.parse('win.zip')
56
74
 
57
75
  # If detect file type failed, you can parse in other way
58
76
  parser = AppInfo::IPA.new('iphone.ipa')
@@ -62,6 +80,7 @@ parser = AppInfo::InfoPlist.new('Info.plist')
62
80
  parser = AppInfo::MobileProvision.new('uuid.mobileprovision')
63
81
  parser = AppInfo::Macos.new('App.dSYm.zip')
64
82
  parser = AppInfo::DSYM.new('App.dSYm.zip')
83
+ parser = AppInfo::PE.new('win.exe')
65
84
  ```
66
85
 
67
86
  ### iOS
@@ -208,12 +227,8 @@ android.deep_links
208
227
  android.schemes
209
228
  # => ['appinfo']
210
229
 
211
- # get sign list (only v1 sign)
212
- android.signs
213
- # => [...]
214
-
215
- # get certificate list (only v1 sign)
216
- android.certificates
230
+ # get v1-v3 scheme singature information (included unverified certificate and more)
231
+ android.signatures
217
232
  # => [...]
218
233
  ```
219
234
 
@@ -301,6 +316,58 @@ dsym.machos.each do |macho|
301
316
  end
302
317
  ```
303
318
 
319
+ ### Windows
320
+
321
+ Accept any PE format file, such like `.exe` or `.exe` binary fin a zip file.
322
+
323
+ ```ruby
324
+ win = AppInfo.parse('win.exe')
325
+
326
+ # get given file size
327
+ win.size
328
+ # => 3093823
329
+
330
+ # get given file size in human reable.
331
+ win.size(human_size: true)
332
+ # => 29 MB
333
+
334
+ # get given file size
335
+ win.binary_size
336
+ # => 20940
337
+
338
+ # get given file size in human reable.
339
+ win.size(human_size: true)
340
+ # => 20 MB
341
+
342
+ # get product name
343
+ win.name
344
+ # => AppInfo
345
+
346
+ # get app company name
347
+ win.company_name
348
+ # => EWS Studio
349
+
350
+ # get app product version (alias to release_version)
351
+ win.product_version
352
+ # => 1.0.0
353
+
354
+ # get app assembly version (alias to build_version)
355
+ win.assembly_version
356
+ # => 1.0.0
357
+
358
+ # detect architecture(s)
359
+ win.archs
360
+ # => x64
361
+
362
+ # get all imports files
363
+ win.imports
364
+ # => [KERNEL32.dll, ...]
365
+
366
+ # get app icons (bmp format image)
367
+ win.icons
368
+ # => [{:name=>"ICON.bmp", :file=>"{path}/ICON.bmp"}, :dimensions=>[64, 64]}, ...]
369
+ ```
370
+
304
371
  ## CLI Shell (Interactive console)
305
372
 
306
373
  It is possible to use this gem as a command line interface to parse mobile app:
data/Rakefile CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  $LOAD_PATH.unshift File.expand_path('lib', __dir__)
4
4
  require 'app_info'
5
+ require 'yard'
5
6
  require 'bundler/gem_tasks'
6
7
  require 'rspec/core/rake_task'
7
8
  require 'rubocop/rake_task'
@@ -9,3 +10,13 @@ require 'rubocop/rake_task'
9
10
  RSpec::Core::RakeTask.new(:spec)
10
11
 
11
12
  task default: :spec
13
+
14
+ task :doc do
15
+ YARD::Rake::YardocTask.new do |t|
16
+ t.files = ['lib/**/*.rb', 'README.md', 'LICENSE']
17
+ # t.options = ['--any', '--extra', '--opts'] # optional
18
+ # t.stats_options = ['--list-undoc'] # optional
19
+ end
20
+ end
21
+
22
+
data/app_info.gemspec CHANGED
@@ -21,16 +21,25 @@ 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.6.0'
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'
30
+ spec.add_dependency 'pedump', '~> 0.6.2'
31
+ spec.add_dependency 'google-protobuf', '>= 3.19.4', '< 3.23.0'
31
32
 
32
33
  spec.add_development_dependency 'bundler', '>= 1.12'
33
34
  spec.add_development_dependency 'rake', '>= 10.0'
34
- spec.add_development_dependency 'rspec', '~> 3.0'
35
- spec.add_development_dependency 'rubocop', '~> 1.19'
35
+
36
+ spec.post_install_message = <<~ENDBANNER
37
+ AppInfo 3.0 is coming!
38
+ **********************
39
+ The public API of some AppInfo classes has been changed.
40
+
41
+ Please ensure that your Gemfiles and .gemspecs are suitably restrictive
42
+ to avoid an unexpected breakage when 3.0 is released (e.g. ~> 2.8.5).
43
+ See https://github.com/icyleaf/app_info for details.
44
+ ENDBANNER
36
45
  end