danger-apkstats 0.0.2 → 0.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/.circleci/android-sdk-license +3 -0
- data/.circleci/config.yml +104 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +64 -11
- data/Dangerfile.sample +17 -0
- data/Gemfile +3 -1
- data/Gemfile.lock +145 -0
- data/Guardfile +4 -2
- data/LICENSE.txt +1 -1
- data/README.md +55 -10
- data/Rakefile +12 -10
- data/danger-apkstats.gemspec +21 -21
- data/lib/apkstats/command/apk_analyzer.rb +74 -20
- data/lib/apkstats/command/executable.rb +68 -0
- data/lib/apkstats/entity/apk_info.rb +42 -0
- data/lib/apkstats/entity/apk_info_diff.rb +77 -0
- data/lib/apkstats/entity/feature.rb +101 -0
- data/lib/apkstats/entity/permission.rb +87 -0
- data/lib/apkstats/gem_version.rb +3 -1
- data/lib/apkstats/helper/bytes.rb +65 -0
- data/lib/apkstats/plugin.rb +271 -38
- data/lib/danger_apkstats.rb +2 -0
- data/lib/danger_plugin.rb +2 -0
- data/spec/apkstats_spec.rb +49 -24
- data/spec/command/apk_analyzer_spec.rb +140 -0
- data/spec/entity/apk_info_diff_spec.rb +116 -0
- data/spec/entity/apk_info_spec.rb +51 -0
- data/spec/entity/features_spec.rb +42 -0
- data/spec/entity/permissions_spec.rb +37 -0
- data/spec/helper/bytes_spec.rb +95 -0
- data/spec/spec_helper.rb +10 -2
- data/spec/stub/command.rb +20 -0
- metadata +30 -24
- data/.bundle/config +0 -3
- data/.travis.yml +0 -12
- data/lib/apkstats/command/executable_command.rb +0 -24
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 206a4a16c43f2e18507ab485cce2947c1e932fbee471db57e4f43b20b9e4aa02
|
|
4
|
+
data.tar.gz: f38876905c1095c7da969bbb6d6e43ea5a09ab0cce2941544263137c2ffa3a1e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a9490b757975f4ed708ce6e2df907cea5594cd1fdd8bd338cd6eff111f8d75148c41ad442c1756af7aca9f78992d908fb76905bbcd7cddb0fb3f4ea4e6ab4d04
|
|
7
|
+
data.tar.gz: 73c01476155e698d19655affd292bbdebfffad6e4615bb96257280a57deced379b7a4fedc3bcd43d049460a8d0f2da6925d9fae7e08c048e4fd0b7eb6e3fbbd8
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
version: 2.1
|
|
2
|
+
|
|
3
|
+
executors:
|
|
4
|
+
base:
|
|
5
|
+
docker:
|
|
6
|
+
- image: circleci/android:api-29
|
|
7
|
+
working_directory: ~/workspace
|
|
8
|
+
environment:
|
|
9
|
+
ANDROID_SDK_ROOT: /home/circleci/sdk
|
|
10
|
+
APKANALYZER_PATH: /home/circleci/sdk/cmdline-tools/tools/bin/apkanalyzer
|
|
11
|
+
|
|
12
|
+
ruby:
|
|
13
|
+
docker:
|
|
14
|
+
- image: circleci/ruby:2.7.1
|
|
15
|
+
working_directory: ~/workspace
|
|
16
|
+
|
|
17
|
+
commands:
|
|
18
|
+
install-android-sdk:
|
|
19
|
+
parameters:
|
|
20
|
+
zip-version:
|
|
21
|
+
type: string
|
|
22
|
+
description: the version of the zip archive
|
|
23
|
+
build-tools:
|
|
24
|
+
type: string
|
|
25
|
+
steps:
|
|
26
|
+
- restore_cache:
|
|
27
|
+
key: v1-android-sdk-{{ arch }}-<< parameters.zip-version >>-<< parameters.build-tools >>
|
|
28
|
+
- run: |
|
|
29
|
+
version="<< parameters.zip-version >>"
|
|
30
|
+
if [ "$(cat $ANDROID_SDK_ROOT/.sdk_tools_version || echo)" != "$version" ]; then
|
|
31
|
+
rm -fr $ANDROID_SDK_ROOT || :
|
|
32
|
+
mkdir -p $ANDROID_SDK_ROOT/licenses $ANDROID_SDK_ROOT/cmdline-tools
|
|
33
|
+
curl -o sdk-tools-linux.zip "https://dl.google.com/android/repository/commandlinetools-linux-${version}_latest.zip"
|
|
34
|
+
unzip "sdk-tools-linux.zip" -d $ANDROID_SDK_ROOT/cmdline-tools
|
|
35
|
+
echo "$version" > $ANDROID_SDK_ROOT/.sdk_tools_version
|
|
36
|
+
fi
|
|
37
|
+
mkdir -p $ANDROID_SDK_ROOT/licenses
|
|
38
|
+
cp .circleci/android-sdk-license $ANDROID_SDK_ROOT/licenses/
|
|
39
|
+
$ANDROID_SDK_ROOT/cmdline-tools/tools/bin/sdkmanager "build-tools;<< parameters.build-tools >>"
|
|
40
|
+
- save_cache:
|
|
41
|
+
key: v1-android-sdk-{{ arch }}-<< parameters.zip-version >>-<< parameters.build-tools >>
|
|
42
|
+
paths:
|
|
43
|
+
- ~/sdk
|
|
44
|
+
install-ruby:
|
|
45
|
+
parameters:
|
|
46
|
+
ruby-version:
|
|
47
|
+
type: string
|
|
48
|
+
steps:
|
|
49
|
+
- run: |
|
|
50
|
+
sudo apt-get update && \
|
|
51
|
+
cd /tmp && wget -O ruby-install-0.6.1.tar.gz https://github.com/postmodern/ruby-install/archive/v0.6.1.tar.gz && \
|
|
52
|
+
tar -xzvf ruby-install-0.6.1.tar.gz && \
|
|
53
|
+
cd ruby-install-0.6.1 && \
|
|
54
|
+
sudo make install && \
|
|
55
|
+
ruby-install --cleanup ruby << parameters.ruby-version >> && \
|
|
56
|
+
rm -r /tmp/ruby-install-* && \
|
|
57
|
+
sudo rm -rf /var/lib/apt/lists/*
|
|
58
|
+
|
|
59
|
+
echo "export PATH=${HOME}/.rubies/ruby-<< parameters.ruby-version >>/bin:\${PATH}" >> $BASH_ENV
|
|
60
|
+
- run: ruby --version
|
|
61
|
+
bundle-install:
|
|
62
|
+
steps:
|
|
63
|
+
- restore_cache:
|
|
64
|
+
key: v1-bundle-{{ arch }}-{{ checksum "./Gemfile.lock" }}
|
|
65
|
+
- run: gem install bundler -v 2.1.4
|
|
66
|
+
- run: bundle install --path=vendor/bundle
|
|
67
|
+
- save_cache:
|
|
68
|
+
key: v1-bundle-{{ arch }}-{{ checksum "./Gemfile.lock" }}
|
|
69
|
+
paths:
|
|
70
|
+
- vendor/bundle
|
|
71
|
+
|
|
72
|
+
jobs:
|
|
73
|
+
lint:
|
|
74
|
+
executor: ruby
|
|
75
|
+
steps:
|
|
76
|
+
- checkout
|
|
77
|
+
- bundle-install
|
|
78
|
+
- run: bundle exec rake rubocop
|
|
79
|
+
|
|
80
|
+
test:
|
|
81
|
+
parameters:
|
|
82
|
+
ruby_version:
|
|
83
|
+
type: string
|
|
84
|
+
description: 'Ruby version to be used'
|
|
85
|
+
executor: base
|
|
86
|
+
|
|
87
|
+
steps:
|
|
88
|
+
- checkout
|
|
89
|
+
- install-ruby:
|
|
90
|
+
ruby-version: << parameters.ruby_version >>
|
|
91
|
+
- install-android-sdk:
|
|
92
|
+
zip-version: "6514223"
|
|
93
|
+
build-tools: 29.0.2
|
|
94
|
+
- bundle-install
|
|
95
|
+
- run: bundle exec rake specs spec_docs
|
|
96
|
+
|
|
97
|
+
workflows:
|
|
98
|
+
materix_test:
|
|
99
|
+
jobs:
|
|
100
|
+
- lint
|
|
101
|
+
- test:
|
|
102
|
+
matrix:
|
|
103
|
+
parameters:
|
|
104
|
+
ruby_version: [2.5.8, 2.6.6, 2.7.1]
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
|
@@ -3,7 +3,16 @@
|
|
|
3
3
|
# If you don't like these settings, just delete this file :)
|
|
4
4
|
|
|
5
5
|
AllCops:
|
|
6
|
-
|
|
6
|
+
Exclude:
|
|
7
|
+
- 'vendor/**/*'
|
|
8
|
+
- 'spec/fixtures/**/*'
|
|
9
|
+
- 'tmp/**/*'
|
|
10
|
+
TargetRubyVersion: 2.7.1
|
|
11
|
+
|
|
12
|
+
Metrics/ModuleLength:
|
|
13
|
+
Exclude:
|
|
14
|
+
- 'spec/**/*'
|
|
15
|
+
Enabled: true
|
|
7
16
|
|
|
8
17
|
Style/StringLiterals:
|
|
9
18
|
EnforcedStyle: double_quotes
|
|
@@ -13,20 +22,16 @@ Style/StringLiterals:
|
|
|
13
22
|
Style/ClassCheck:
|
|
14
23
|
EnforcedStyle: kind_of?
|
|
15
24
|
|
|
16
|
-
# It's better to be more explicit about the type
|
|
17
|
-
Style/BracesAroundHashParameters:
|
|
18
|
-
Enabled: false
|
|
19
|
-
|
|
20
25
|
# specs sometimes have useless assignments, which is fine
|
|
21
26
|
Lint/UselessAssignment:
|
|
22
27
|
Exclude:
|
|
23
28
|
- '**/spec/**/*'
|
|
24
29
|
|
|
25
30
|
# We could potentially enable the 2 below:
|
|
26
|
-
Layout/
|
|
31
|
+
Layout/FirstHashElementIndentation:
|
|
27
32
|
Enabled: false
|
|
28
33
|
|
|
29
|
-
Layout/
|
|
34
|
+
Layout/HashAlignment:
|
|
30
35
|
Enabled: false
|
|
31
36
|
|
|
32
37
|
# HoundCI doesn't like this rule
|
|
@@ -76,7 +81,7 @@ Metrics/CyclomaticComplexity:
|
|
|
76
81
|
Max: 17
|
|
77
82
|
|
|
78
83
|
# Configuration parameters: AllowURI, URISchemes.
|
|
79
|
-
|
|
84
|
+
Layout/LineLength:
|
|
80
85
|
Max: 370
|
|
81
86
|
|
|
82
87
|
# Configuration parameters: CountKeywordArgs.
|
|
@@ -127,16 +132,16 @@ Metrics/BlockLength:
|
|
|
127
132
|
Style/MixinGrouping:
|
|
128
133
|
Enabled: false
|
|
129
134
|
|
|
130
|
-
|
|
135
|
+
Naming/FileName:
|
|
131
136
|
Enabled: false
|
|
132
137
|
|
|
133
|
-
Layout/
|
|
138
|
+
Layout/HeredocIndentation:
|
|
134
139
|
Enabled: false
|
|
135
140
|
|
|
136
141
|
Style/SpecialGlobalVars:
|
|
137
142
|
Enabled: false
|
|
138
143
|
|
|
139
|
-
PercentLiteralDelimiters:
|
|
144
|
+
Department/PercentLiteralDelimiters:
|
|
140
145
|
PreferredDelimiters:
|
|
141
146
|
"%": ()
|
|
142
147
|
"%i": ()
|
|
@@ -150,3 +155,51 @@ PercentLiteralDelimiters:
|
|
|
150
155
|
|
|
151
156
|
Security/YAMLLoad:
|
|
152
157
|
Enabled: false
|
|
158
|
+
|
|
159
|
+
Style/TrailingCommaInArguments:
|
|
160
|
+
Enabled: true
|
|
161
|
+
|
|
162
|
+
Style/TrailingCommaInArrayLiteral:
|
|
163
|
+
Enabled: false
|
|
164
|
+
|
|
165
|
+
Style/TrailingCommaInHashLiteral:
|
|
166
|
+
Enabled: false
|
|
167
|
+
|
|
168
|
+
Layout/EmptyLinesAroundAttributeAccessor:
|
|
169
|
+
Enabled: true
|
|
170
|
+
|
|
171
|
+
Layout/SpaceAroundMethodCallOperator:
|
|
172
|
+
Enabled: false
|
|
173
|
+
|
|
174
|
+
Lint/DeprecatedOpenSSLConstant:
|
|
175
|
+
Enabled: false
|
|
176
|
+
|
|
177
|
+
Lint/MixedRegexpCaptureTypes:
|
|
178
|
+
Enabled: false
|
|
179
|
+
|
|
180
|
+
Lint/RaiseException:
|
|
181
|
+
Enabled: true
|
|
182
|
+
|
|
183
|
+
Lint/StructNewOverride:
|
|
184
|
+
Enabled: true
|
|
185
|
+
|
|
186
|
+
Style/ExponentialNotation:
|
|
187
|
+
Enabled: false
|
|
188
|
+
|
|
189
|
+
Style/HashEachMethods:
|
|
190
|
+
Enabled: true
|
|
191
|
+
|
|
192
|
+
Style/HashTransformKeys:
|
|
193
|
+
Enabled: true
|
|
194
|
+
|
|
195
|
+
Style/HashTransformValues:
|
|
196
|
+
Enabled: true
|
|
197
|
+
|
|
198
|
+
Style/RedundantRegexpCharacterClass:
|
|
199
|
+
Enabled: true
|
|
200
|
+
|
|
201
|
+
Style/RedundantRegexpEscape:
|
|
202
|
+
Enabled: true
|
|
203
|
+
|
|
204
|
+
Style/SlicingWithRange:
|
|
205
|
+
Enabled: true
|
data/Dangerfile.sample
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
apkstats.command_type=:apk_analyzer
|
|
2
|
+
apkstats.apk_filepath='./spec/fixture/app-base.apk'
|
|
3
|
+
|
|
4
|
+
# custom command path
|
|
5
|
+
# apkstats.command_path='/path/to/analysis_command'
|
|
6
|
+
|
|
7
|
+
message(apkstats.file_size)
|
|
8
|
+
message(apkstats.download_size)
|
|
9
|
+
message(apkstats.required_features)
|
|
10
|
+
message(apkstats.non_required_features)
|
|
11
|
+
message(apkstats.permissions)
|
|
12
|
+
message(apkstats.min_sdk)
|
|
13
|
+
message(apkstats.target_sdk)
|
|
14
|
+
message("#{apkstats.reference_count}")
|
|
15
|
+
message("#{apkstats.dex_count}")
|
|
16
|
+
|
|
17
|
+
apkstats.compare_with('/spec/fixture/app-other5.apk', do_report: true)
|
data/Gemfile
CHANGED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
danger-apkstats (0.3.0)
|
|
5
|
+
danger-plugin-api (~> 1.0)
|
|
6
|
+
|
|
7
|
+
GEM
|
|
8
|
+
remote: https://rubygems.org/
|
|
9
|
+
specs:
|
|
10
|
+
addressable (2.7.0)
|
|
11
|
+
public_suffix (>= 2.0.2, < 5.0)
|
|
12
|
+
ast (2.4.1)
|
|
13
|
+
claide (1.0.3)
|
|
14
|
+
claide-plugins (0.9.2)
|
|
15
|
+
cork
|
|
16
|
+
nap
|
|
17
|
+
open4 (~> 1.3)
|
|
18
|
+
coderay (1.1.3)
|
|
19
|
+
colored2 (3.1.2)
|
|
20
|
+
cork (0.3.0)
|
|
21
|
+
colored2 (~> 3.1)
|
|
22
|
+
danger (8.0.1)
|
|
23
|
+
claide (~> 1.0)
|
|
24
|
+
claide-plugins (>= 0.9.2)
|
|
25
|
+
colored2 (~> 3.1)
|
|
26
|
+
cork (~> 0.1)
|
|
27
|
+
faraday (>= 0.9.0, < 2.0)
|
|
28
|
+
faraday-http-cache (~> 2.0)
|
|
29
|
+
git (~> 1.7)
|
|
30
|
+
kramdown (~> 2.0)
|
|
31
|
+
kramdown-parser-gfm (~> 1.0)
|
|
32
|
+
no_proxy_fix
|
|
33
|
+
octokit (~> 4.7)
|
|
34
|
+
terminal-table (~> 1)
|
|
35
|
+
danger-plugin-api (1.0.0)
|
|
36
|
+
danger (> 2.0)
|
|
37
|
+
diff-lcs (1.3)
|
|
38
|
+
faraday (1.0.1)
|
|
39
|
+
multipart-post (>= 1.2, < 3)
|
|
40
|
+
faraday-http-cache (2.2.0)
|
|
41
|
+
faraday (>= 0.8)
|
|
42
|
+
ffi (1.13.1)
|
|
43
|
+
formatador (0.2.5)
|
|
44
|
+
git (1.7.0)
|
|
45
|
+
rchardet (~> 1.8)
|
|
46
|
+
guard (2.16.2)
|
|
47
|
+
formatador (>= 0.2.4)
|
|
48
|
+
listen (>= 2.7, < 4.0)
|
|
49
|
+
lumberjack (>= 1.0.12, < 2.0)
|
|
50
|
+
nenv (~> 0.1)
|
|
51
|
+
notiffany (~> 0.0)
|
|
52
|
+
pry (>= 0.9.12)
|
|
53
|
+
shellany (~> 0.0)
|
|
54
|
+
thor (>= 0.18.1)
|
|
55
|
+
guard-compat (1.2.1)
|
|
56
|
+
guard-rspec (4.7.3)
|
|
57
|
+
guard (~> 2.1)
|
|
58
|
+
guard-compat (~> 1.1)
|
|
59
|
+
rspec (>= 2.99.0, < 4.0)
|
|
60
|
+
kramdown (2.2.1)
|
|
61
|
+
rexml
|
|
62
|
+
kramdown-parser-gfm (1.1.0)
|
|
63
|
+
kramdown (~> 2.0)
|
|
64
|
+
listen (3.0.7)
|
|
65
|
+
rb-fsevent (>= 0.9.3)
|
|
66
|
+
rb-inotify (>= 0.9.7)
|
|
67
|
+
lumberjack (1.2.5)
|
|
68
|
+
method_source (1.0.0)
|
|
69
|
+
multipart-post (2.1.1)
|
|
70
|
+
nap (1.1.0)
|
|
71
|
+
nenv (0.3.0)
|
|
72
|
+
no_proxy_fix (0.1.2)
|
|
73
|
+
notiffany (0.1.3)
|
|
74
|
+
nenv (~> 0.1)
|
|
75
|
+
shellany (~> 0.0)
|
|
76
|
+
octokit (4.18.0)
|
|
77
|
+
faraday (>= 0.9)
|
|
78
|
+
sawyer (~> 0.8.0, >= 0.5.3)
|
|
79
|
+
open4 (1.3.4)
|
|
80
|
+
parallel (1.19.1)
|
|
81
|
+
parser (2.7.1.3)
|
|
82
|
+
ast (~> 2.4.0)
|
|
83
|
+
pry (0.13.1)
|
|
84
|
+
coderay (~> 1.1)
|
|
85
|
+
method_source (~> 1.0)
|
|
86
|
+
public_suffix (4.0.5)
|
|
87
|
+
rainbow (3.0.0)
|
|
88
|
+
rake (13.0.1)
|
|
89
|
+
rb-fsevent (0.10.4)
|
|
90
|
+
rb-inotify (0.10.1)
|
|
91
|
+
ffi (~> 1.0)
|
|
92
|
+
rchardet (1.8.0)
|
|
93
|
+
regexp_parser (1.7.1)
|
|
94
|
+
rexml (3.2.4)
|
|
95
|
+
rspec (3.9.0)
|
|
96
|
+
rspec-core (~> 3.9.0)
|
|
97
|
+
rspec-expectations (~> 3.9.0)
|
|
98
|
+
rspec-mocks (~> 3.9.0)
|
|
99
|
+
rspec-core (3.9.2)
|
|
100
|
+
rspec-support (~> 3.9.3)
|
|
101
|
+
rspec-expectations (3.9.2)
|
|
102
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
103
|
+
rspec-support (~> 3.9.0)
|
|
104
|
+
rspec-mocks (3.9.1)
|
|
105
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
106
|
+
rspec-support (~> 3.9.0)
|
|
107
|
+
rspec-support (3.9.3)
|
|
108
|
+
rubocop (0.85.1)
|
|
109
|
+
parallel (~> 1.10)
|
|
110
|
+
parser (>= 2.7.0.1)
|
|
111
|
+
rainbow (>= 2.2.2, < 4.0)
|
|
112
|
+
regexp_parser (>= 1.7)
|
|
113
|
+
rexml
|
|
114
|
+
rubocop-ast (>= 0.0.3)
|
|
115
|
+
ruby-progressbar (~> 1.7)
|
|
116
|
+
unicode-display_width (>= 1.4.0, < 2.0)
|
|
117
|
+
rubocop-ast (0.0.3)
|
|
118
|
+
parser (>= 2.7.0.1)
|
|
119
|
+
ruby-progressbar (1.10.1)
|
|
120
|
+
sawyer (0.8.2)
|
|
121
|
+
addressable (>= 2.3.5)
|
|
122
|
+
faraday (> 0.8, < 2.0)
|
|
123
|
+
shellany (0.0.1)
|
|
124
|
+
terminal-table (1.8.0)
|
|
125
|
+
unicode-display_width (~> 1.1, >= 1.1.1)
|
|
126
|
+
thor (1.0.1)
|
|
127
|
+
unicode-display_width (1.7.0)
|
|
128
|
+
yard (0.9.25)
|
|
129
|
+
|
|
130
|
+
PLATFORMS
|
|
131
|
+
ruby
|
|
132
|
+
|
|
133
|
+
DEPENDENCIES
|
|
134
|
+
danger-apkstats!
|
|
135
|
+
guard (~> 2.14)
|
|
136
|
+
guard-rspec (~> 4.7)
|
|
137
|
+
listen (= 3.0.7)
|
|
138
|
+
pry
|
|
139
|
+
rake (~> 13.0)
|
|
140
|
+
rspec (~> 3.4)
|
|
141
|
+
rubocop
|
|
142
|
+
yard
|
|
143
|
+
|
|
144
|
+
BUNDLED WITH
|
|
145
|
+
2.1.4
|
data/Guardfile
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
# A guardfile for making Danger Plugins
|
|
2
4
|
# For more info see https://github.com/guard/guard#readme
|
|
3
5
|
|
|
4
6
|
# To run, use `bundle exec guard`.
|
|
5
7
|
|
|
6
|
-
guard :rspec, cmd:
|
|
7
|
-
require
|
|
8
|
+
guard :rspec, cmd: "bundle exec rspec" do
|
|
9
|
+
require "guard/rspec/dsl"
|
|
8
10
|
dsl = Guard::RSpec::Dsl.new(self)
|
|
9
11
|
|
|
10
12
|
# RSpec files
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
|
@@ -1,26 +1,65 @@
|
|
|
1
|
+
[](https://circleci.com/gh/jmatsu/danger-apkstats) [](https://badge.fury.io/rb/danger-apkstats)
|
|
2
|
+
|
|
1
3
|
# danger-apkstats
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
This is a plugin of [Danger](https://github.com/danger/danger) for Android projects.
|
|
6
|
+
This allows you to get attributes of your application file (apk) and report a summary of comparison between two application files.
|
|
4
7
|
|
|
5
8
|
## Installation
|
|
6
9
|
|
|
7
|
-
|
|
10
|
+
`gem install danger-apkstats` or add `danger-apkstats` to your Gemfile.
|
|
11
|
+
|
|
12
|
+
Please specify the path of apkanalyzer in your Dangerfile.
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
apkstats.apkanalyzer_path='/path/to/apkanalyzer'
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
`ANDROID_HOME` has been officially deprecated. `ANDROID_SDK_ROOT` is similar to `ANDROID_HOME` but differs actually. And also, the change indicated the possibility of further deprecations and/or breaking changes in the Android SDK structure.
|
|
8
19
|
|
|
9
20
|
## Usage
|
|
10
21
|
|
|
11
|
-
|
|
12
|
-
|
|
22
|
+
`apkstats` namespace is available under Dangerfile.
|
|
23
|
+
|
|
24
|
+
### Required preparation
|
|
13
25
|
|
|
14
|
-
|
|
26
|
+
```
|
|
27
|
+
apkstats.apk_filepath='app-debug.apk' # required.
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Show attributes
|
|
15
31
|
|
|
16
32
|
```
|
|
17
|
-
apkstats.
|
|
18
|
-
apkstats.
|
|
19
|
-
apkstats.
|
|
20
|
-
apkstats.
|
|
21
|
-
apkstats.
|
|
33
|
+
apkstats.file_size #=> Fixnum
|
|
34
|
+
apkstats.download_size #=> Fixnum
|
|
35
|
+
apkstats.required_features #=> Array<String> | Nil
|
|
36
|
+
apkstats.non_required_features #=> Array<String> | Nil
|
|
37
|
+
apkstats.permissions #=> Array<String> | Nil
|
|
38
|
+
apkstats.min_sdk #=> String | Nil
|
|
39
|
+
apkstats.target_sdk #=> String | Nils
|
|
40
|
+
apkstats.reference_count #=> Fixnum
|
|
41
|
+
apkstats.dex_count #=> Fixnum
|
|
22
42
|
```
|
|
23
43
|
|
|
44
|
+
### Get a comparison report
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
apkstats.compare_with(String, do_report: Boolean)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
For example, the report will be like below.
|
|
51
|
+
|
|
52
|
+
Property | Summary
|
|
53
|
+
:--- | :---
|
|
54
|
+
New File Size | 1621248 Bytes. (1.55 MB)
|
|
55
|
+
File Size Change | -13352 Bytes. (-13.04 KB)
|
|
56
|
+
Download Size Change | +41141 Bytes. (+40.18 KB)
|
|
57
|
+
Removed Required Features | - android.hardware.camera
|
|
58
|
+
Removed Non-required Features | - android.hardware.camera.front (not-required)
|
|
59
|
+
Removed Permissions | - android.permission.INTERNET<br>- android.permission.CAMERA
|
|
60
|
+
New Number of dex file(s) | 15720
|
|
61
|
+
Number of dex file(s) Change | 1
|
|
62
|
+
|
|
24
63
|
## Development
|
|
25
64
|
|
|
26
65
|
1. Clone this repo
|
|
@@ -28,3 +67,9 @@ apkstats.downloadsize
|
|
|
28
67
|
3. Run `bundle exec rake spec` to run the tests.
|
|
29
68
|
4. Use `bundle exec guard` to automatically have tests run as you make changes.
|
|
30
69
|
5. Make your changes.
|
|
70
|
+
|
|
71
|
+
### Supported ruby versions
|
|
72
|
+
|
|
73
|
+
Support only versions which are in normal and/or security maintenance.
|
|
74
|
+
|
|
75
|
+
ref: https://www.ruby-lang.org/en/downloads/branches/
|