app-info 2.8.3 → 2.8.4
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/.github/workflows/ci.yml +4 -4
- data/.github/workflows/create_release.yml +15 -0
- data/CHANGELOG.md +10 -1
- data/README.md +5 -3
- data/app_info.gemspec +3 -3
- data/lib/app_info/aab.rb +3 -3
- data/lib/app_info/helper.rb +1 -3
- data/lib/app_info/png_uncrush.rb +1 -1
- data/lib/app_info/protobuf/models/README.md +1 -1
- data/lib/app_info/protobuf/models/Resources.proto +51 -0
- data/lib/app_info/protobuf/models/Resources_pb.rb +40 -0
- data/lib/app_info/version.rb +1 -1
- metadata +10 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eaf82a6d1506255b1273449d8780190beb43d82000a8307a8bdb2f7d26db9b5f
|
4
|
+
data.tar.gz: bd2a591c4586eec718b991a7a8ee9c51b42311da1c5b7d6c8c9ff47df017d6e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f386060b89ea25bea1b1e41d2d8e355143f109304206e57a130d4ea93769085787c712a6f0ae8dddbc8b06cb82c63802af707b6cd04f0342b98effe557e31e22
|
7
|
+
data.tar.gz: 9181a83795f635f2c88f52889a9b7399cbfa62979ae7f2dabff23d2fb877287de24952d0c2fe53e41651e9c4f0ff01a5b1f7a5f6e0324b2e57684814e438d057
|
data/.github/workflows/ci.yml
CHANGED
@@ -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@
|
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@
|
33
|
+
- uses: actions/checkout@v3
|
34
34
|
|
35
35
|
- uses: ruby/setup-ruby@v1
|
36
36
|
with:
|
37
|
-
ruby-version:
|
37
|
+
ruby-version: 3.0
|
38
38
|
bundler-cache: true
|
39
39
|
|
40
40
|
- name: bundle exec rubocop
|
data/CHANGELOG.md
CHANGED
@@ -9,6 +9,14 @@ 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.4] (2023-03-09)
|
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
|
+
- Force android device return as boolean for aab parser.
|
18
|
+
- Handle string resources referencing other resources for apk parser.
|
19
|
+
|
12
20
|
## [2.8.3] (2022-06-27)
|
13
21
|
|
14
22
|
### Fixed
|
@@ -234,7 +242,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
234
242
|
|
235
243
|
- Updated dependency of CFPropertly list be a range between 2.3.4. (thanks @[cschroed](https://github.com/cschroed))
|
236
244
|
|
237
|
-
[Unreleased]: https://github.com/icyleaf/app-info/compare/v2.8.
|
245
|
+
[Unreleased]: https://github.com/icyleaf/app-info/compare/v2.8.4..HEAD
|
246
|
+
[2.8.4]: https://github.com/icyleaf/app-info/compare/v2.8.3...v2.8.4
|
238
247
|
[2.8.3]: https://github.com/icyleaf/app-info/compare/v2.8.2...v2.8.3
|
239
248
|
[2.8.2]: https://github.com/icyleaf/app-info/compare/v2.8.1...v2.8.2
|
240
249
|
[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
|
[](.github/workflows/ci.yml)
|
4
|
-
[](https://github.com/icyleaf/app_info/actions/workflows/ci.yml)
|
5
5
|
[](https://rubygems.org/gems/app_info)
|
6
6
|
[](LICENSE)
|
7
7
|
|
@@ -12,12 +12,14 @@ 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
|
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
|
20
|
-
|
22
|
+
- `.dSYM.zip`
|
21
23
|
## Installation
|
22
24
|
|
23
25
|
Add this line to your application's Gemfile:
|
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.
|
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.
|
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.
|
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
|
data/lib/app_info/helper.rb
CHANGED
@@ -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
|
data/lib/app_info/png_uncrush.rb
CHANGED
@@ -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
|
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: 2.8.
|
4
|
+
version: 2.8.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- icyleaf
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-03-09 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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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
|