ruboto 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 541c9b2e7673b6da8fc43a3534f5f2fcc2d8c718
4
- data.tar.gz: 86da6d0da33706109710b734f42ed4da1abd019e
3
+ metadata.gz: 57638eee95f5a2cba9bf8c77af5a68250c23c7bb
4
+ data.tar.gz: 9ed24085fa7c14979aa4a5e8582608753f0323c0
5
5
  SHA512:
6
- metadata.gz: 14ce1aac618874c8d9a99588065a767027419546a9a399b870ccfe8e80007aeff10b412c59e35950da1337d0abe83f78c4771115f948858b2c7ab1e79510d73d
7
- data.tar.gz: cd2279a27b6cbf5206dafc6f3f0314e32917f79a236db532159cf1c54e73293e29456828660665124a75aefc772f7381f09758f76921454eb0a8bf6554a94b74
6
+ metadata.gz: 13dbc48f6712b77210a2403e9e6bd69f381ec5a3a9a9d840e114b9e326f8e56a2ad3acf23e5ab0196884b9eea87a97969b06c76ac71c6007c50d1d30436655dd
7
+ data.tar.gz: 741ede8a69755af779acceadc5957b7d165f0441bd3d3b1b216b6ccc923828b847c935843e283d101431ebf81aed4734c06c3e19440018e213ef659e6bdad3cd
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruboto (1.0.1)
5
- main (~> 5.0)
4
+ ruboto (1.0.2)
5
+ main (~> 5.2.0)
6
6
  rake (~> 10.0)
7
7
  rubyzip (~> 1.0)
8
8
 
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Code Climate](https://codeclimate.com/github/ruboto/ruboto.png)](https://codeclimate.com/github/ruboto/ruboto)
2
+
1
3
  Ruboto - JRuby On Android
2
4
  =========================
3
5
 
@@ -1,10 +1,11 @@
1
- Subject: [ANN] Ruboto 1.0.1 release candidate
1
+ Subject: [ANN] Ruboto 1.0.2 release candidate
2
2
 
3
3
  Hi all!
4
4
 
5
- The Ruboto 1.0.1 release candidate is now available.
5
+ The Ruboto 1.0.2 release candidate is now available.
6
6
 
7
- This release focuses on bug fixes and documentation.
7
+ This releases updates to JRuby 1.7.10 and improves installation with
8
+ automated setup of Apache ANT on Windows and Linux.
8
9
 
9
10
  As always we need your help and feedback to ensure the quality of the release. Please install the release candidate using
10
11
 
data/RELEASE_DOC.md CHANGED
@@ -1,6 +1,6 @@
1
- Subject: [ANN] Ruboto 1.0.1 released!
1
+ Subject: [ANN] Ruboto 1.0.2 released!
2
2
 
3
- The Ruboto team is pleased to announce the release of Ruboto 1.0.1.
3
+ The Ruboto team is pleased to announce the release of Ruboto 1.0.2.
4
4
 
5
5
  Ruboto (JRuby on Android) is a platform for developing full stand-alone
6
6
  apps for Android using the Ruby language and libraries. It includes
@@ -8,63 +8,37 @@ support libraries and generators for creating projects, classes, tests,
8
8
  and more. The complete APIs of Android, Java, and Ruby are available to
9
9
  you using the Ruby language.
10
10
 
11
- New in version 1.0.1:
11
+ New in version 1.0.2:
12
12
 
13
- This release focuses on bug fixes and documentation.
13
+ This releases updates to JRuby 1.7.10 and improves installation with
14
+ automated setup of Apache ANT on Windows and Linux.
14
15
 
15
16
  Features:
16
17
 
17
- * Issue #546 Better stack traces using "jruby.rewrite.java.trace" = "true"
18
- * Issue #548 Allow using snapshot versions of jruby-jars
18
+ * Issue #447 Use "ruboto setup" to flag and install ant
19
+ * Issue #564 Update to JRuby 1.7.10
19
20
 
20
21
  Bugfixes:
21
22
 
22
- * Issue #505 Trigger rebuild of the package if non-ruby source has changed
23
- in the "src" directory
24
- * Issue #507 Undefined method `__ruby_object' when implementing a Java
25
- interface
26
- * Issue #537 Generated BroadcastReceiver has incorrect number of argument
27
- for Log.e
28
- * Issue #541 Gem errors with activerecord-jdbc-sqlite3
29
- * Issue #545 JRuby use of javax.annotation.processing breaks use of ARJDBC
30
- * Issue #554 Better error message when trying to run an emulator for a
31
- target that is not installed
32
- * Issue #556 "ruboto emulator" ignores HAXM installation on Windows
23
+ * Issue #525 Quick Start : "Unfortunately, Browser has stopped"
24
+ * Issue #565 Odd behaviour when changing orientation with Fragments
25
+ * Issue #575 Gemfile.lock contains references to gems that are not part
26
+ of the dependencies
33
27
 
34
28
  Documentation:
35
29
 
36
- * Issue #532 Environment setup for windows
37
- * Issue #538 Complete the "What is Ruboto?" WIKI article
38
- * Issue #553 The number of stars for the Ruboto project has disappeared
39
- from the ruboto.org front page
40
- * Issue #560 Add a tutorial for detecting incoming phone calls
41
-
42
- Support:
43
-
44
- * Issue #480 Could not locate Gemfile
45
- * Issue #549 How can I view output?
46
- * Issue #551 rake install start problem on windows
47
- * Issue #552 Problem with rake install start on windows
48
- * Issue #555 Ruboto command not found after installation
30
+ * Issue #568 Error with tutorial on "Example: Open a web page"
49
31
 
50
32
  Community:
51
33
 
52
- * Issue #531 How can I help?
53
-
54
- Pull requests:
55
-
56
- * Issue #550 Fix Log import
57
-
58
- Internal:
59
-
60
- * Issue #513 Refactor to generate special
61
- onCreate/onDestroy/onBind/onStartCommand instead of hard coding
62
- * Issue #559 Remove redundant script file reference in
63
- InheritingBroadcastReceiver
34
+ * Issue #533 How can I help? (di3z )
35
+ * Issue #562 How can I help? (lucasallan)
36
+ * Issue #563 How can I help? (pedroandrade)
37
+ * Issue #572 How can I help? (iamrahulroy)
64
38
 
65
39
  You can find a complete list of issues here:
66
40
 
67
- * https://github.com/ruboto/ruboto/issues?state=closed&milestone=31
41
+ * https://github.com/ruboto/ruboto/issues?state=closed&milestone=27
68
42
 
69
43
 
70
44
  Installation:
data/Rakefile CHANGED
@@ -22,7 +22,8 @@ MANIFEST_FILE = 'AndroidManifest.xml'
22
22
  GEM_FILE = "ruboto-#{Ruboto::VERSION}.gem"
23
23
  GEM_SPEC_FILE = 'ruboto.gemspec'
24
24
  README_FILE = 'README.md'
25
- BLOG_DIR = "#{File.dirname PROJECT_DIR}/ruboto.github.com/_posts"
25
+ WEB_DIR = "#{File.dirname PROJECT_DIR}/ruboto.github.com"
26
+ BLOG_DIR = '_posts'
26
27
  RELEASE_BLOG = "#{BLOG_DIR}/#{Date.today}-Ruboto-#{Ruboto::VERSION}-release-doc.md"
27
28
  RELEASE_BLOG_GLOB = "#{BLOG_DIR}/*-Ruboto-#{Ruboto::VERSION}-release-doc.md"
28
29
  RELEASE_CANDIDATE_DOC = 'RELEASE_CANDICATE_DOC.md'
@@ -104,7 +105,8 @@ end
104
105
 
105
106
  class String
106
107
  def wrap(indent = 0)
107
- scan(/\S.{0,72}\S(?=\s|$)|\S+/).join("\n" + ' ' * indent)
108
+ line_length = 72-indent
109
+ scan(/\S.{0,#{line_length}}\S(?=\s|$)|\S+/).join("\n" + ' ' * indent)
108
110
  end
109
111
  end
110
112
 
@@ -232,7 +234,7 @@ New in version #{milestone_name}:
232
234
 
233
235
  #{(categories.keys & grouped_issues.keys).map do |cat|
234
236
  "#{cat}:\n
235
- #{grouped_issues[cat].map { |i| %Q{* Issue ##{i['number']} #{i['title']}}.wrap(2) }.join("\n")}
237
+ #{grouped_issues[cat].map { |i| %Q{* Issue ##{i['number']} #{i['title'].gsub('`', "'")}}.wrap(2) }.join("\n")}
236
238
  "
237
239
  end.join("\n")}
238
240
  You can find a complete list of issues here:
@@ -290,7 +292,7 @@ layout: post
290
292
  category: news
291
293
  ---
292
294
  EOF
293
- Dir.chdir BLOG_DIR do
295
+ Dir.chdir WEB_DIR do
294
296
  output = `git status --porcelain`
295
297
  old_blog_posts = Dir[RELEASE_BLOG_GLOB] - [RELEASE_BLOG]
296
298
  sh "git rm -f #{old_blog_posts.join(' ')}" unless old_blog_posts.empty?
@@ -372,7 +374,7 @@ desc 'Push the gem to RubyGems'
372
374
  task :release => [:clean, README_FILE, :release_docs, :gem] do
373
375
  output = `git status --porcelain`
374
376
  raise "Workspace not clean!\n#{output}" unless output.empty?
375
- Dir.chdir BLOG_DIR do
377
+ Dir.chdir WEB_DIR do
376
378
  output = `git status --porcelain`
377
379
  raise "Web workspace not clean!\n#{output}" unless output.empty?
378
380
  sh "git add -f #{RELEASE_BLOG}"
data/assets/.gitignore CHANGED
@@ -1,7 +1,8 @@
1
1
  .bundle
2
2
  .DS_Store
3
3
  .idea
4
+ adb_logcat.log
4
5
  bin
5
6
  gen
6
- tmp
7
7
  local.properties
8
+ tmp
@@ -54,23 +54,23 @@ unless DX_FILENAME
54
54
  exit 1
55
55
  end
56
56
 
57
- def manifest;
57
+ def manifest
58
58
  @manifest ||= REXML::Document.new(File.read(MANIFEST_FILE))
59
59
  end
60
60
 
61
- def package;
61
+ def package
62
62
  manifest.root.attribute('package')
63
63
  end
64
64
 
65
- def build_project_name;
65
+ def build_project_name
66
66
  @build_project_name ||= REXML::Document.new(File.read('build.xml')).elements['project'].attribute(:name).value
67
67
  end
68
68
 
69
- def scripts_path;
69
+ def scripts_path
70
70
  @sdcard_path ||= "/mnt/sdcard/Android/data/#{package}/files/scripts"
71
71
  end
72
72
 
73
- def app_files_path;
73
+ def app_files_path
74
74
  @app_files_path ||= "/data/data/#{package}/files"
75
75
  end
76
76
 
@@ -364,7 +364,7 @@ file BUNDLE_JAR => [GEM_FILE, GEM_LOCK_FILE] do
364
364
  next unless File.exists? GEM_FILE
365
365
  puts "Generating #{BUNDLE_JAR}"
366
366
  require 'bundler'
367
- # Issue #547 https://github.com/ruboto/ruboto/issues/547
367
+ # FIXME(uwe): Issue #547 https://github.com/ruboto/ruboto/issues/547
368
368
  if true || Gem::Version.new(Bundler::VERSION) <= Gem::Version.new('1.5.0')
369
369
  require 'bundler/vendored_thor'
370
370
 
@@ -494,7 +494,7 @@ Java::arjdbc.jdbc.AdapterJavaService.new.basicLoad(JRuby.runtime)
494
494
  # ODOT
495
495
 
496
496
  # FIXME(uwe): Extract files with case sensitive names for ARJDBC 1.2.7-1.3.x
497
- puts `jar xf #{jar} arjdbc/mssql/MSSQLRubyJdbcConnection.class arjdbc/sqlite3/SQLite3RubyJdbcConnection.class`
497
+ puts `jar xf #{jar} arjdbc/postgresql/PostgreSQLRubyJdbcConnection.class arjdbc/mssql/MSSQLRubyJdbcConnection.class arjdbc/sqlite3/SQLite3RubyJdbcConnection.class`
498
498
  # EMXIF
499
499
 
500
500
  elsif jar =~ /shared\/jopenssl.jar$/
@@ -146,6 +146,7 @@ public class JRubyAdapter {
146
146
  System.setProperty("jruby.thread.pooling", "true");
147
147
 
148
148
  // Uncomment these to debug/profile Ruby source loading
149
+ // Analyse the output: grep "LoadService: <-" | cut -f5 -d- | cut -c2- | cut -f1 -dm | awk '{total = total + $1}END{print total}'
149
150
  // System.setProperty("jruby.debug.loadService", "true");
150
151
  // System.setProperty("jruby.debug.loadService.timing", "true");
151
152
 
@@ -32,7 +32,7 @@ module Ruboto
32
32
  ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
33
33
  exts.each do |ext|
34
34
  exe = File.join(path, "#{cmd}#{ext}")
35
- if File.executable? exe
35
+ if File.executable?(exe) and not File.directory?(exe)
36
36
  exe.gsub!('\\', '/') if windows?
37
37
  return exe
38
38
  end
@@ -79,6 +79,16 @@ module Ruboto
79
79
  File.join File.expand_path('~'), windows? ? 'AppData/Local/Android/android-sdk' : "android-sdk-#{android_package_os_id}"
80
80
  end
81
81
 
82
+ def package_installer
83
+ case android_package_os_id
84
+ when LINUX
85
+ which('apt-get') or which('yum')
86
+ else
87
+ ## Error
88
+ nil
89
+ end
90
+ end
91
+
82
92
  def path_setup_file
83
93
  case android_package_os_id
84
94
  when MAC_OS_X
@@ -103,16 +113,14 @@ module Ruboto
103
113
  major = t.elements['sdk:major']
104
114
  minor = t.elements['sdk:minor']
105
115
  micro = t.elements['sdk:micro']
116
+ prev = t.elements['sdk:preview']
117
+ next if prev
106
118
  version = major.text
107
119
  version += ".#{minor.text}" if minor
108
120
  version += ".#{micro.text}" if micro
121
+ version += "_rc#{prev.text}" if prev
109
122
  version
110
- end.sort_by { |v| Gem::Version.new(v) }.last
111
-
112
- # FIXME(uwe): Temporary fix for bug in build-tools 19.0.0
113
- return '18.1.1' if type == 'build-tool' && version == '19.0.0'
114
- # EMXIF
115
-
123
+ end.compact.sort_by { |v| Gem::Version.new(v.gsub('_', '.')) }.last
116
124
  version
117
125
  end
118
126
 
@@ -241,10 +249,38 @@ module Ruboto
241
249
  check_all(api_levels)
242
250
  end
243
251
 
252
+ def install_package(accept_all, package_name, pretty_name)
253
+ case android_package_os_id
254
+ when LINUX
255
+ puts "#{pretty_name} was not found."
256
+ installer = package_installer
257
+ if installer
258
+ unless accept_all
259
+ print 'Would you like to and install it? (Y/n): '
260
+ a = STDIN.gets.chomp.upcase
261
+ end
262
+ if accept_all || a == 'Y' || a.empty?
263
+ puts "sudo #{installer} install -y #{package_name}"
264
+ `sudo #{installer} install -y #{package_name}`
265
+ else
266
+ puts
267
+ puts 'You can install #{pretty_name} manually by:'
268
+ puts "sudo #{installer} install #{package_name}"
269
+ puts
270
+ end
271
+ else
272
+ puts "Package installer not found. You'll need to install #{pretty_name} manually."
273
+ end
274
+ else
275
+ raise "Unknown host os for package install: #{RbConfig::CONFIG['host_os']}"
276
+ end
277
+ end
278
+
244
279
  def install_java(accept_all)
245
280
  case android_package_os_id
246
281
  when MAC_OS_X
247
282
  when LINUX
283
+ install_package(accept_all, 'default-jdk', 'Default Java Development Kit')
248
284
  when WINDOWS
249
285
  # FIXME(uwe): Detect and warn if we are not "elevated" with adminstrator rights.
250
286
  #set IS_ELEVATED=0
@@ -300,6 +336,7 @@ module Ruboto
300
336
  case android_package_os_id
301
337
  when MAC_OS_X
302
338
  when LINUX
339
+ install_package(accept_all, 'ant', 'Apache ANT')
303
340
  when WINDOWS
304
341
  # FIXME(uwe): Detect and warn if we are not "elevated" with adminstrator rights.
305
342
  #set IS_ELEVATED=0
@@ -462,6 +462,7 @@ module Ruboto
462
462
  # 'org/jruby/runtime/invokedynamic', # Should be excluded
463
463
  # 'org/jruby/runtime/opto', # What is this?
464
464
  # 'org/jruby/runtime/opto/OptoFactory*', # What is this?
465
+ 'org/jruby/truffle',
465
466
  'org/yecht',
466
467
  ]
467
468
  elsif gem_version >= Gem::Version.new('1.7.5')
@@ -225,7 +225,7 @@ module Ruboto
225
225
 
226
226
  def activity_super_guard(class_name, method_name)
227
227
  if class_name == 'RubotoActivity' && method_name == 'onCreate'
228
- "if (preOnCreate(#{parameters.map { |i| i[0] }.join(', ')})) #{super_return};"
228
+ "if (preOnCreate(#{parameters.map { |i| i[0] }.join(', ')})) #{super_return};\n"
229
229
  end
230
230
  end
231
231
 
@@ -1,4 +1,4 @@
1
1
  module Ruboto
2
- VERSION = '1.0.1'
2
+ VERSION = '1.0.2'
3
3
  UPDATE_VERSION_LIMIT = '0.7.0'
4
4
  end
data/test/arjdbc_test.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  require File.expand_path('test_helper', File.dirname(__FILE__))
2
2
 
3
3
  # FIXME(uwe): Remove check when we stop supporting Android < 4.0.3
4
- if RubotoTest::ANDROID_OS >= 15 || RubotoTest::RUBOTO_PLATFORM != 'STANDALONE'
4
+ if RubotoTest::ANDROID_OS >= 15
5
5
 
6
- class SqldroidTest < Test::Unit::TestCase
6
+ class ArjdbcTest < Test::Unit::TestCase
7
7
  def setup
8
8
  generate_app :bundle => [['activerecord', '<4.0.0'], 'activerecord-jdbcsqlite3-adapter', :sqldroid]
9
9
  end
@@ -12,7 +12,7 @@ class SqldroidTest < Test::Unit::TestCase
12
12
  cleanup_app
13
13
  end
14
14
 
15
- def test_sqldroid
15
+ def test_arjdbc
16
16
  Dir.chdir APP_DIR do
17
17
  File.open('src/ruboto_test_app_activity.rb', 'w'){|f| f << <<EOF}
18
18
  require 'ruboto/widget'
@@ -80,9 +80,7 @@ class RubotoTestAppActivity
80
80
  ActiveRecord::Base.connection.execute "INSERT INTO companions VALUES (8, 'Aragorn')"
81
81
  ActiveRecord::Base.connection.execute "INSERT INTO companions VALUES (9, 'Boromir')"
82
82
  companions = ActiveRecord::Base.connection.execute "SELECT name FROM companions"
83
- run_on_ui_thread do
84
- @adapter.add_all companions
85
- end
83
+ run_on_ui_thread { @adapter.add_all companions }
86
84
  end
87
85
  end
88
86
  end
@@ -61,8 +61,9 @@ class RubotoGenTest < Test::Unit::TestCase
61
61
  # APK was 8766.1KB. PLATFORM: STANDALONE, ANDROID_TARGET: 16, JRuby: 1.7.6
62
62
  # APK was 8781.6KB. PLATFORM: STANDALONE, ANDROID_TARGET: 16, JRuby: 1.7.8
63
63
  # APK was 8789.6KB. PLATFORM: STANDALONE, ANDROID_TARGET: 16, JRuby: 1.7.9
64
+ # APK was 8791.2KB. PLATFORM: STANDALONE, ANDROID_TARGET: 16, JRuby: 1.7.10
64
65
  # APK was 6689.5KB. PLATFORM: STANDALONE, ANDROID_TARGET: 10, JRuby: 9000.dev
65
- # APK was 6962.1KB. PLATFORM: STANDALONE, ANDROID_TARGET: 16, JRuby: 9000.dev
66
+ # APK was 7012.2KB. PLATFORM: STANDALONE, ANDROID_TARGET: 16, JRuby: 9000.dev
66
67
  def test_new_apk_size_is_within_limits
67
68
  apk_size = BigDecimal(File.size("#{APP_DIR}/bin/RubotoTestApp-debug.apk").to_s) / 1024
68
69
  version = " PLATFORM: #{RUBOTO_PLATFORM}"
@@ -74,7 +75,8 @@ class RubotoGenTest < Test::Unit::TestCase
74
75
  '1.7.6' => 8800.0,
75
76
  '1.7.8' => 8800.0,
76
77
  '1.7.9' => 8800.0,
77
- '9000.dev' => 7000.0,
78
+ '1.7.10' => 8800.0,
79
+ '9000.dev' => 7100.0,
78
80
  }[JRUBY_JARS_VERSION.to_s] || 0.0
79
81
  version << ", JRuby: #{JRUBY_JARS_VERSION.to_s}"
80
82
  else
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruboto
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Jackoway
@@ -11,48 +11,48 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2014-01-05 00:00:00.000000000 Z
14
+ date: 2014-02-22 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: main
18
18
  requirement: !ruby/object:Gem::Requirement
19
19
  requirements:
20
- - - ~>
20
+ - - "~>"
21
21
  - !ruby/object:Gem::Version
22
- version: '5.0'
22
+ version: 5.2.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - ~>
27
+ - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '5.0'
29
+ version: 5.2.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: rake
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
- - - ~>
34
+ - - "~>"
35
35
  - !ruby/object:Gem::Version
36
36
  version: '10.0'
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - ~>
41
+ - - "~>"
42
42
  - !ruby/object:Gem::Version
43
43
  version: '10.0'
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: rubyzip
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - ~>
48
+ - - "~>"
49
49
  - !ruby/object:Gem::Version
50
50
  version: '1.0'
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
- - - ~>
55
+ - - "~>"
56
56
  - !ruby/object:Gem::Version
57
57
  version: '1.0'
58
58
  description: |
@@ -218,17 +218,17 @@ require_paths:
218
218
  - lib
219
219
  required_ruby_version: !ruby/object:Gem::Requirement
220
220
  requirements:
221
- - - '>='
221
+ - - ">="
222
222
  - !ruby/object:Gem::Version
223
223
  version: '0'
224
224
  required_rubygems_version: !ruby/object:Gem::Requirement
225
225
  requirements:
226
- - - '>='
226
+ - - ">="
227
227
  - !ruby/object:Gem::Version
228
228
  version: '0'
229
229
  requirements: []
230
230
  rubyforge_project: ruboto/ruboto
231
- rubygems_version: 2.0.6
231
+ rubygems_version: 2.2.0
232
232
  signing_key:
233
233
  specification_version: 4
234
234
  summary: A platform for developing apps using JRuby on Android.