app-info 2.8.2 → 3.0.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.
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