ruboto 0.10.2 → 0.11.0.rc.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.
- data/Gemfile +2 -4
- data/Gemfile.lock +12 -6
- data/README.md +2 -2
- data/assets/rakelib/ruboto.rake +165 -7
- data/assets/samples/sample_activity.rb +1 -1
- data/assets/samples/sample_activity_test.rb +2 -2
- data/assets/samples/sample_broadcast_receiver.rb +3 -3
- data/assets/samples/sample_broadcast_receiver_test.rb +1 -1
- data/assets/samples/sample_service.rb +2 -2
- data/assets/src/RubotoBroadcastReceiver.java +9 -0
- data/assets/src/org/ruboto/EntryPointActivity.java +3 -0
- data/assets/src/org/ruboto/JRubyAdapter.java +57 -23
- data/assets/src/org/ruboto/ScriptLoader.java +5 -2
- data/assets/src/ruboto/activity.rb +12 -13
- data/assets/src/ruboto/base.rb +2 -2
- data/assets/src/ruboto/broadcast_receiver.rb +1 -1
- data/assets/src/ruboto/package.rb +2 -2
- data/assets/src/ruboto/preference.rb +4 -4
- data/assets/src/ruboto/service.rb +9 -10
- data/assets/src/ruboto/util/stack.rb +10 -2
- data/assets/src/ruboto/widget.rb +5 -3
- data/lib/ruboto/sdk_versions.rb +1 -1
- data/lib/ruboto/util/update.rb +97 -52
- data/lib/ruboto/version.rb +1 -1
- data/lib/ruboto.rb +1 -1
- data/test/activity/image_button_activity.rb +1 -1
- data/test/activity/image_button_and_button_activity.rb +1 -1
- data/test/activity/json_activity.rb +1 -1
- data/test/activity/margins_activity.rb +1 -1
- data/test/activity/navigation_activity.rb +4 -4
- data/test/activity/navigation_target_activity.rb +1 -1
- data/test/activity/option_menu_activity.rb +2 -2
- data/test/activity/psych_activity.rb +1 -1
- data/test/activity/ruby_file_activity.rb +1 -1
- data/test/activity/stack_activity.rb +1 -1
- data/test/activity/startup_exception_activity.rb +31 -0
- data/test/activity/startup_exception_activity_test.rb +15 -0
- data/test/activity/subclass_activity.rb +2 -2
- data/test/activity/view_constants_activity.rb +1 -1
- data/test/app_test_methods.rb +1 -5
- data/test/broadcast_receiver_test.rb +4 -4
- data/test/minimal_app_test.rb +36 -8
- data/test/ruboto_gen_test.rb +5 -9
- data/test/service_test.rb +5 -5
- data/test/sqldroid_test.rb +1 -1
- data/test/test_helper.rb +13 -4
- metadata +67 -50
@@ -24,9 +24,17 @@ class Thread
|
|
24
24
|
def self.with_large_stack(opts = {}, &block)
|
25
25
|
opts = {:size => opts} if opts.is_a? Integer
|
26
26
|
stack_size_kb = opts.delete(:size) || 64
|
27
|
-
name = opts.delete(:name) ||
|
27
|
+
name = opts.delete(:name) || 'Thread with large stack'
|
28
28
|
raise "Unknown option(s): #{opts.inspect}" unless opts.empty?
|
29
|
-
|
29
|
+
block_with_logging = proc do
|
30
|
+
begin
|
31
|
+
block.call
|
32
|
+
rescue Exception
|
33
|
+
STDERR.puts "Exception in #{name}: #{$!}\n#{$!.backtrace.join("\n")}"
|
34
|
+
raise
|
35
|
+
end
|
36
|
+
end
|
37
|
+
t = java.lang.Thread.new(nil, block_with_logging, name, stack_size_kb * 1024)
|
30
38
|
t.start
|
31
39
|
t
|
32
40
|
end
|
data/assets/src/ruboto/widget.rb
CHANGED
@@ -75,7 +75,7 @@ end
|
|
75
75
|
# Load ViewGroup constants
|
76
76
|
#
|
77
77
|
|
78
|
-
java_import
|
78
|
+
java_import 'android.view.ViewGroup'
|
79
79
|
ViewGroup::LayoutParams.constants.each do |i|
|
80
80
|
View.add_constant_conversion i.downcase.to_sym, ViewGroup::LayoutParams.const_get(i)
|
81
81
|
end
|
@@ -84,7 +84,7 @@ end
|
|
84
84
|
# Load Gravity constants
|
85
85
|
#
|
86
86
|
|
87
|
-
java_import
|
87
|
+
java_import 'android.view.Gravity'
|
88
88
|
Gravity.constants.each do |i|
|
89
89
|
View.add_constant_conversion i.downcase.to_sym, Gravity.const_get(i)
|
90
90
|
end
|
@@ -97,7 +97,7 @@ def ruboto_import_widgets(*widgets)
|
|
97
97
|
widgets.each { |i| ruboto_import_widget i }
|
98
98
|
end
|
99
99
|
|
100
|
-
def ruboto_import_widget(class_name, package_name=
|
100
|
+
def ruboto_import_widget(class_name, package_name='android.widget')
|
101
101
|
if class_name.is_a?(String) or class_name.is_a?(Symbol)
|
102
102
|
klass = java_import("#{package_name}.#{class_name}") || eval("Java::#{package_name}.#{class_name}")
|
103
103
|
else
|
@@ -165,6 +165,7 @@ def setup_image_button
|
|
165
165
|
end
|
166
166
|
|
167
167
|
def setup_list_view
|
168
|
+
Java::android.widget.ListView.__persistent__ = true
|
168
169
|
Java::android.widget.ListView.class_eval do
|
169
170
|
def configure(context, params = {})
|
170
171
|
if list = params.delete(:list)
|
@@ -186,6 +187,7 @@ def setup_list_view
|
|
186
187
|
end
|
187
188
|
|
188
189
|
def setup_spinner
|
190
|
+
Java::android.widget.Spinner.__persistent__ = true
|
189
191
|
Java::android.widget.Spinner.class_eval do
|
190
192
|
attr_reader :adapter, :adapter_list
|
191
193
|
|
data/lib/ruboto/sdk_versions.rb
CHANGED
@@ -13,7 +13,7 @@ module Ruboto
|
|
13
13
|
}
|
14
14
|
MINIMUM_SUPPORTED_SDK_LEVEL = 7
|
15
15
|
MINIMUM_SUPPORTED_SDK = "android-#{MINIMUM_SUPPORTED_SDK_LEVEL}"
|
16
|
-
DEFAULT_TARGET_SDK_LEVEL =
|
16
|
+
DEFAULT_TARGET_SDK_LEVEL = 10
|
17
17
|
DEFAULT_TARGET_SDK = "android-#{DEFAULT_TARGET_SDK_LEVEL}"
|
18
18
|
if ENV['ANDROID_HOME']
|
19
19
|
ANDROID_HOME = ENV['ANDROID_HOME']
|
data/lib/ruboto/util/update.rb
CHANGED
@@ -36,7 +36,7 @@ module Ruboto
|
|
36
36
|
puts "\nGenerating Android test project #{name} in #{root}..."
|
37
37
|
system %Q{android create test-project -m "#{root.gsub('"', '\"')}" -n "#{name}Test" -p "#{root.gsub('"', '\"')}/test"}
|
38
38
|
FileUtils.rm_rf File.join(root, 'test', 'src', verify_package.split('.'))
|
39
|
-
puts
|
39
|
+
puts 'Done'
|
40
40
|
end
|
41
41
|
|
42
42
|
Dir.chdir File.join(root, 'test') do
|
@@ -67,7 +67,7 @@ module Ruboto
|
|
67
67
|
# puts 'Added external permission tag'
|
68
68
|
# end
|
69
69
|
|
70
|
-
File.open(
|
70
|
+
File.open('AndroidManifest.xml', 'w') { |f| REXML::Formatters::OrderedAttributes.new(4).write(test_manifest.document, f) }
|
71
71
|
|
72
72
|
run_tests_override = <<-EOF
|
73
73
|
<!-- BEGIN added by Ruboto -->
|
@@ -120,14 +120,14 @@ module Ruboto
|
|
120
120
|
# EMXIF
|
121
121
|
|
122
122
|
ant_script.gsub!(/\s*<!-- BEGIN added by Ruboto -->.*?<!-- END added by Ruboto -->\s*/m, '')
|
123
|
-
raise
|
123
|
+
raise 'Bad ANT script' unless ant_script.gsub!(/\s*(<\/project>)/, "\n\n#{run_tests_override}\n\n\\1")
|
124
124
|
File.open('build.xml', 'w') { |f| f << ant_script }
|
125
125
|
end
|
126
126
|
end
|
127
127
|
|
128
128
|
def update_jruby(force=nil, explicit = false)
|
129
|
-
jruby_core = Dir.glob(
|
130
|
-
jruby_stdlib = Dir.glob(
|
129
|
+
jruby_core = Dir.glob('libs/jruby-core-*.jar')[0]
|
130
|
+
jruby_stdlib = Dir.glob('libs/jruby-stdlib-*.jar')[0]
|
131
131
|
|
132
132
|
unless force
|
133
133
|
if !jruby_core || !jruby_stdlib
|
@@ -145,7 +145,7 @@ module Ruboto
|
|
145
145
|
new_jruby_version = JRubyJars::VERSION
|
146
146
|
|
147
147
|
unless force
|
148
|
-
current_jruby_version = jruby_core ? jruby_core[16..-5] :
|
148
|
+
current_jruby_version = jruby_core ? jruby_core[16..-5] : 'None'
|
149
149
|
if current_jruby_version == new_jruby_version
|
150
150
|
puts "JRuby is up to date at version #{new_jruby_version}. Make sure you 'gem update jruby-jars' if there is a new version."
|
151
151
|
return false
|
@@ -155,11 +155,11 @@ module Ruboto
|
|
155
155
|
puts "New jruby version: #{new_jruby_version}"
|
156
156
|
end
|
157
157
|
|
158
|
-
copier = AssetCopier.new Ruboto::ASSETS, File.expand_path(
|
159
|
-
log_action("Removing #{jruby_core}") { File.delete *Dir.glob(
|
160
|
-
log_action("Removing #{jruby_stdlib}") { File.delete *Dir.glob(
|
161
|
-
log_action("Copying #{JRubyJars::core_jar_path} to libs") { copier.copy_from_absolute_path JRubyJars::core_jar_path,
|
162
|
-
log_action("Copying #{JRubyJars::stdlib_jar_path} to libs") { copier.copy_from_absolute_path JRubyJars::stdlib_jar_path,
|
158
|
+
copier = AssetCopier.new Ruboto::ASSETS, File.expand_path('.')
|
159
|
+
log_action("Removing #{jruby_core}") { File.delete *Dir.glob('libs/jruby-core-*.jar') } if jruby_core
|
160
|
+
log_action("Removing #{jruby_stdlib}") { File.delete *Dir.glob('libs/jruby-stdlib-*.jar') } if jruby_stdlib
|
161
|
+
log_action("Copying #{JRubyJars::core_jar_path} to libs") { copier.copy_from_absolute_path JRubyJars::core_jar_path, 'libs' }
|
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
165
|
log_action('Setting JUMBO dex file format') do
|
@@ -182,17 +182,17 @@ module Ruboto
|
|
182
182
|
FileUtils.rm(Dir['libs/dexmaker*.jar'])
|
183
183
|
# EMXIF
|
184
184
|
|
185
|
-
jar_file = Dir.glob(
|
185
|
+
jar_file = Dir.glob('libs/dx.jar')[0]
|
186
186
|
|
187
187
|
# FIXME(uwe): Remove when we stop updating from Ruboto 0.10.0 and older.
|
188
|
-
jruby_present = !!Dir.glob(
|
188
|
+
jruby_present = !!Dir.glob('libs/jruby-core-*.jar')[0]
|
189
189
|
log_action("Removing #{jar_file}") { File.delete jar_file } if jar_file && !jruby_present
|
190
190
|
# EMXIF
|
191
191
|
|
192
192
|
return if !jar_file && !force
|
193
193
|
|
194
|
-
copier = AssetCopier.new Ruboto::ASSETS, File.expand_path(
|
195
|
-
log_action(
|
194
|
+
copier = AssetCopier.new Ruboto::ASSETS, File.expand_path('.')
|
195
|
+
log_action('Copying dx.jar to libs') { copier.copy 'libs' }
|
196
196
|
end
|
197
197
|
|
198
198
|
def update_assets
|
@@ -229,9 +229,9 @@ module Ruboto
|
|
229
229
|
|
230
230
|
def update_classes(old_version, force = nil)
|
231
231
|
copier = Ruboto::Util::AssetCopier.new Ruboto::ASSETS, '.'
|
232
|
-
log_action(
|
233
|
-
log_action(
|
234
|
-
Dir[
|
232
|
+
log_action('Ruboto java classes') { copier.copy 'src/org/ruboto/*.java' }
|
233
|
+
log_action('Ruboto java test classes') { copier.copy 'src/org/ruboto/test/*.java', 'test' }
|
234
|
+
Dir['src/**/*.java'].each do |f|
|
235
235
|
source_code = File.read(f)
|
236
236
|
if source_code =~ /^\s*package\s+org.ruboto\s*;/
|
237
237
|
next
|
@@ -241,7 +241,7 @@ module Ruboto
|
|
241
241
|
generate_inheriting_file(class_name, subclass_name, verify_package)
|
242
242
|
|
243
243
|
# FIXME(uwe): Remove when we stop supporting upgrading from ruboto 0.7.0 and ruboto 0.8.0
|
244
|
-
if
|
244
|
+
if old_version == '0.7.0' || old_version == '0.8.0'
|
245
245
|
puts "Ruboto version #{old_version.inspect} detected."
|
246
246
|
script_file = File.expand_path("#{SCRIPTS_DIR}/#{underscore(subclass_name)}.rb")
|
247
247
|
puts "Adding explicit super call in #{script_file}"
|
@@ -272,8 +272,8 @@ module Ruboto
|
|
272
272
|
def update_manifest(min_sdk, target, force = false)
|
273
273
|
log_action("\nAdding RubotoActivity, RubotoDialog, RubotoService, and SDK versions to the manifest") do
|
274
274
|
if sdk_element = verify_manifest.elements['uses-sdk']
|
275
|
-
min_sdk ||= sdk_element.attributes[
|
276
|
-
target ||= sdk_element.attributes[
|
275
|
+
min_sdk ||= sdk_element.attributes['android:minSdkVersion']
|
276
|
+
target ||= sdk_element.attributes['android:targetSdkVersion']
|
277
277
|
else
|
278
278
|
min_sdk ||= MINIMUM_SUPPORTED_SDK_LEVEL
|
279
279
|
target ||= MINIMUM_SUPPORTED_SDK_LEVEL
|
@@ -295,30 +295,30 @@ module Ruboto
|
|
295
295
|
app_element.attributes['android:largeHeap'] ||= 'true'
|
296
296
|
end
|
297
297
|
|
298
|
-
|
299
|
-
app_element.add_element 'activity', {
|
298
|
+
unless app_element.elements["activity[@android:name='org.ruboto.RubotoActivity']"]
|
299
|
+
app_element.add_element 'activity', {'android:name' => 'org.ruboto.RubotoActivity', 'android:exported' => 'false'}
|
300
300
|
end
|
301
301
|
|
302
|
-
|
303
|
-
app_element.add_element 'activity', {
|
302
|
+
unless app_element.elements["activity[@android:name='org.ruboto.RubotoDialog']"]
|
303
|
+
app_element.add_element 'activity', {'android:name' => 'org.ruboto.RubotoDialog', 'android:exported' => 'false', 'android:theme' => '@android:style/Theme.Dialog'}
|
304
304
|
end
|
305
305
|
|
306
|
-
|
307
|
-
app_element.add_element 'service', {
|
306
|
+
unless app_element.elements["service[@android:name='org.ruboto.RubotoService']"]
|
307
|
+
app_element.add_element 'service', {'android:name' => 'org.ruboto.RubotoService', 'android:exported' => 'false'}
|
308
308
|
end
|
309
309
|
|
310
310
|
if sdk_element
|
311
|
-
sdk_element.attributes[
|
312
|
-
sdk_element.attributes[
|
311
|
+
sdk_element.attributes['android:minSdkVersion'] = min_sdk
|
312
|
+
sdk_element.attributes['android:targetSdkVersion'] = target
|
313
313
|
else
|
314
|
-
verify_manifest.add_element 'uses-sdk', {
|
314
|
+
verify_manifest.add_element 'uses-sdk', {'android:minSdkVersion' => min_sdk, 'android:targetSdkVersion' => target}
|
315
315
|
end
|
316
316
|
save_manifest
|
317
317
|
end
|
318
318
|
end
|
319
319
|
|
320
320
|
def update_core_classes(force = nil)
|
321
|
-
generate_core_classes(:class =>
|
321
|
+
generate_core_classes(:class => 'all', :method_base => 'on', :method_include => '', :method_exclude => '', :force => force, :implements => '')
|
322
322
|
end
|
323
323
|
|
324
324
|
def read_ruboto_version
|
@@ -327,13 +327,13 @@ module Ruboto
|
|
327
327
|
end
|
328
328
|
|
329
329
|
def update_ruboto(force=nil)
|
330
|
-
log_action(
|
331
|
-
from = File.expand_path(Ruboto::GEM_ROOT +
|
330
|
+
log_action('Copying ruboto/version.rb') do
|
331
|
+
from = File.expand_path(Ruboto::GEM_ROOT + '/lib/ruboto/version.rb')
|
332
332
|
to = File.expand_path("./#{SCRIPTS_DIR}/ruboto/version.rb")
|
333
333
|
FileUtils.mkdir_p File.dirname(to)
|
334
334
|
FileUtils.cp from, to
|
335
335
|
end
|
336
|
-
log_action(
|
336
|
+
log_action('Copying additional ruboto script components') do
|
337
337
|
Dir.glob(Ruboto::GEM_ROOT + "/assets/#{SCRIPTS_DIR}/ruboto/**/*.rb").each do |from|
|
338
338
|
to = File.expand_path("./#{from.slice /#{SCRIPTS_DIR}\/ruboto\/.*\.rb/}")
|
339
339
|
FileUtils.mkdir_p File.dirname(to)
|
@@ -357,14 +357,13 @@ module Ruboto
|
|
357
357
|
FileUtils.rm_rf 'tmp'
|
358
358
|
Dir.mkdir 'tmp'
|
359
359
|
Dir.chdir 'tmp' do
|
360
|
-
FileUtils.move "../#{jruby_core}",
|
360
|
+
FileUtils.move "../#{jruby_core}", '.'
|
361
361
|
`jar -xf #{jruby_core}`
|
362
362
|
raise "Unpacking jruby-core jar failed: #$?" unless $? == 0
|
363
363
|
File.delete jruby_core
|
364
364
|
if Gem::Version.new(jruby_core_version) >= Gem::Version.new('1.7.3.dev')
|
365
365
|
excluded_core_packages = [
|
366
366
|
'**/*Darwin*',
|
367
|
-
'**/*Ruby20*',
|
368
367
|
'**/*Solaris*',
|
369
368
|
'**/*windows*',
|
370
369
|
'**/*Windows*',
|
@@ -375,8 +374,11 @@ module Ruboto
|
|
375
374
|
'com/kenai/jnr/x86asm',
|
376
375
|
'com/martiansoftware',
|
377
376
|
'jline', 'jni',
|
378
|
-
'jnr/constants/platform/darwin',
|
379
|
-
'jnr/constants/platform/
|
377
|
+
'jnr/constants/platform/darwin',
|
378
|
+
'jnr/constants/platform/fake',
|
379
|
+
'jnr/constants/platform/freebsd',
|
380
|
+
'jnr/constants/platform/openbsd',
|
381
|
+
'jnr/constants/platform/sunos',
|
380
382
|
'jnr/ffi/annotations',
|
381
383
|
'jnr/ffi/byref',
|
382
384
|
'jnr/ffi/provider',
|
@@ -572,20 +574,35 @@ module Ruboto
|
|
572
574
|
#end
|
573
575
|
|
574
576
|
# Add our proxy class factory
|
575
|
-
|
576
|
-
|
577
|
+
android_jar = Dir["#{Ruboto::SdkVersions::ANDROID_HOME}/platforms/*/android.jar"][0]
|
578
|
+
unless android_jar
|
579
|
+
puts
|
580
|
+
puts '*' * 80
|
581
|
+
puts " Could not find any Android platforms in #{Ruboto::SdkVersions::ANDROID_HOME}/platforms."
|
582
|
+
puts ' At least one Android Platform SDK must be installed to compile the Ruboto classes.'
|
583
|
+
puts ' Please install an Android Platform SDK using the "android" package manager.'
|
584
|
+
puts '*' * 80
|
585
|
+
puts
|
586
|
+
exit 1
|
587
|
+
end
|
588
|
+
android_jar.gsub!(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR)
|
589
|
+
class_path = ['.', "#{Ruboto::ASSETS}/libs/dx.jar"].join(File::PATH_SEPARATOR).gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR)
|
590
|
+
sources = "#{Ruboto::GEM_ROOT}/lib/*.java".gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR)
|
591
|
+
`javac -source 1.6 -target 1.6 -cp #{class_path} -bootclasspath #{android_jar} -d . #{sources}`
|
592
|
+
raise 'Compile failed' unless $? == 0
|
577
593
|
|
578
|
-
`jar -cf
|
594
|
+
`jar -cf ..#{File::ALT_SEPARATOR || File::SEPARATOR}#{jruby_core} .`
|
579
595
|
raise "Creating repackaged jruby-core jar failed: #$?" unless $? == 0
|
580
596
|
end
|
581
|
-
FileUtils.remove_dir
|
597
|
+
FileUtils.remove_dir 'tmp', true
|
582
598
|
end
|
583
599
|
end
|
584
600
|
end
|
585
601
|
|
586
602
|
# - Moves ruby stdlib to the root of the jruby-stdlib jar
|
587
603
|
def reconfigure_jruby_stdlib
|
588
|
-
min_sdk_version = verify_manifest.elements['uses-sdk'].attributes[
|
604
|
+
min_sdk_version = verify_manifest.elements['uses-sdk'].attributes['android:minSdkVersion'].to_i
|
605
|
+
included_stdlibs = verify_ruboto_config[:included_stdlibs]
|
589
606
|
excluded_stdlibs = [*verify_ruboto_config[:excluded_stdlibs]].compact
|
590
607
|
Dir.chdir 'libs' do
|
591
608
|
jruby_stdlib = JRubyJars::stdlib_jar_path.split('/')[-1]
|
@@ -604,13 +621,41 @@ module Ruboto
|
|
604
621
|
raise "Unrecognized JRuby stdlib jar: #{jruby_stdlib}" unless jruby_stdlib =~ /jruby-stdlib-(.*).jar/
|
605
622
|
jruby_stdlib_version = Gem::Version.new($1)
|
606
623
|
|
624
|
+
if included_stdlibs
|
625
|
+
|
626
|
+
# TODO(uwe): Simplify when we stop supporting JRuby < 1.7.0
|
627
|
+
if jruby_stdlib_version < Gem::Version.new('1.7.0.preview1')
|
628
|
+
lib_dirs = %w(1.8 1.9 site_ruby/1.8 site_ruby/1.9 site_ruby/shared)
|
629
|
+
else
|
630
|
+
lib_dirs = %w(1.8 1.9 shared)
|
631
|
+
end
|
632
|
+
# ODOT
|
633
|
+
|
634
|
+
print 'excluded...'
|
635
|
+
|
636
|
+
lib_dirs.each do |ld|
|
637
|
+
Dir.chdir "new/jruby.home/lib/ruby/#{ld}" do
|
638
|
+
libs = Dir['*'].map{|d|d.sub /\.(rb|jar)$/, ''}.uniq
|
639
|
+
libs.each do |d|
|
640
|
+
next if included_stdlibs.include? d
|
641
|
+
FileUtils.rm_rf d if File.exists? d
|
642
|
+
file = "#{d}.rb"
|
643
|
+
FileUtils.rm_rf file if File.exists? file
|
644
|
+
jarfile = "#{d}.jar"
|
645
|
+
FileUtils.rm_rf jarfile if File.exists? jarfile
|
646
|
+
print "#{d}..."
|
647
|
+
end
|
648
|
+
end
|
649
|
+
end
|
650
|
+
end
|
651
|
+
|
607
652
|
if excluded_stdlibs.any?
|
608
653
|
|
609
654
|
# TODO(uwe): Simplify when we stop supporting JRuby < 1.7.0
|
610
655
|
if jruby_stdlib_version < Gem::Version.new('1.7.0.preview1')
|
611
|
-
lib_dirs =
|
656
|
+
lib_dirs = %w(1.8 1.9 site_ruby/1.8 site_ruby/1.9 site_ruby/shared)
|
612
657
|
else
|
613
|
-
lib_dirs =
|
658
|
+
lib_dirs = %w(1.8 1.9 shared)
|
614
659
|
end
|
615
660
|
# ODOT
|
616
661
|
|
@@ -708,22 +753,22 @@ module Ruboto
|
|
708
753
|
FileUtils.rm_rf 'tmp'
|
709
754
|
Dir.mkdir 'tmp'
|
710
755
|
Dir.chdir 'tmp' do
|
711
|
-
FileUtils.move "../#{dx_jar}",
|
756
|
+
FileUtils.move "../#{dx_jar}", '.'
|
712
757
|
`jar -xf #{dx_jar}`
|
713
758
|
raise "Unpacking dx.jar jar failed: #$?" unless $? == 0
|
714
759
|
File.delete dx_jar
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
760
|
+
excluded_core_packages = [
|
761
|
+
'com/android/dx/command',
|
762
|
+
# 'com/android/dx/ssa', # Tests run OK without this package, but we may loose some optimizations.
|
763
|
+
'junit',
|
764
|
+
]
|
720
765
|
excluded_core_packages.each do |i|
|
721
766
|
FileUtils.remove_dir(i, true) rescue puts "Failed to remove package: #{i} (#{$!})"
|
722
767
|
end
|
723
768
|
`jar -cf ../#{dx_jar} .`
|
724
769
|
raise "Creating repackaged dx.jar failed: #$?" unless $? == 0
|
725
770
|
end
|
726
|
-
FileUtils.remove_dir
|
771
|
+
FileUtils.remove_dir 'tmp', true
|
727
772
|
end
|
728
773
|
end
|
729
774
|
end
|
data/lib/ruboto/version.rb
CHANGED
data/lib/ruboto.rb
CHANGED
@@ -4,7 +4,7 @@ require 'ruboto/widget'
|
|
4
4
|
ruboto_import_widgets :ImageButton, :LinearLayout, :TextView
|
5
5
|
|
6
6
|
class ImageButtonActivity
|
7
|
-
def
|
7
|
+
def onCreate(bundle)
|
8
8
|
super
|
9
9
|
set_title File.basename(__FILE__).chomp('_activity.rb').split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
10
10
|
|
@@ -3,7 +3,7 @@ require 'ruboto/widget'
|
|
3
3
|
ruboto_import_widgets :Button, :ImageButton, :LinearLayout, :TextView
|
4
4
|
|
5
5
|
class ImageButtonAndButtonActivity
|
6
|
-
def
|
6
|
+
def onCreate(bundle)
|
7
7
|
super
|
8
8
|
setTitle File.basename(__FILE__).chomp('_activity.rb').split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
9
9
|
|
@@ -3,7 +3,7 @@ require 'ruboto/widget'
|
|
3
3
|
ruboto_import_widgets :LinearLayout, :TextView
|
4
4
|
|
5
5
|
class MarginsActivity
|
6
|
-
def
|
6
|
+
def onCreate(bundle)
|
7
7
|
super
|
8
8
|
setTitle File.basename(__FILE__).chomp('_activity.rb').split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
9
9
|
|
@@ -4,7 +4,7 @@ require 'ruboto/widget'
|
|
4
4
|
ruboto_import_widgets :Button, :LinearLayout, :TextView
|
5
5
|
|
6
6
|
class NavigationActivity
|
7
|
-
def
|
7
|
+
def onCreate(bundle)
|
8
8
|
super
|
9
9
|
set_title File.basename(__FILE__).chomp('_activity.rb').split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
10
10
|
|
@@ -51,7 +51,7 @@ class NavigationActivity
|
|
51
51
|
|
52
52
|
def start_inline_activity
|
53
53
|
start_ruboto_activity do
|
54
|
-
def
|
54
|
+
def onCreate(bundle)
|
55
55
|
super
|
56
56
|
set_title 'Inline Activity'
|
57
57
|
self.content_view =
|
@@ -65,7 +65,7 @@ class NavigationActivity
|
|
65
65
|
|
66
66
|
def start_inline_activity_with_options
|
67
67
|
start_ruboto_activity(:class_name => 'InlineActivity') do
|
68
|
-
def
|
68
|
+
def onCreate(bundle)
|
69
69
|
super
|
70
70
|
set_title 'Inline Activity'
|
71
71
|
self.content_view =
|
@@ -104,7 +104,7 @@ class NavigationActivity
|
|
104
104
|
end
|
105
105
|
|
106
106
|
class InfileActivity
|
107
|
-
def
|
107
|
+
def onCreate(bundle)
|
108
108
|
super
|
109
109
|
set_title 'Infile Activity'
|
110
110
|
self.content_view =
|
@@ -4,7 +4,7 @@ require 'ruboto/util/toast'
|
|
4
4
|
ruboto_import_widgets :LinearLayout, :TextView
|
5
5
|
|
6
6
|
class OptionMenuActivity
|
7
|
-
def
|
7
|
+
def onCreate(bundle)
|
8
8
|
super
|
9
9
|
set_title File.basename(__FILE__).chomp('_activity.rb').split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
10
10
|
|
@@ -15,7 +15,7 @@ class OptionMenuActivity
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
18
|
+
def onCreateOptionsMenu(menu)
|
19
19
|
mi = menu.add('Test')
|
20
20
|
# mi.icon = $package.R::drawable::get_ruboto_core
|
21
21
|
mi.setIcon($package.R::drawable::get_ruboto_core)
|
@@ -25,7 +25,7 @@ require 'ruboto/widget'
|
|
25
25
|
ruboto_import_widgets :LinearLayout, :TextView
|
26
26
|
|
27
27
|
class PsychActivity
|
28
|
-
def
|
28
|
+
def onCreate(bundle)
|
29
29
|
super
|
30
30
|
set_title File.basename(__FILE__).chomp('_activity.rb').split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
31
31
|
self.content_view =
|
@@ -8,7 +8,7 @@ ruboto_import_widgets :Button, :LinearLayout, :TextView
|
|
8
8
|
|
9
9
|
class StackActivity
|
10
10
|
STACK_DEPTH_CLASS = java.lang.Thread.current_thread.stack_trace.length.to_s
|
11
|
-
def
|
11
|
+
def onCreate(bundle)
|
12
12
|
stack_depth_on_create = java.lang.Thread.current_thread.stack_trace.length.to_s
|
13
13
|
super
|
14
14
|
setTitle File.basename(__FILE__).chomp('_activity.rb').split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'ruboto/widget'
|
2
|
+
|
3
|
+
ruboto_import_widgets :LinearLayout, :TextView
|
4
|
+
|
5
|
+
class StartupExceptionActivity
|
6
|
+
def onCreate(bundle)
|
7
|
+
super
|
8
|
+
setTitle File.basename(__FILE__).chomp('_activity.rb').split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
9
|
+
|
10
|
+
self.content_view =
|
11
|
+
linear_layout :orientation => :vertical, :gravity => android.view.Gravity::CENTER do
|
12
|
+
@text_view = text_view :id => 42, :text => title, :text_size => 48.0, :gravity => android.view.Gravity::CENTER
|
13
|
+
end
|
14
|
+
intent = android.content.Intent.new
|
15
|
+
intent.setClassName($package_name, 'com.example.android.lunarlander.LunarLander')
|
16
|
+
startActivity(intent)
|
17
|
+
rescue Exception
|
18
|
+
puts "************************ Exception creating activity: #{$!}"
|
19
|
+
puts $!.backtrace.join("\n")
|
20
|
+
end
|
21
|
+
|
22
|
+
def onResume
|
23
|
+
super
|
24
|
+
@text_view.text = 'Startup OK'
|
25
|
+
end
|
26
|
+
|
27
|
+
def onPause
|
28
|
+
super
|
29
|
+
@text_view.text = 'Paused'
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
activity org.ruboto.test_app.StartupExceptionActivity
|
2
|
+
|
3
|
+
setup do |activity|
|
4
|
+
start = Time.now
|
5
|
+
loop do
|
6
|
+
@text_view = activity.findViewById(42)
|
7
|
+
break if @text_view || (Time.now - start > 60)
|
8
|
+
sleep 1
|
9
|
+
end
|
10
|
+
assert @text_view
|
11
|
+
end
|
12
|
+
|
13
|
+
test('super called correctly') do |activity|
|
14
|
+
assert_equal 'Startup OK', activity.find_view_by_id(42).text.to_s
|
15
|
+
end
|
@@ -4,7 +4,7 @@ ruboto_import_widgets :LinearLayout, :ListView, :TextView
|
|
4
4
|
|
5
5
|
class SubclassOfArrayAdapter < Java::AndroidWidget::ArrayAdapter
|
6
6
|
def getView(position, convert_view, parent)
|
7
|
-
puts
|
7
|
+
puts 'IN get_view!!!'
|
8
8
|
@inflater ||= context.getSystemService(Context::LAYOUT_INFLATER_SERVICE)
|
9
9
|
row = convert_view ? convert_view : @inflater.inflate(mResource, nil)
|
10
10
|
row.findViewById(mFieldId).text = "[#{get_item(position)}]"
|
@@ -21,7 +21,7 @@ class Java::AndroidWidget::ArrayAdapter
|
|
21
21
|
end
|
22
22
|
|
23
23
|
class SubclassActivity
|
24
|
-
def
|
24
|
+
def onCreate(bundle)
|
25
25
|
super
|
26
26
|
setTitle File.basename(__FILE__).chomp('_activity.rb').split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
27
27
|
|
@@ -3,7 +3,7 @@ require 'ruboto/widget'
|
|
3
3
|
ruboto_import_widgets :Button, :LinearLayout, :TextView
|
4
4
|
|
5
5
|
class ViewConstantsActivity
|
6
|
-
def
|
6
|
+
def onCreate(bundle)
|
7
7
|
super
|
8
8
|
$ruboto_test_app_activity = self
|
9
9
|
setTitle File.basename(__FILE__).chomp('_activity.rb').split('_').map { |s| "#{s[0..0].upcase}#{s[1..-1]}" }.join(' ')
|
data/test/app_test_methods.rb
CHANGED
@@ -13,7 +13,7 @@ module AppTestMethods
|
|
13
13
|
assert_code 'Base64Loads', "require 'base64'"
|
14
14
|
|
15
15
|
# FIXME(uwe): We should try using YAML as well
|
16
|
-
assert_code 'YamlLoads', "require '
|
16
|
+
assert_code 'YamlLoads', "require 'yaml'"
|
17
17
|
|
18
18
|
assert_code 'ReadSourceFile', 'File.read(__FILE__)'
|
19
19
|
assert_code 'DirListsFilesInApk', 'Dir["#{File.dirname(__FILE__)}/*"].each{|f| raise "File #{f.inspect} not found" unless File.exists?(f)}'
|
@@ -41,10 +41,6 @@ module AppTestMethods
|
|
41
41
|
next if file =~ /subclass/ && (RUBOTO_PLATFORM == 'CURRENT' || JRUBY_JARS_VERSION < Gem::Version.new('1.7.1.dev'))
|
42
42
|
# EMXIF
|
43
43
|
|
44
|
-
# FIXME(uwe): Remove when we stop testing RubotoCore <= 0.5.2 and android-10
|
45
|
-
next if file =~ /json/ && (RUBOTO_PLATFORM == 'CURRENT' || ANDROID_OS <= 10)
|
46
|
-
# EMXIF
|
47
|
-
|
48
44
|
# FIXME(uwe): Remove when we include jopenssl and bouncycastle
|
49
45
|
next if file =~ /ssl/
|
50
46
|
# EMXIF
|