ruboto 0.10.1 → 0.10.2.rc.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -1
- data/Gemfile.lock +1 -1
- data/Rakefile +110 -34
- data/assets/rakelib/ruboto.rake +181 -76
- data/assets/src/org/ruboto/JRubyAdapter.java +7 -3
- data/assets/src/org/ruboto/ScriptLoader.java +12 -4
- data/assets/src/ruboto/widget.rb +43 -34
- data/bin/ruboto +9 -4
- data/lib/ruboto/sdk_versions.rb +11 -2
- data/lib/ruboto/util/build.rb +1 -1
- data/lib/ruboto/util/update.rb +104 -32
- data/lib/ruboto/version.rb +1 -1
- data/test/activity/call_super_activity.rb +2 -3
- data/test/activity/dir_and_file_activity.rb +18 -0
- data/test/activity/dir_and_file_activity_test.rb +20 -0
- data/test/activity/image_button_and_button_activity.rb +4 -5
- data/test/activity/json_activity.rb +21 -0
- data/test/activity/json_activity_test.rb +17 -0
- data/test/activity/location_activity.rb +30 -0
- data/test/activity/location_activity_test.rb +17 -0
- data/test/activity/margins_activity.rb +0 -1
- data/test/activity/option_menu_activity.rb +0 -1
- data/test/activity/psych_activity.rb +8 -2
- data/test/activity/ssl_activity.rb +31 -0
- data/test/activity/ssl_activity_test.rb +22 -0
- data/test/activity/stack_activity.rb +0 -1
- data/test/activity/stack_activity_test.rb +4 -5
- data/test/activity/subclass_activity.rb +0 -1
- data/test/activity/view_constants_activity.rb +0 -1
- data/test/app_test_methods.rb +19 -6
- data/test/minimal_app_test.rb +10 -10
- data/test/rake_test.rb +8 -8
- data/test/ruboto_gen_test.rb +18 -12
- data/test/ruboto_update_test.rb +16 -10
- data/test/test_helper.rb +16 -35
- metadata +21 -9
@@ -322,9 +322,13 @@ public class JRubyAdapter {
|
|
322
322
|
|
323
323
|
Thread.currentThread().setContextClassLoader(classLoader);
|
324
324
|
|
325
|
-
|
326
|
-
|
327
|
-
|
325
|
+
if (appContext.getFilesDir() != null) {
|
326
|
+
String defaultCurrentDir = appContext.getFilesDir().getPath();
|
327
|
+
Log.d("Setting JRuby current directory to " + defaultCurrentDir);
|
328
|
+
callScriptingContainerMethod(Void.class, "setCurrentDirectory", defaultCurrentDir);
|
329
|
+
} else {
|
330
|
+
Log.e("Unable to find app files dir!");
|
331
|
+
}
|
328
332
|
|
329
333
|
if (out != null) {
|
330
334
|
output = out;
|
@@ -4,6 +4,7 @@ import java.io.IOException;
|
|
4
4
|
|
5
5
|
import android.app.ProgressDialog;
|
6
6
|
import android.content.Context;
|
7
|
+
import android.os.Bundle;
|
7
8
|
|
8
9
|
public class ScriptLoader {
|
9
10
|
/**
|
@@ -106,7 +107,7 @@ public class ScriptLoader {
|
|
106
107
|
}
|
107
108
|
if (rubyClass != null) {
|
108
109
|
if (component instanceof android.content.Context) {
|
109
|
-
callOnCreate(rubyInstance, args);
|
110
|
+
callOnCreate(rubyInstance, args, component.getScriptInfo().getRubyClassName());
|
110
111
|
}
|
111
112
|
}
|
112
113
|
component.getScriptInfo().setRubyInstance(rubyInstance);
|
@@ -119,8 +120,8 @@ public class ScriptLoader {
|
|
119
120
|
}
|
120
121
|
}
|
121
122
|
|
122
|
-
private static final void callOnCreate(Object rubyInstance, Object[] args) {
|
123
|
-
System.out.println("Call
|
123
|
+
private static final void callOnCreate(Object rubyInstance, Object[] args, String rubyClassName) {
|
124
|
+
System.out.println("Call onCreate on: " + rubyInstance + ", " + JRubyAdapter.get("JRUBY_VERSION"));
|
124
125
|
// FIXME(uwe): Simplify when we stop support for RubotoCore 0.4.7
|
125
126
|
if (JRubyAdapter.isJRubyPreOneSeven()) {
|
126
127
|
if (args.length > 0) {
|
@@ -129,10 +130,17 @@ public class ScriptLoader {
|
|
129
130
|
JRubyAdapter.put("$ruby_instance", rubyInstance);
|
130
131
|
JRubyAdapter.runScriptlet("$ruby_instance.on_create(" + (args.length > 0 ? "$bundle" : "") + ")");
|
131
132
|
} else if (JRubyAdapter.isJRubyOneSeven()) {
|
132
|
-
|
133
|
+
// FIXME(uwe): Simplify when we stop support for snake case aliasing interface callback methods.
|
134
|
+
if ((Boolean)JRubyAdapter.runScriptlet(rubyClassName + ".instance_methods(false).any?{|m| m.to_sym == :onCreate}")) {
|
135
|
+
JRubyAdapter.runRubyMethod(rubyInstance, "onCreate", args);
|
136
|
+
} else if ((Boolean)JRubyAdapter.runScriptlet(rubyClassName + ".instance_methods(false).any?{|m| m.to_sym == :on_create}")) {
|
137
|
+
JRubyAdapter.runRubyMethod(rubyInstance, "on_create", args);
|
138
|
+
}
|
139
|
+
// EMXIF
|
133
140
|
} else {
|
134
141
|
throw new RuntimeException("Unknown JRuby version: " + JRubyAdapter.get("JRUBY_VERSION"));
|
135
142
|
}
|
143
|
+
// EMXIF
|
136
144
|
}
|
137
145
|
|
138
146
|
}
|
data/assets/src/ruboto/widget.rb
CHANGED
@@ -15,51 +15,60 @@ require 'ruboto/activity'
|
|
15
15
|
# Prepare View
|
16
16
|
#
|
17
17
|
|
18
|
-
java_import
|
18
|
+
java_import 'android.view.View'
|
19
|
+
|
20
|
+
def invoke_with_converted_arguments(target, method_name, values)
|
21
|
+
converted_values = [*values].map { |i| @@convert_constants[i] || i }
|
22
|
+
scaled_values = converted_values.map.with_index do |v, i|
|
23
|
+
v.is_a?(Integer) && v >= 0x80000000 && v <= 0xFFFFFFFF ?
|
24
|
+
v.to_i - 0x100000000 : v
|
25
|
+
end
|
26
|
+
target.send(method_name, *scaled_values)
|
27
|
+
end
|
19
28
|
|
20
29
|
View.class_eval do
|
21
|
-
|
30
|
+
@@convert_constants ||= {}
|
22
31
|
|
23
|
-
|
24
|
-
|
25
|
-
|
32
|
+
def self.add_constant_conversion(from, to)
|
33
|
+
@@convert_constants[from] = to
|
34
|
+
end
|
26
35
|
|
27
|
-
|
28
|
-
|
36
|
+
def self.convert_constant(from)
|
37
|
+
@@convert_constants[from] or from
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.setup_constant_conversion
|
41
|
+
(self.constants - self.superclass.constants).each do |i|
|
42
|
+
View.add_constant_conversion i.downcase.to_sym, self.const_get(i)
|
29
43
|
end
|
44
|
+
end
|
30
45
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
end
|
46
|
+
def configure(context, params = {})
|
47
|
+
if width = params.delete(:width)
|
48
|
+
getLayoutParams.width = View.convert_constant(width)
|
35
49
|
end
|
36
50
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
end
|
51
|
+
if height = params.delete(:height)
|
52
|
+
getLayoutParams.height = View.convert_constant(height)
|
53
|
+
end
|
41
54
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
if margins = params.delete(:margins)
|
47
|
-
getLayoutParams.set_margins(*margins)
|
48
|
-
end
|
55
|
+
if margins = params.delete(:margins)
|
56
|
+
getLayoutParams.set_margins(*margins)
|
57
|
+
end
|
49
58
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
end
|
59
|
+
if layout = params.delete(:layout)
|
60
|
+
lp = getLayoutParams
|
61
|
+
layout.each do |k, v|
|
62
|
+
method_name = k.to_s.gsub(/_([a-z])/) { $1.upcase }
|
63
|
+
invoke_with_converted_arguments(lp, method_name, v)
|
56
64
|
end
|
65
|
+
end
|
57
66
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
end
|
67
|
+
params.each do |k, v|
|
68
|
+
method_name = "set#{k.to_s.gsub(/(^|_)([a-z])/) { $2.upcase }}"
|
69
|
+
invoke_with_converted_arguments(self, method_name, v)
|
62
70
|
end
|
71
|
+
end
|
63
72
|
end
|
64
73
|
|
65
74
|
#
|
@@ -96,7 +105,7 @@ def ruboto_import_widget(class_name, package_name="android.widget")
|
|
96
105
|
java_import klass
|
97
106
|
class_name = klass.java_class.name.split('.')[-1]
|
98
107
|
end
|
99
|
-
|
108
|
+
|
100
109
|
return unless klass
|
101
110
|
|
102
111
|
RubotoActivity.class_eval "
|
@@ -185,7 +194,7 @@ def setup_spinner
|
|
185
194
|
@adapter_list = Java::java.util.ArrayList.new
|
186
195
|
@adapter_list.addAll(params[:list])
|
187
196
|
item_layout = params.delete(:item_layout) || R::layout::simple_spinner_item
|
188
|
-
@adapter
|
197
|
+
@adapter = Java::android.widget.ArrayAdapter.new(context, item_layout, @adapter_list)
|
189
198
|
@adapter.setDropDownViewResource(params.delete(:dropdown_layout) || R::layout::simple_spinner_dropdown_item)
|
190
199
|
setAdapter @adapter
|
191
200
|
params.delete :list
|
data/bin/ruboto
CHANGED
@@ -1,12 +1,17 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
`android list`
|
3
|
+
output = `android list 2>&1`
|
4
4
|
if $? != 0
|
5
|
-
puts "Android SDK not in path"
|
5
|
+
puts "Android SDK not in path\n#{output}"
|
6
6
|
exit 1
|
7
7
|
end
|
8
8
|
|
9
|
-
|
9
|
+
begin
|
10
|
+
require 'ruboto/commands/base'
|
11
|
+
rescue RuntimeError
|
12
|
+
puts $!.message
|
13
|
+
exit 1
|
14
|
+
end
|
10
15
|
|
11
16
|
# Run Base, which will handle actual commands
|
12
|
-
Ruboto::Commands::Base.main
|
17
|
+
Ruboto::Commands::Base.main
|
data/lib/ruboto/sdk_versions.rb
CHANGED
@@ -9,9 +9,18 @@ module Ruboto
|
|
9
9
|
if ENV['ANDROID_HOME']
|
10
10
|
ANDROID_HOME = ENV['ANDROID_HOME']
|
11
11
|
else
|
12
|
-
adb_location = `#{RUBY_PLATFORM =~ /mingw|mswin/ ?
|
13
|
-
|
12
|
+
adb_location = `#{RUBY_PLATFORM =~ /mingw|mswin/ ? 'where' : 'which'} adb`.chomp
|
13
|
+
if adb_location.empty?
|
14
|
+
raise 'Unable to locate the "adb" command. Either set the ANDROID_HOME environment variable or add the location of the "adb" command to your path.'
|
15
|
+
end
|
14
16
|
ANDROID_HOME = File.dirname(File.dirname(Pathname.new(adb_location).realpath))
|
17
|
+
unless File.exists? "#{ANDROID_HOME}/tools"
|
18
|
+
puts "Found '#{adb_location}' but it is not in a proper Android SDK installation."
|
19
|
+
end
|
20
|
+
end
|
21
|
+
unless File.exists? "#{ANDROID_HOME}/tools"
|
22
|
+
raise "The '<ANDROID_HOME>/tools' directory is missing.
|
23
|
+
Please set the ANDROID_HOME environment variable to a proper Android SDK installation."
|
15
24
|
end
|
16
25
|
ANDROID_TOOLS_REVISION = File.read("#{ANDROID_HOME}/tools/source.properties").slice(/Pkg.Revision=\d+/).slice(/\d+$/).to_i
|
17
26
|
end
|
data/lib/ruboto/util/build.rb
CHANGED
@@ -56,7 +56,7 @@ module Ruboto
|
|
56
56
|
|
57
57
|
# Remove methods changed outside of the scope of the sdk versions
|
58
58
|
methods = methods.select{|i| !i.attribute('api_added') || (i.attribute('api_added').to_i <= target_api)}
|
59
|
-
methods = methods.select{|i| !i.attribute('deprecated') || (i.attribute('deprecated').to_i > min_api)}
|
59
|
+
# methods = methods.select{|i| !i.attribute('deprecated') || (i.attribute('deprecated').to_i > min_api)}
|
60
60
|
methods = methods.select{|i| !i.attribute('api_removed') || (i.attribute('api_removed').to_i > min_api)}
|
61
61
|
|
62
62
|
# Inform and remove methods that do not exist in one of the sdk versions
|
data/lib/ruboto/util/update.rb
CHANGED
@@ -161,10 +161,14 @@ module Ruboto
|
|
161
161
|
log_action("Copying #{JRubyJars::core_jar_path} to libs") { copier.copy_from_absolute_path JRubyJars::core_jar_path, "libs" }
|
162
162
|
log_action("Copying #{JRubyJars::stdlib_jar_path} to libs") { copier.copy_from_absolute_path JRubyJars::stdlib_jar_path, "libs" }
|
163
163
|
|
164
|
-
|
164
|
+
unless File.read('project.properties') =~ /^dex.force.jumbo=/
|
165
|
+
log_action('Setting JUMBO dex file format') do
|
166
|
+
File.open('project.properties', 'a') { |f| f << "dex.force.jumbo=true\n" }
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
log_action('Copying dx.jar to libs') do
|
165
171
|
copier.copy 'libs'
|
166
|
-
# FIXME(uwe): We may need this for newer Android SDK versions. Keeping as reminder.
|
167
|
-
# File.open('project.properties', 'a'){|f| f << "dex.force.jumbo=true\n"}
|
168
172
|
end
|
169
173
|
|
170
174
|
reconfigure_jruby_libs(new_jruby_version)
|
@@ -357,7 +361,7 @@ module Ruboto
|
|
357
361
|
`jar -xf #{jruby_core}`
|
358
362
|
raise "Unpacking jruby-core jar failed: #$?" unless $? == 0
|
359
363
|
File.delete jruby_core
|
360
|
-
if Gem::Version.new(jruby_core_version) >= Gem::Version.new('1.7.
|
364
|
+
if Gem::Version.new(jruby_core_version) >= Gem::Version.new('1.7.3.dev')
|
361
365
|
excluded_core_packages = [
|
362
366
|
'**/*Darwin*',
|
363
367
|
'**/*Ruby20*',
|
@@ -376,6 +380,7 @@ module Ruboto
|
|
376
380
|
'jnr/ffi/types',
|
377
381
|
'jnr/posix/MacOS*',
|
378
382
|
'jnr/posix/OpenBSD*',
|
383
|
+
'jnr/x86asm',
|
379
384
|
'org/apache',
|
380
385
|
'org/fusesource',
|
381
386
|
'org/jruby/ant',
|
@@ -390,16 +395,43 @@ module Ruboto
|
|
390
395
|
# 'org/jruby/ext/ffi', # Used by several JRuby core classes, but should not be needed unless we add FFI support
|
391
396
|
'org/jruby/ext/ffi/io',
|
392
397
|
'org/jruby/ext/ffi/jffi',
|
393
|
-
'org/jruby/ext/openssl', # TODO(uwe): Issue #154 Add back when we add jruby-openssl.
|
394
398
|
'org/jruby/javasupport/bsf',
|
395
|
-
|
396
399
|
# 'org/jruby/management', # should be excluded
|
397
|
-
|
398
|
-
'org/jruby/org/bouncycastle', # TODO(uwe): Issue #154 Add back when we add jruby-openssl. The bouncycastle included in Android is cripled.
|
399
|
-
|
400
400
|
# 'org/jruby/runtime/invokedynamic', # Should be excluded
|
401
401
|
]
|
402
|
-
elsif Gem::Version.new(jruby_core_version) >= Gem::Version.new('1.7.
|
402
|
+
elsif Gem::Version.new(jruby_core_version) >= Gem::Version.new('1.7.2')
|
403
|
+
excluded_core_packages = [
|
404
|
+
'**/*Darwin*',
|
405
|
+
'**/*Ruby20*',
|
406
|
+
'**/*Solaris*',
|
407
|
+
'**/*windows*',
|
408
|
+
'**/*Windows*',
|
409
|
+
'META-INF',
|
410
|
+
'com/headius',
|
411
|
+
'com/kenai/constantine', 'com/kenai/jffi', 'com/martiansoftware',
|
412
|
+
'jline', 'jni',
|
413
|
+
'jnr/constants/platform/darwin', 'jnr/constants/platform/fake', 'jnr/constants/platform/freebsd',
|
414
|
+
'jnr/constants/platform/openbsd', 'jnr/constants/platform/sunos',
|
415
|
+
'jnr/ffi/annotations', 'jnr/ffi/byref',
|
416
|
+
'jnr/ffi/provider', 'jnr/ffi/util',
|
417
|
+
'jnr/ffi/Struct$*',
|
418
|
+
'jnr/ffi/types',
|
419
|
+
'jnr/posix/MacOS*',
|
420
|
+
'jnr/posix/OpenBSD*',
|
421
|
+
'org/apache',
|
422
|
+
'org/fusesource',
|
423
|
+
'org/jruby/ant',
|
424
|
+
'org/jruby/cext',
|
425
|
+
'org/jruby/compiler/util',
|
426
|
+
'org/jruby/demo',
|
427
|
+
'org/jruby/embed/bsf',
|
428
|
+
'org/jruby/embed/jsr223',
|
429
|
+
'org/jruby/embed/osgi',
|
430
|
+
'org/jruby/ext/ffi/io',
|
431
|
+
'org/jruby/ext/ffi/jffi',
|
432
|
+
'org/jruby/javasupport/bsf',
|
433
|
+
]
|
434
|
+
elsif Gem::Version.new(jruby_core_version) >= Gem::Version.new('1.7.1')
|
403
435
|
excluded_core_packages = [
|
404
436
|
'**/*Darwin*',
|
405
437
|
'**/*Ruby20*',
|
@@ -422,24 +454,16 @@ module Ruboto
|
|
422
454
|
'org/fusesource',
|
423
455
|
'org/jruby/ant',
|
424
456
|
'org/jruby/cext',
|
425
|
-
# 'org/jruby/compiler', # Needed for initialization, but shoud not be necessary
|
426
|
-
# 'org/jruby/compiler/impl', # Needed for initialization, but shoud not be necessary
|
427
457
|
'org/jruby/compiler/util',
|
428
458
|
'org/jruby/demo',
|
429
459
|
'org/jruby/embed/bsf',
|
430
460
|
'org/jruby/embed/jsr223',
|
431
461
|
'org/jruby/embed/osgi',
|
432
|
-
# 'org/jruby/ext/ffi', # Used by several JRuby core classes, but should not be needed unless we add FFI support
|
433
462
|
'org/jruby/ext/ffi/io',
|
434
463
|
'org/jruby/ext/ffi/jffi',
|
435
464
|
'org/jruby/ext/openssl', # TODO(uwe): Issue #154 Add back when we add jruby-openssl.
|
436
465
|
'org/jruby/javasupport/bsf',
|
437
|
-
|
438
|
-
# 'org/jruby/management', # should be excluded
|
439
|
-
|
440
466
|
'org/jruby/org/bouncycastle', # TODO(uwe): Issue #154 Add back when we add jruby-openssl. The bouncycastle included in Android is cripled.
|
441
|
-
|
442
|
-
# 'org/jruby/runtime/invokedynamic', # Should be excluded
|
443
467
|
]
|
444
468
|
elsif Gem::Version.new(jruby_core_version) >= Gem::Version.new('1.7.0')
|
445
469
|
# TODO(uwe): Remove when we stop supporting jruby-jars 1.7.0
|
@@ -476,7 +500,7 @@ module Ruboto
|
|
476
500
|
'org/jruby/javasupport/bsf',
|
477
501
|
]
|
478
502
|
# ODOT
|
479
|
-
elsif Gem::Version.new(jruby_core_version)
|
503
|
+
elsif Gem::Version.new(jruby_core_version) >= Gem::Version.new('1.6.0')
|
480
504
|
# TODO(uwe): Remove when we stop supporting jruby-jars 1.6.x
|
481
505
|
print 'Retaining com.kenai.constantine and removing jnr for JRuby 1.6.x...'
|
482
506
|
excluded_core_packages = [
|
@@ -504,7 +528,7 @@ module Ruboto
|
|
504
528
|
if File.directory? i
|
505
529
|
FileUtils.remove_dir(i, true) rescue puts "Failed to remove package: #{i} (#{$!})"
|
506
530
|
elsif Dir[i].each { |f| FileUtils.rm_rf f }.empty?
|
507
|
-
|
531
|
+
print "exclude pattern #{i.inspect} found no files..."
|
508
532
|
end
|
509
533
|
end
|
510
534
|
|
@@ -542,6 +566,7 @@ module Ruboto
|
|
542
566
|
|
543
567
|
# - Moves ruby stdlib to the root of the jruby-stdlib jar
|
544
568
|
def reconfigure_jruby_stdlib
|
569
|
+
min_sdk_version = verify_manifest.elements['uses-sdk'].attributes["android:minSdkVersion"].to_i
|
545
570
|
excluded_stdlibs = [*verify_ruboto_config[:excluded_stdlibs]].compact
|
546
571
|
Dir.chdir 'libs' do
|
547
572
|
jruby_stdlib = JRubyJars::stdlib_jar_path.split('/')[-1]
|
@@ -557,12 +582,13 @@ module Ruboto
|
|
557
582
|
FileUtils.move 'old/META-INF/jruby.home/lib', 'new/jruby.home/lib'
|
558
583
|
FileUtils.rm_rf 'new/jruby.home/lib/ruby/gems'
|
559
584
|
|
585
|
+
raise "Unrecognized JRuby stdlib jar: #{jruby_stdlib}" unless jruby_stdlib =~ /jruby-stdlib-(.*).jar/
|
586
|
+
jruby_stdlib_version = Gem::Version.new($1)
|
587
|
+
|
560
588
|
if excluded_stdlibs.any?
|
561
589
|
|
562
590
|
# TODO(uwe): Simplify when we stop supporting JRuby < 1.7.0
|
563
|
-
|
564
|
-
jruby_version = Gem::Version.new($1)
|
565
|
-
if Gem::Requirement.new('< 1.7.0.preview1') =~ jruby_version
|
591
|
+
if jruby_stdlib_version < Gem::Version.new('1.7.0.preview1')
|
566
592
|
lib_dirs = ['1.8', '1.9', 'site_ruby/1.8', 'site_ruby/1.9', 'site_ruby/shared']
|
567
593
|
else
|
568
594
|
lib_dirs = ['1.8', '1.9', 'shared']
|
@@ -580,14 +606,60 @@ module Ruboto
|
|
580
606
|
print "excluded #{excluded_stdlibs.join(' ')}..."
|
581
607
|
end
|
582
608
|
|
583
|
-
Dir.chdir
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
609
|
+
Dir.chdir 'new' do
|
610
|
+
Dir['**/*.jar'].each do |j|
|
611
|
+
|
612
|
+
# FIXME(uwe): Installing bcmail-jdk15-146.jar + bcprov-jdk15-146.jar fails due to
|
613
|
+
# http://code.google.com/p/android/issues/detail?id=40409
|
614
|
+
# This breaks ssl and https. Remove when we stop supporting JRuby <= 1.7.2
|
615
|
+
if j =~ /bcmail|bcprov-jdk15-146/
|
616
|
+
FileUtils.rm j
|
617
|
+
next
|
618
|
+
end
|
619
|
+
# EMXIF
|
620
|
+
|
621
|
+
# FIXME(uwe): Adding the jars triggers the "LinearAlloc exceeded capacity"
|
622
|
+
# bug in Android 2.3. Remove when we stop supporting android-10 and older
|
623
|
+
if min_sdk_version <= 10
|
624
|
+
FileUtils.rm j
|
625
|
+
next
|
626
|
+
end
|
627
|
+
# EMXIF
|
628
|
+
|
629
|
+
# FIXME(uwe): These should be included but break the 64K method count limit
|
630
|
+
if j =~ /bcpkix-jdk15on-147|bcprov-jdk15on-147|jopenssl|kryptcore|kryptproviderjdk/
|
631
|
+
FileUtils.rm j
|
632
|
+
next
|
633
|
+
end
|
634
|
+
# EMXIF
|
635
|
+
|
636
|
+
print "#{File.basename(j).chomp('.jar')}..."
|
637
|
+
system "jar xf #{j}"
|
638
|
+
FileUtils.rm j
|
639
|
+
|
640
|
+
if j =~ %r{json/ext/generator.jar$}
|
641
|
+
jar_load_code = <<-END_CODE
|
642
|
+
require 'jruby'
|
643
|
+
puts 'Starting JSON Generator Service'
|
644
|
+
public
|
645
|
+
Java::json.ext.GeneratorService.new.basicLoad(JRuby.runtime)
|
646
|
+
END_CODE
|
647
|
+
elsif j =~ %r{json/ext/parser.jar$}
|
648
|
+
jar_load_code = <<-END_CODE
|
649
|
+
require 'jruby'
|
650
|
+
puts 'Starting JSON Parser Service'
|
651
|
+
public
|
652
|
+
Java::json.ext.ParserService.new.basicLoad(JRuby.runtime)
|
653
|
+
END_CODE
|
654
|
+
else
|
655
|
+
jar_load_code = ''
|
656
|
+
end
|
657
|
+
|
658
|
+
File.open("#{j}.rb", 'w'){|f| f << jar_load_code}
|
659
|
+
File.open("#{j}.jar.rb", 'w'){|f| f << jar_load_code}
|
660
|
+
#FileUtils.rm Dir['**/*$POPULATOR.class']
|
661
|
+
#FileUtils.rm Dir['**/*$INVOKER$*.class']
|
662
|
+
end
|
591
663
|
|
592
664
|
`jar -cf ../../#{jruby_stdlib} .`
|
593
665
|
raise "Creating repackaged jruby-stdlib jar failed: #$?" unless $? == 0
|
@@ -595,7 +667,7 @@ module Ruboto
|
|
595
667
|
end
|
596
668
|
end
|
597
669
|
|
598
|
-
FileUtils.remove_dir
|
670
|
+
FileUtils.remove_dir 'tmp', true
|
599
671
|
end
|
600
672
|
end
|
601
673
|
|