android_apk 0.7.0 → 0.8.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c34a0896e31f26b93dea4960c846da52fb17baa5
4
+ data.tar.gz: b4f17a56d8a4148d307027a2d94364f49d4207e7
5
+ SHA512:
6
+ metadata.gz: 72126a5303ca2c12c0d526039fe4c3786261adaa533b038d912bd557d0dddf4ef7c582e8734dce3d11506b576ca2544a57c328597dda30ffb6258d2bbaeee050
7
+ data.tar.gz: 644427c81abf36372542bf1d6c5bd5aa536d23ff42d9f26e151b88e365bfd59642a4969f2de0e03effffeab4519194299255e5b658294bf7d42c817b61660f6c
data/Gemfile CHANGED
@@ -6,9 +6,9 @@ source "http://rubygems.org"
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
  group :development do
9
- gem "rspec", "~> 2.8.0"
9
+ gem "rspec", "~> 3.2.0"
10
10
  gem "rdoc", "~> 3.12"
11
- gem "bundler", "~> 1.0.0"
11
+ gem "bundler", "~> 1.11.2"
12
12
  gem "jeweler", "~> 1.8.4"
13
13
  gem "simplecov"
14
14
  end
@@ -1,37 +1,75 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- diff-lcs (1.1.3)
5
- git (1.2.5)
6
- jeweler (1.8.4)
4
+ addressable (2.4.0)
5
+ builder (3.2.2)
6
+ diff-lcs (1.2.5)
7
+ docile (1.1.5)
8
+ faraday (0.8.11)
9
+ multipart-post (~> 1.2.0)
10
+ git (1.3.0)
11
+ github_api (0.10.1)
12
+ addressable
13
+ faraday (~> 0.8.1)
14
+ hashie (>= 1.2)
15
+ multi_json (~> 1.4)
16
+ nokogiri (~> 1.5.2)
17
+ oauth2
18
+ hashie (3.4.3)
19
+ highline (1.7.8)
20
+ jeweler (1.8.8)
21
+ builder
7
22
  bundler (~> 1.0)
8
23
  git (>= 1.2.5)
24
+ github_api (= 0.10.1)
25
+ highline (>= 1.6.15)
26
+ nokogiri (= 1.5.10)
9
27
  rake
10
28
  rdoc
11
- json (1.7.4)
12
- multi_json (1.3.6)
13
- rake (0.9.2.2)
14
- rdoc (3.12)
29
+ json (1.8.3)
30
+ jwt (1.5.1)
31
+ multi_json (1.11.2)
32
+ multi_xml (0.5.5)
33
+ multipart-post (1.2.0)
34
+ nokogiri (1.5.10)
35
+ oauth2 (1.1.0)
36
+ faraday (>= 0.8, < 0.10)
37
+ jwt (~> 1.0, < 1.5.2)
38
+ multi_json (~> 1.3)
39
+ multi_xml (~> 0.5)
40
+ rack (>= 1.2, < 3)
41
+ rack (1.6.4)
42
+ rake (10.5.0)
43
+ rdoc (3.12.2)
15
44
  json (~> 1.4)
16
- rspec (2.8.0)
17
- rspec-core (~> 2.8.0)
18
- rspec-expectations (~> 2.8.0)
19
- rspec-mocks (~> 2.8.0)
20
- rspec-core (2.8.0)
21
- rspec-expectations (2.8.0)
22
- diff-lcs (~> 1.1.2)
23
- rspec-mocks (2.8.0)
24
- simplecov (0.6.4)
25
- multi_json (~> 1.0)
26
- simplecov-html (~> 0.5.3)
27
- simplecov-html (0.5.3)
45
+ rspec (3.2.0)
46
+ rspec-core (~> 3.2.0)
47
+ rspec-expectations (~> 3.2.0)
48
+ rspec-mocks (~> 3.2.0)
49
+ rspec-core (3.2.3)
50
+ rspec-support (~> 3.2.0)
51
+ rspec-expectations (3.2.1)
52
+ diff-lcs (>= 1.2.0, < 2.0)
53
+ rspec-support (~> 3.2.0)
54
+ rspec-mocks (3.2.1)
55
+ diff-lcs (>= 1.2.0, < 2.0)
56
+ rspec-support (~> 3.2.0)
57
+ rspec-support (3.2.2)
58
+ simplecov (0.11.2)
59
+ docile (~> 1.1.0)
60
+ json (~> 1.8)
61
+ simplecov-html (~> 0.10.0)
62
+ simplecov-html (0.10.0)
28
63
 
29
64
  PLATFORMS
30
65
  ruby
31
66
 
32
67
  DEPENDENCIES
33
- bundler (~> 1.0.0)
68
+ bundler (~> 1.11.2)
34
69
  jeweler (~> 1.8.4)
35
70
  rdoc (~> 3.12)
36
- rspec (~> 2.8.0)
71
+ rspec (~> 3.2.0)
37
72
  simplecov
73
+
74
+ BUNDLED WITH
75
+ 1.11.2
data/README.md CHANGED
@@ -1,8 +1,12 @@
1
1
  #Android APK
2
+
3
+ [![Circle CI](https://circleci.com/gh/kyoro/android_apk.svg?style=svg)](https://circleci.com/gh/kyoro/android_apk)
4
+
2
5
  This gem library is Android application package file (.apk) analyzer.
3
6
  you can read any information of android apk files.
4
7
 
5
8
  ## Attention
9
+
6
10
  You must set path to 'AndroidSDK/platform-tools'.
7
11
  And you must can execute 'aapt' command.
8
12
 
@@ -19,7 +23,7 @@ apk.label #Application Name
19
23
  apk.package_name #Package Name
20
24
  apk.icon #Included Icon file in apk file
21
25
  apk.version_code #Version Code
22
- apk.version_name "Version Name
26
+ apk.version_name #Version Name
23
27
  ```
24
28
 
25
29
  ## License
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.0
1
+ 0.8.0
@@ -2,16 +2,18 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: android_apk 0.8.0 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
- s.name = "android_apk"
8
- s.version = "0.7.0"
8
+ s.name = "android_apk".freeze
9
+ s.version = "0.8.0"
9
10
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Kyosuke INOUE"]
12
- s.date = "2013-03-12"
13
- s.description = "This library can analyze Android APK application package. You can get any information of android apk file."
14
- s.email = "kyoro@hakamastyle.net"
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib".freeze]
13
+ s.authors = ["Kyosuke INOUE".freeze]
14
+ s.date = "2016-03-01"
15
+ s.description = "This library can analyze Android APK application package. You can get any information of android apk file.".freeze
16
+ s.email = "kyoro@hakamastyle.net".freeze
15
17
  s.extra_rdoc_files = [
16
18
  "LICENSE.txt",
17
19
  "README.md"
@@ -26,42 +28,45 @@ Gem::Specification.new do |s|
26
28
  "Rakefile",
27
29
  "VERSION",
28
30
  "android_apk.gemspec",
31
+ "circle.yml",
29
32
  "lib/android_apk.rb",
30
33
  "spec/android_apk_spec.rb",
31
34
  "spec/mock/BarcodeScanner4.2.apk",
32
35
  "spec/mock/UECExpress.apk",
36
+ "spec/mock/dsa.apk",
33
37
  "spec/mock/dummy.apk",
38
+ "spec/mock/sample with space.apk",
34
39
  "spec/mock/sample.apk",
40
+ "spec/mock/vector-icon.apk",
35
41
  "spec/spec_helper.rb"
36
42
  ]
37
- s.homepage = "http://github.com/kyoro/android_apk"
38
- s.licenses = ["MIT"]
39
- s.require_paths = ["lib"]
40
- s.rubygems_version = "1.8.24"
41
- s.summary = "Android APK file analyzer"
43
+ s.homepage = "http://github.com/kyoro/android_apk".freeze
44
+ s.licenses = ["MIT".freeze]
45
+ s.rubygems_version = "2.6.1".freeze
46
+ s.summary = "Android APK file analyzer".freeze
42
47
 
43
48
  if s.respond_to? :specification_version then
44
- s.specification_version = 3
49
+ s.specification_version = 4
45
50
 
46
51
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
- s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
48
- s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
49
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
50
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
51
- s.add_development_dependency(%q<simplecov>, [">= 0"])
52
+ s.add_development_dependency(%q<rspec>.freeze, ["~> 3.2.0"])
53
+ s.add_development_dependency(%q<rdoc>.freeze, ["~> 3.12"])
54
+ s.add_development_dependency(%q<bundler>.freeze, ["~> 1.11.2"])
55
+ s.add_development_dependency(%q<jeweler>.freeze, ["~> 1.8.4"])
56
+ s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
52
57
  else
53
- s.add_dependency(%q<rspec>, ["~> 2.8.0"])
54
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
55
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
56
- s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
57
- s.add_dependency(%q<simplecov>, [">= 0"])
58
+ s.add_dependency(%q<rspec>.freeze, ["~> 3.2.0"])
59
+ s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
60
+ s.add_dependency(%q<bundler>.freeze, ["~> 1.11.2"])
61
+ s.add_dependency(%q<jeweler>.freeze, ["~> 1.8.4"])
62
+ s.add_dependency(%q<simplecov>.freeze, [">= 0"])
58
63
  end
59
64
  else
60
- s.add_dependency(%q<rspec>, ["~> 2.8.0"])
61
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
62
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
63
- s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
64
- s.add_dependency(%q<simplecov>, [">= 0"])
65
+ s.add_dependency(%q<rspec>.freeze, ["~> 3.2.0"])
66
+ s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
67
+ s.add_dependency(%q<bundler>.freeze, ["~> 1.11.2"])
68
+ s.add_dependency(%q<jeweler>.freeze, ["~> 1.8.4"])
69
+ s.add_dependency(%q<simplecov>.freeze, [">= 0"])
65
70
  end
66
71
  end
67
72
 
@@ -0,0 +1,4 @@
1
+ machine:
2
+ environment:
3
+ TERM: dumb
4
+ PATH: $ANDROID_HOME/build-tools/22.0.1:$PATH
@@ -1,11 +1,13 @@
1
- require "tmpdir"
2
- require "pp"
1
+ require 'tmpdir'
2
+ require 'shellwords'
3
+ require 'open3'
4
+
3
5
  class AndroidApk
4
6
  attr_accessor :results,:label,:labels,:icon,:icons,:package_name,:version_code,:version_name,:sdk_version,:target_sdk_version,:filepath
5
7
  def self.analyze(filepath)
6
8
  return nil unless File.exist?(filepath)
7
9
  apk = AndroidApk.new
8
- command = "aapt dump badging '" + filepath + "' 2>&1"
10
+ command = "aapt dump badging #{filepath.shellescape} 2>&1"
9
11
  results = `#{command}`
10
12
  if $?.exitstatus != 0 or results.index("ERROR: dump failed")
11
13
  return nil
@@ -15,8 +17,8 @@ class AndroidApk
15
17
  vars = _parse_aapt(results)
16
18
 
17
19
  # application info
18
- apk.label, apk.icon =
19
- vars['application'].values_at('label', 'icon')
20
+ apk.label = vars['application-label']
21
+ apk.icon = vars['application']['icon']
20
22
 
21
23
  # package
22
24
  apk.package_name, apk.version_code, apk.version_name =
@@ -37,11 +39,17 @@ class AndroidApk
37
39
  return apk
38
40
  end
39
41
 
40
- def icon_file(dpi = nil)
42
+ def icon_file(dpi = nil, want_png = false)
41
43
  icon = dpi ? self.icons[dpi.to_i] : self.icon
42
44
  return nil if icon.empty?
45
+
46
+ if want_png && icon.end_with?('.xml')
47
+ dpis = dpi_str(dpi)
48
+ icon.gsub! %r{res/drawable-anydpi-v21/([^/]+)\.xml}, "res/drawable-#{dpis}-v4/\\1.png"
49
+ end
50
+
43
51
  Dir.mktmpdir do |dir|
44
- command = sprintf("unzip '%s' '%s' -d '%s' 2>&1",self.filepath,icon,dir)
52
+ command = "unzip #{self.filepath.shellescape} #{icon.shellescape} -d #{dir.shellescape} 2>&1"
45
53
  results = `#{command}`
46
54
  path = dir + "/" + icon
47
55
  return nil unless File.exist?(path)
@@ -49,15 +57,40 @@ class AndroidApk
49
57
  end
50
58
  end
51
59
 
60
+ def dpi_str(dpi)
61
+ case dpi.to_i
62
+ when 120
63
+ 'ldpi'
64
+ when 160
65
+ 'mdpi'
66
+ when 240
67
+ 'hdpi'
68
+ when 320
69
+ 'xhdpi'
70
+ when 480
71
+ 'xxhdpi'
72
+ when 640
73
+ 'xxxhdpi'
74
+ else
75
+ 'xxxhdpi'
76
+ end
77
+ end
78
+
52
79
  def signature
53
- command = sprintf("unzip -p '%s' META-INF/*.RSA | keytool -printcert | grep SHA1: 2>&1", self.filepath)
54
- results = `#{command}`
55
- return nil if $?.exitstatus != 0 || results.nil? || !results.index('SHA1:')
56
- val = results.scan(/(?:[0-9A-Z]{2}:?){20}/)
80
+ command = "unzip -p #{self.filepath.shellescape} META-INF/*.RSA META-INF/*.DSA | keytool -printcert | grep SHA1:"
81
+ output, _, status = Open3.capture3(command)
82
+ return if status != 0 || output.nil? || !output.index('SHA1:')
83
+ val = output.scan(/(?:[0-9A-Z]{2}:?){20}/)
57
84
  return nil if val.nil? || val.length != 1
58
85
  return val[0].gsub(/:/, "").downcase
59
86
  end
60
87
 
88
+ # workaround for https://code.google.com/p/android/issues/detail?id=160847
89
+ def self._parse_values_workaround(str)
90
+ return nil if str.nil?
91
+ str.scan(/^'(.+)'$/).map{|v| v[0].gsub(/\\'/, "'")}
92
+ end
93
+
61
94
  def self._parse_values(str)
62
95
  return nil if str.nil?
63
96
  if str.index("='")
@@ -74,7 +107,13 @@ class AndroidApk
74
107
  def self._parse_line(line)
75
108
  return nil if line.nil?
76
109
  info = line.split(":", 2)
77
- return info[0], _parse_values( info[1] )
110
+ values =
111
+ if info[0].start_with?('application-label')
112
+ _parse_values_workaround info[1]
113
+ else
114
+ _parse_values info[1]
115
+ end
116
+ return info[0], values
78
117
  end
79
118
 
80
119
  def self._parse_aapt(results)
@@ -6,14 +6,20 @@ describe "AndroidApk" do
6
6
  apk = nil
7
7
  apk2 = nil
8
8
  icon_not_set_apk = nil
9
- sample_file_path = File.dirname(__FILE__) + "/mock/sample.apk"
10
- sample2_file_path = File.dirname(__FILE__) + "/mock/BarcodeScanner4.2.apk"
11
- icon_not_set_file_path = File.dirname(__FILE__) + "/mock/UECExpress.apk"
12
- dummy_file_path = File.dirname(__FILE__) + "/mock/dummy.apk"
9
+
10
+ mockdir = File.join(File.dirname(__FILE__), 'mock')
11
+ sample_file_path = File.join(mockdir, 'sample.apk')
12
+ sample2_file_path = File.join(mockdir, 'BarcodeScanner4.2.apk')
13
+ sample_space_file_path = File.join(mockdir, 'sample with space.apk')
14
+ icon_not_set_file_path = File.join(mockdir, 'UECExpress.apk')
15
+ dummy_file_path = File.join(mockdir, 'dummy.apk')
16
+ dsa_file_path = File.join(mockdir, 'dsa.apk')
17
+ vector_file_path = File.join(mockdir, 'vector-icon.apk')
13
18
 
14
19
  it "Sample apk file exist" do
15
20
  File.exist?(sample_file_path).should == true
16
21
  File.exist?(sample2_file_path).should == true
22
+ File.exist?(sample_space_file_path).should == true
17
23
  end
18
24
 
19
25
  it "Library can not read apk file" do
@@ -86,4 +92,36 @@ describe "AndroidApk" do
86
92
  icon_not_set_apk.icon_file.should == nil
87
93
  end
88
94
 
95
+ context "with space character filename" do
96
+ subject { AndroidApk.analyze(sample_space_file_path) }
97
+ it 'returns analyzed data' do
98
+ is_expected.not_to be_nil
99
+ end
100
+ end
101
+
102
+ context "with DSA signing" do
103
+ subject { AndroidApk.analyze(dsa_file_path) }
104
+ it 'returns analyzed data' do
105
+ is_expected.not_to be_nil
106
+ end
107
+ it 'can extract signature' do
108
+ expect(subject.signature).to eq('2d8068f79a5840cbce499b51821aaa6c775ff3ff')
109
+ end
110
+ end
111
+
112
+ context "with vector icon" do
113
+ subject { AndroidApk.analyze(vector_file_path) }
114
+ it 'can be analyzed' do
115
+ is_expected.not_to be_nil
116
+ end
117
+ it 'has xml icon' do
118
+ expect(subject.icon_file).not_to be_nil
119
+ end
120
+ it 'can return png icon' do
121
+ expect(subject.icon_file(nil, true)).not_to be_nil
122
+ end
123
+ it 'can return png icon by specific dpi' do
124
+ expect(subject.icon_file(240, true)).not_to be_nil
125
+ end
126
+ end
89
127
  end
Binary file
Binary file
metadata CHANGED
@@ -1,94 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: android_apk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
5
- prerelease:
4
+ version: 0.8.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Kyosuke INOUE
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-03-12 00:00:00.000000000 Z
11
+ date: 2016-03-01 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rspec
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: 2.8.0
19
+ version: 3.2.0
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: 2.8.0
26
+ version: 3.2.0
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rdoc
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ~>
31
+ - - "~>"
36
32
  - !ruby/object:Gem::Version
37
33
  version: '3.12'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ~>
38
+ - - "~>"
44
39
  - !ruby/object:Gem::Version
45
40
  version: '3.12'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: bundler
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ~>
45
+ - - "~>"
52
46
  - !ruby/object:Gem::Version
53
- version: 1.0.0
47
+ version: 1.11.2
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ~>
52
+ - - "~>"
60
53
  - !ruby/object:Gem::Version
61
- version: 1.0.0
54
+ version: 1.11.2
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: jeweler
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ~>
59
+ - - "~>"
68
60
  - !ruby/object:Gem::Version
69
61
  version: 1.8.4
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ~>
66
+ - - "~>"
76
67
  - !ruby/object:Gem::Version
77
68
  version: 1.8.4
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: simplecov
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - ">="
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - ">="
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  description: This library can analyze Android APK application package. You can get
@@ -100,8 +89,8 @@ extra_rdoc_files:
100
89
  - LICENSE.txt
101
90
  - README.md
102
91
  files:
103
- - .document
104
- - .rspec
92
+ - ".document"
93
+ - ".rspec"
105
94
  - Gemfile
106
95
  - Gemfile.lock
107
96
  - LICENSE.txt
@@ -109,39 +98,39 @@ files:
109
98
  - Rakefile
110
99
  - VERSION
111
100
  - android_apk.gemspec
101
+ - circle.yml
112
102
  - lib/android_apk.rb
113
103
  - spec/android_apk_spec.rb
114
104
  - spec/mock/BarcodeScanner4.2.apk
115
105
  - spec/mock/UECExpress.apk
106
+ - spec/mock/dsa.apk
116
107
  - spec/mock/dummy.apk
108
+ - spec/mock/sample with space.apk
117
109
  - spec/mock/sample.apk
110
+ - spec/mock/vector-icon.apk
118
111
  - spec/spec_helper.rb
119
112
  homepage: http://github.com/kyoro/android_apk
120
113
  licenses:
121
114
  - MIT
115
+ metadata: {}
122
116
  post_install_message:
123
117
  rdoc_options: []
124
118
  require_paths:
125
119
  - lib
126
120
  required_ruby_version: !ruby/object:Gem::Requirement
127
- none: false
128
121
  requirements:
129
- - - ! '>='
122
+ - - ">="
130
123
  - !ruby/object:Gem::Version
131
124
  version: '0'
132
- segments:
133
- - 0
134
- hash: -1128838376041237717
135
125
  required_rubygems_version: !ruby/object:Gem::Requirement
136
- none: false
137
126
  requirements:
138
- - - ! '>='
127
+ - - ">="
139
128
  - !ruby/object:Gem::Version
140
129
  version: '0'
141
130
  requirements: []
142
131
  rubyforge_project:
143
- rubygems_version: 1.8.24
132
+ rubygems_version: 2.6.1
144
133
  signing_key:
145
- specification_version: 3
134
+ specification_version: 4
146
135
  summary: Android APK file analyzer
147
136
  test_files: []