ruboto 1.1.0 → 1.1.1
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/Gemfile.lock +2 -2
- data/RELEASE_CANDICATE_DOC.md +6 -21
- data/RELEASE_DOC.md +14 -74
- data/Rakefile +19 -0
- data/assets/rakelib/ruboto.rake +207 -61
- data/assets/ruboto.yml +0 -11
- data/assets/src/org/ruboto/EntryPointActivity.java +1 -1
- data/assets/src/org/ruboto/JRubyAdapter.java +3 -1
- data/assets/src/ruboto/util/toast.rb +2 -2
- data/lib/ruboto/commands/base.rb +1 -1
- data/lib/ruboto/util/build.rb +1 -0
- data/lib/ruboto/util/emulator.rb +1 -1
- data/lib/ruboto/util/update.rb +12 -3
- data/lib/ruboto/version.rb +1 -1
- data/test/activity/ssl_activity.rb +0 -1
- data/test/ruboto_gen_test.rb +4 -3
- data/test/ruboto_setup_test.rb +2 -2
- data/test/test_helper.rb +6 -10
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: adc0e9e39a3342af8a9ad5bdd60da98f76052857
|
|
4
|
+
data.tar.gz: d3a242735722909b2e3cee69a018e873b3d02fb9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7e703d5354259b4c66a6f5a25d9f52b16234b8fa42086c7fcd6b9f7900f3a46c9060348153b5e07236b2119b272b6d260bec74fbbd2555bbc6293d823fbc5d17
|
|
7
|
+
data.tar.gz: b85734194cb9a84e1c78f9dbf98e2798228ce8c1c4d7efd42ef23f8d979ad015b74d2ed9b4ef8099280ad24bf2c009c17ca42d7cbb09eb6bc35ef9dc46e545f4
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
ruboto (1.1.
|
|
4
|
+
ruboto (1.1.1)
|
|
5
5
|
main (~> 5.2)
|
|
6
6
|
rake (~> 10.0)
|
|
7
7
|
rubyzip (~> 1.0)
|
|
@@ -18,7 +18,7 @@ GEM
|
|
|
18
18
|
fattr (>= 2.2.0)
|
|
19
19
|
map (>= 5.1.0)
|
|
20
20
|
map (6.5.3)
|
|
21
|
-
rake (10.3.
|
|
21
|
+
rake (10.3.2)
|
|
22
22
|
rubyzip (1.1.3)
|
|
23
23
|
|
|
24
24
|
PLATFORMS
|
data/RELEASE_CANDICATE_DOC.md
CHANGED
|
@@ -1,27 +1,12 @@
|
|
|
1
|
-
Subject: [ANN] Ruboto 1.1.
|
|
1
|
+
Subject: [ANN] Ruboto 1.1.1 release candidate
|
|
2
2
|
|
|
3
3
|
Hi all!
|
|
4
4
|
|
|
5
|
-
The Ruboto 1.1.
|
|
6
|
-
|
|
7
|
-
This release
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
To use the Ruby stdlib SSL features you need to include JRuby 1.7.13 or
|
|
12
|
-
later in your app, and set the Android target to Android 4.1 (api level
|
|
13
|
-
android-16) or later. JRuby 1.7.13 has not been released yet, but you can
|
|
14
|
-
use the "jruby-1_7" or "master" branches of JRuby if you want to try it
|
|
15
|
-
now.
|
|
16
|
-
|
|
17
|
-
The large app feature utilises the "multi-dex" option of the Android
|
|
18
|
-
tooling, and also requires the target of your project to be set to Android
|
|
19
|
-
4.1 (api level android-16) or later.
|
|
20
|
-
|
|
21
|
-
The SSL feature is still new and will be improved in the coming releases
|
|
22
|
-
of Ruboto. An example is that accessing GitHub by https does not work out
|
|
23
|
-
of the box. This is being tracked as Issue #627 , and we would very much
|
|
24
|
-
like contributors on this.
|
|
5
|
+
The Ruboto 1.1.1 release candidate is now available.
|
|
6
|
+
|
|
7
|
+
This release introduces a significant speedup of all UI actions by only
|
|
8
|
+
overriding those Java methods actually implemented in Ruby code. There
|
|
9
|
+
are also some bug fixes and improvements to the SSL and big-app features.
|
|
25
10
|
|
|
26
11
|
As always we need your help and feedback to ensure the quality of the release. Please install the release candidate using
|
|
27
12
|
|
data/RELEASE_DOC.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Subject: [ANN] Ruboto 1.1.
|
|
1
|
+
Subject: [ANN] Ruboto 1.1.1 released!
|
|
2
2
|
|
|
3
|
-
The Ruboto team is pleased to announce the release of Ruboto 1.1.
|
|
3
|
+
The Ruboto team is pleased to announce the release of Ruboto 1.1.1.
|
|
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,87 +8,27 @@ 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.1.
|
|
12
|
-
|
|
13
|
-
This release
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
To use the Ruby stdlib SSL features you need to include JRuby 1.7.13 or
|
|
18
|
-
later in your app, and set the Android target to Android 4.1 (api level
|
|
19
|
-
android-16) or later. JRuby 1.7.13 has not been released yet, but you can
|
|
20
|
-
use the "jruby-1_7" or "master" branches of JRuby if you want to try it
|
|
21
|
-
now.
|
|
22
|
-
|
|
23
|
-
The large app feature utilises the "multi-dex" option of the Android
|
|
24
|
-
tooling, and also requires the target of your project to be set to Android
|
|
25
|
-
4.1 (api level android-16) or later.
|
|
26
|
-
|
|
27
|
-
The SSL feature is still new and will be improved in the coming releases
|
|
28
|
-
of Ruboto. An example is that accessing GitHub by https does not work out
|
|
29
|
-
of the box. This is being tracked as Issue #627 , and we would very much
|
|
30
|
-
like contributors on this.
|
|
11
|
+
New in version 1.1.1:
|
|
12
|
+
|
|
13
|
+
This release introduces a significant speedup of all UI actions by only
|
|
14
|
+
overriding those Java methods actually implemented in Ruby code. There
|
|
15
|
+
are also some bug fixes and improvements to the SSL and big-app features.
|
|
31
16
|
|
|
32
17
|
Features:
|
|
33
18
|
|
|
34
|
-
* Issue #
|
|
35
|
-
* Issue #
|
|
36
|
-
|
|
37
|
-
* Issue #
|
|
38
|
-
jruby <version>"
|
|
39
|
-
* Issue #606 Allow setting the JRuby version when creating or updating a
|
|
40
|
-
project with "--with-jruby <version>"
|
|
41
|
-
* Issue #608 Allow starting the emulator without using a snapshot
|
|
42
|
-
* Issue #610 Screen Scraper alongside Repository XML (daneb)
|
|
43
|
-
* Issue #611 Allow setting flags when starting a RubotoActivity
|
|
44
|
-
* Issue #623 If the emulator starts, but does not respond, retry without
|
|
45
|
-
loading a snapshot
|
|
46
|
-
* Issue #624 Allow setting the Android API target level for "ruboto
|
|
47
|
-
update app"
|
|
48
|
-
|
|
49
|
-
Bugfixes:
|
|
50
|
-
|
|
51
|
-
* Issue #342 require 'net/https' makes the app crash
|
|
52
|
-
* Issue #586 ruboto doesn't recover from failed adb devices command
|
|
53
|
-
* Issue #596 Detecting of dependencies misses open-uri due to dash in
|
|
54
|
-
file name
|
|
55
|
-
* Issue #597 Auto dependencies should not store application source
|
|
56
|
-
* Issue #598 Ruboto-Core Package file is invalid
|
|
57
|
-
* Issue #604 Use the correct archive name when downloading Android SDK
|
|
58
|
-
components
|
|
59
|
-
* Issue #612 Ruboto setup on Failing on Mac OS X
|
|
60
|
-
* Issue #618 Intelhaxm - Mac OS X more generic (daneb)
|
|
61
|
-
* Issue #622 Intelhaxm (daneb)
|
|
19
|
+
* Issue #619 Automatically switch multi-dex build on and off
|
|
20
|
+
* Issue #625 Avoid storing extra dex files in assets since they are not
|
|
21
|
+
source.
|
|
22
|
+
* Issue #628 Set tmpdir location
|
|
62
23
|
|
|
63
24
|
Performance:
|
|
64
25
|
|
|
65
|
-
* Issue #
|
|
66
|
-
* Issue #
|
|
67
|
-
|
|
68
|
-
Support:
|
|
69
|
-
|
|
70
|
-
* Issue #591 Problem completing the "gosu_android game" tutorial
|
|
71
|
-
|
|
72
|
-
Community:
|
|
73
|
-
|
|
74
|
-
* Issue #567 How can I help? (Noeyfan)
|
|
75
|
-
* Issue #570 How can I help? (aripoya)
|
|
76
|
-
* Issue #571 How can I help? (cjbcross)
|
|
77
|
-
* Issue #602 How can I help? (yamishi13)
|
|
78
|
-
* Issue #603 How can I help? (daneb)
|
|
79
|
-
|
|
80
|
-
Pull requests:
|
|
81
|
-
|
|
82
|
-
* Issue #588 Wait for valid device before installing (bootstraponline)
|
|
83
|
-
* Issue #609 Scraping of Android SDK for Latest Version (daneb)
|
|
84
|
-
|
|
85
|
-
Other:
|
|
86
|
-
|
|
87
|
-
* Issue #607 Remove the deprecated "ruboto update ruboto" command
|
|
26
|
+
* Issue #574 Will Android 4.4 ART influence Ruboto APP?
|
|
27
|
+
* Issue #629 Disable RubotoActivity methods that are not in use
|
|
88
28
|
|
|
89
29
|
You can find a complete list of issues here:
|
|
90
30
|
|
|
91
|
-
* https://github.com/ruboto/ruboto/issues?state=closed&milestone=
|
|
31
|
+
* https://github.com/ruboto/ruboto/issues?state=closed&milestone=33
|
|
92
32
|
|
|
93
33
|
|
|
94
34
|
Installation:
|
data/Rakefile
CHANGED
|
@@ -620,3 +620,22 @@ task :get_jruby_jars_snapshot do
|
|
|
620
620
|
end
|
|
621
621
|
File.open(current_gem, 'wb') { |f| f << body }
|
|
622
622
|
end
|
|
623
|
+
|
|
624
|
+
task '.travis.yml' do
|
|
625
|
+
puts "Regenerating #{'.travis.yml'}"
|
|
626
|
+
source = File.read('.travis.yml')
|
|
627
|
+
matrix = ''
|
|
628
|
+
[17, 16, 15].each.with_index do |api, i|
|
|
629
|
+
n = i
|
|
630
|
+
[['CURRENT', [nil]],['FROM_GEM', [nil]],['STANDALONE', [nil, '1.7.13', '1.7.12'].rotate(-i)]].each do |platform, versions|
|
|
631
|
+
versions.each do |v|
|
|
632
|
+
n = (n % 5) + 1
|
|
633
|
+
matrix << " - ANDROID_TARGET=#{api} RUBOTO_PLATFORM=#{platform.ljust(10)} TEST_PART=#{n}of5#{" JRUBY_JARS_VERSION=#{v}" if v}\n"
|
|
634
|
+
end
|
|
635
|
+
end
|
|
636
|
+
matrix << "\n"
|
|
637
|
+
end
|
|
638
|
+
matrix << " - ANDROID_TARGET=10 RUBOTO_PLATFORM=CURRENT\n"
|
|
639
|
+
matrix_str = " matrix:\n#{matrix}\nmatrix:"
|
|
640
|
+
File.write('.travis.yml', source.sub(/^ matrix:.*?matrix:/m, matrix_str))
|
|
641
|
+
end
|
data/assets/rakelib/ruboto.rake
CHANGED
|
@@ -91,6 +91,7 @@ JARS = Dir[File.expand_path 'libs/*.jar'] - JRUBY_JARS
|
|
|
91
91
|
RESOURCE_FILES = Dir[File.expand_path 'res/**/*']
|
|
92
92
|
JAVA_SOURCE_FILES = Dir[File.expand_path 'src/**/*.java']
|
|
93
93
|
RUBY_SOURCE_FILES = Dir[File.expand_path 'src/**/*.rb']
|
|
94
|
+
RUBY_ACTIVITY_SOURCE_FILES = RUBY_SOURCE_FILES.select { |fn| fn =~ /_activity.rb$/ }
|
|
94
95
|
OTHER_SOURCE_FILES = Dir[File.expand_path 'src/**/*'] - JAVA_SOURCE_FILES - RUBY_SOURCE_FILES
|
|
95
96
|
CLASSES_CACHE = "#{PROJECT_DIR}/bin/#{build_project_name}-debug-unaligned.apk.d"
|
|
96
97
|
BUILD_XML_FILE = "#{PROJECT_DIR}/build.xml"
|
|
@@ -100,6 +101,7 @@ KEYSTORE_FILE = (key_store = File.readlines('ant.properties').grep(/^key.store=/
|
|
|
100
101
|
KEYSTORE_ALIAS = (key_alias = File.readlines('ant.properties').grep(/^key.alias=/).first) ? key_alias.chomp.sub(/^key.alias=/, '') : build_project_name
|
|
101
102
|
APK_FILE_REGEXP = /^-rw-r--r--\s+(?:system|\d+\s+\d+)\s+(?:system|\d+)\s+(\d+)\s+(\d{4}-\d{2}-\d{2} \d{2}:\d{2}|\w{3} \d{2}\s+(?:\d{4}|\d{2}:\d{2}))\s+(.*)$/
|
|
102
103
|
JRUBY_ADAPTER_FILE = "#{PROJECT_DIR}/src/org/ruboto/JRubyAdapter.java"
|
|
104
|
+
RUBOTO_ACTIVITY_FILE = "#{PROJECT_DIR}/src/org/ruboto/RubotoActivity.java"
|
|
103
105
|
|
|
104
106
|
CLEAN.include('bin', 'gen', 'test/bin', 'test/gen')
|
|
105
107
|
|
|
@@ -241,41 +243,23 @@ file RUBOTO_CONFIG_FILE
|
|
|
241
243
|
task :build_xml => BUILD_XML_FILE
|
|
242
244
|
file BUILD_XML_FILE => RUBOTO_CONFIG_FILE do
|
|
243
245
|
puts 'patching build.xml'
|
|
244
|
-
|
|
245
|
-
require 'yaml'
|
|
246
|
-
|
|
247
|
-
multi_dex = (YAML.load(File.read(RUBOTO_CONFIG_FILE)) || {})['multi_dex']
|
|
248
246
|
ant_script = File.read(BUILD_XML_FILE)
|
|
249
247
|
|
|
250
248
|
# FIXME(uwe): There is no output from this DEX helper. Difficult to debug.
|
|
251
249
|
# FIXME(uwe): Ensure that pre-dexed jars are not dexed again.
|
|
252
|
-
# FIXME(uwe): Move this logic to
|
|
250
|
+
# FIXME(uwe): Move this logic to ruboto/util/update.rb since it is independent of ruboto.yml changes.
|
|
253
251
|
# https://android.googlesource.com/platform/tools/base/+/master/legacy/ant-tasks/src/main/java/com/android/ant/DexExecTask.java
|
|
254
252
|
# def patch_ant_script(min_sdk, ant_script = File.read('build.xml'))
|
|
253
|
+
indent = ' '
|
|
255
254
|
start_marker = '<!-- BEGIN added by Ruboto -->'
|
|
256
255
|
end_marker = '<!-- END added by Ruboto -->'
|
|
257
256
|
dx_override = <<-EOF
|
|
258
|
-
#{start_marker}
|
|
259
|
-
<
|
|
260
|
-
<element name="external-libs" optional="yes" />
|
|
261
|
-
<element name="extra-parameters" optional="yes" />
|
|
262
|
-
<sequential>
|
|
263
|
-
<!-- set the secondary dx input: the project (and library) jar files
|
|
264
|
-
If a pre-dex task sets it to something else this has no effect -->
|
|
265
|
-
<if>
|
|
266
|
-
<condition>
|
|
267
|
-
<isreference refid="out.dex.jar.input.ref" />
|
|
268
|
-
</condition>
|
|
269
|
-
<else>
|
|
270
|
-
<path id="out.dex.jar.input.ref">
|
|
271
|
-
<path refid="project.all.jars.path" />
|
|
272
|
-
</path>
|
|
273
|
-
</else>
|
|
274
|
-
</if>
|
|
275
|
-
<condition property="verbose.option" value="--verbose" else="">
|
|
276
|
-
<istrue value="${verbose}" />
|
|
277
|
-
</condition>
|
|
257
|
+
#{indent}#{start_marker}
|
|
258
|
+
<property name="second_dex_file" value="${out.absolute.dir}/classes2.dex" />
|
|
278
259
|
|
|
260
|
+
<macrodef name="multi-dex-helper">
|
|
261
|
+
<element name="external-libs" optional="yes" />
|
|
262
|
+
<sequential>
|
|
279
263
|
<union id="out.dex.jar.input.ref.union">
|
|
280
264
|
<resources refid="out.dex.jar.input.ref"/>
|
|
281
265
|
</union>
|
|
@@ -290,50 +274,191 @@ file BUILD_XML_FILE => RUBOTO_CONFIG_FILE do
|
|
|
290
274
|
<echo>Java classes and jars are unchanged.</echo>
|
|
291
275
|
</then>
|
|
292
276
|
<else>
|
|
293
|
-
<echo>Converting compiled files and external libraries into ${
|
|
277
|
+
<echo>Converting compiled files and external libraries into ${out.absolute.dir} (multi-dex)</echo>
|
|
294
278
|
<delete file="${out.absolute.dir}/classes2.dex"/>
|
|
295
|
-
<echo>Dexing
|
|
279
|
+
<echo>Dexing ${out.classes.absolute.dir} and ${toString:out.dex.jar.input.ref}</echo>
|
|
296
280
|
<apply executable="${dx}" failonerror="true" parallel="true">
|
|
297
281
|
<arg value="--dex" />
|
|
298
282
|
<arg value="--multi-dex" />
|
|
299
283
|
<arg value="--output=${out.absolute.dir}" />
|
|
300
|
-
<
|
|
284
|
+
<arg line="${jumbo.option}" />
|
|
301
285
|
<arg line="${verbose.option}" />
|
|
302
286
|
<arg path="${out.classes.absolute.dir}" />
|
|
303
287
|
<path refid="out.dex.jar.input.ref" />
|
|
304
288
|
<external-libs />
|
|
305
289
|
</apply>
|
|
306
|
-
|
|
307
|
-
<delete file="assets/classes2.jar"/>
|
|
308
|
-
<if>
|
|
309
|
-
<condition>
|
|
310
|
-
<available file="${out.absolute.dir}/classes2.dex" />
|
|
311
|
-
</condition>
|
|
312
|
-
<then>
|
|
313
|
-
<echo>Zipping extra classes in ${out.absolute.dir} into assets/classes2.jar</echo>
|
|
314
|
-
<mkdir dir="${out.absolute.dir}/../assets"/>
|
|
315
|
-
<!-- FIXME(uwe): This is hardcoded for one extra dex file.
|
|
316
|
-
It should iterate over all classes?.dex files -->
|
|
317
|
-
<copy file="${out.absolute.dir}/classes2.dex" tofile="classes.dex"/>
|
|
318
|
-
<zip destfile="${out.absolute.dir}/../assets/classes2.jar" basedir="." includes="classes.dex" />
|
|
319
|
-
<delete file="classes.dex"/>
|
|
320
|
-
</then>
|
|
321
|
-
</if>
|
|
290
|
+
<sleep seconds="1"/>
|
|
322
291
|
</else>
|
|
323
292
|
</if>
|
|
324
|
-
|
|
293
|
+
</sequential>
|
|
325
294
|
</macrodef>
|
|
326
|
-
|
|
295
|
+
|
|
296
|
+
<macrodef name="dex-helper">
|
|
297
|
+
<element name="external-libs" optional="yes" />
|
|
298
|
+
<attribute name="nolocals" default="false" />
|
|
299
|
+
<sequential>
|
|
300
|
+
<!-- sets the primary input for dex. If a pre-dex task sets it to
|
|
301
|
+
something else this has no effect -->
|
|
302
|
+
<property name="out.dex.input.absolute.dir" value="${out.classes.absolute.dir}" />
|
|
303
|
+
|
|
304
|
+
<!-- set the secondary dx input: the project (and library) jar files
|
|
305
|
+
If a pre-dex task sets it to something else this has no effect -->
|
|
306
|
+
<if>
|
|
307
|
+
<condition>
|
|
308
|
+
<isreference refid="out.dex.jar.input.ref" />
|
|
309
|
+
</condition>
|
|
310
|
+
<else>
|
|
311
|
+
<path id="out.dex.jar.input.ref">
|
|
312
|
+
<path refid="project.all.jars.path" />
|
|
313
|
+
</path>
|
|
314
|
+
</else>
|
|
315
|
+
</if>
|
|
316
|
+
<condition property="verbose.option" value="--verbose" else="">
|
|
317
|
+
<istrue value="${verbose}" />
|
|
318
|
+
</condition>
|
|
319
|
+
<condition property="jumbo.option" value="--force-jumbo" else="">
|
|
320
|
+
<istrue value="${dex.force.jumbo}" />
|
|
321
|
+
</condition>
|
|
322
|
+
|
|
323
|
+
<if>
|
|
324
|
+
<condition>
|
|
325
|
+
<not>
|
|
326
|
+
<available file="${second_dex_file}" />
|
|
327
|
+
</not>
|
|
328
|
+
</condition>
|
|
329
|
+
<then>
|
|
330
|
+
<!-- Regular DEX process. We would prefer to use the Android SDK
|
|
331
|
+
ANT target, but we need to detect the "use multidex" error.
|
|
332
|
+
https://android.googlesource.com/platform/sdk/+/tools_r21.1/anttasks/src/com/android/ant/DexExecTask.java
|
|
333
|
+
-->
|
|
334
|
+
<mapper id="pre-dex-mapper" type="glob" from="libs/*.jar" to="bin/dexedLibs/*-dexed.jar"/>
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
<!-- FIXME(uwe): Output something about what we are doing -->
|
|
338
|
+
|
|
339
|
+
<apply executable="${dx}" failonerror="true" parallel="false" dest="${out.dexed.absolute.dir}" relative="true">
|
|
340
|
+
<arg value="--dex" />
|
|
341
|
+
<arg value="--output" />
|
|
342
|
+
<targetfile/>
|
|
343
|
+
<arg line="${jumbo.option}" />
|
|
344
|
+
<arg line="${verbose.option}" />
|
|
345
|
+
<fileset dir="." includes="libs/*" />
|
|
346
|
+
<external-libs />
|
|
347
|
+
<mapper refid="pre-dex-mapper"/>
|
|
348
|
+
</apply>
|
|
349
|
+
|
|
350
|
+
<apply executable="${dx}" resultproperty="dex.merge.result" outputproperty="dex.merge.output" parallel="true">
|
|
351
|
+
<arg value="--dex" />
|
|
352
|
+
<arg value="--output=${intermediate.dex.file}" />
|
|
353
|
+
<arg line="${jumbo.option}" />
|
|
354
|
+
<arg line="${verbose.option}" />
|
|
355
|
+
<arg path="${out.classes.absolute.dir}" />
|
|
356
|
+
<fileset dir="${out.dexed.absolute.dir}" includes="*-dexed.jar" />
|
|
357
|
+
<external-libs />
|
|
358
|
+
</apply>
|
|
359
|
+
|
|
360
|
+
<if>
|
|
361
|
+
<condition>
|
|
362
|
+
<contains string="${dex.merge.output}" substring="method ID not in [0, 0xffff]: 65536"/>
|
|
363
|
+
</condition>
|
|
364
|
+
<then>
|
|
365
|
+
<echo message="The package contains too many methods. Switching to multi-dex build." />
|
|
366
|
+
<multi-dex-helper>
|
|
367
|
+
<external-libs>
|
|
368
|
+
<external-libs/>
|
|
369
|
+
</external-libs>
|
|
370
|
+
</multi-dex-helper>
|
|
371
|
+
</then>
|
|
372
|
+
<else>
|
|
373
|
+
<echo message="${dex.merge.output}"/>
|
|
374
|
+
<fail status="${dex.merge.result}">
|
|
375
|
+
<condition>
|
|
376
|
+
<not>
|
|
377
|
+
<equals arg1="${dex.merge.result}" arg2="0"/>
|
|
378
|
+
</not>
|
|
379
|
+
</condition>
|
|
380
|
+
</fail>
|
|
381
|
+
</else>
|
|
382
|
+
</if>
|
|
383
|
+
|
|
384
|
+
</then>
|
|
385
|
+
<else>
|
|
386
|
+
<multi-dex-helper>
|
|
387
|
+
<external-libs>
|
|
388
|
+
<external-libs/>
|
|
389
|
+
</external-libs>
|
|
390
|
+
</multi-dex-helper>
|
|
391
|
+
</else>
|
|
392
|
+
</if>
|
|
393
|
+
</sequential>
|
|
394
|
+
</macrodef>
|
|
395
|
+
|
|
396
|
+
<!-- This is copied directly from <android-sdk>/tools/ant/build.xml,
|
|
397
|
+
just added the "-post-package-resources" dependency -->
|
|
398
|
+
<target name="-package" depends="-dex, -package-resources, -post-package-resources">
|
|
399
|
+
<!-- only package apk if *not* a library project -->
|
|
400
|
+
<do-only-if-not-library elseText="Library project: do not package apk..." >
|
|
401
|
+
<if condition="${build.is.instrumented}">
|
|
402
|
+
<then>
|
|
403
|
+
<package-helper>
|
|
404
|
+
<extra-jars>
|
|
405
|
+
<!-- Injected from external file -->
|
|
406
|
+
<jarfile path="${emma.dir}/emma_device.jar" />
|
|
407
|
+
</extra-jars>
|
|
408
|
+
</package-helper>
|
|
409
|
+
</then>
|
|
410
|
+
<else>
|
|
411
|
+
<package-helper />
|
|
412
|
+
</else>
|
|
413
|
+
</if>
|
|
414
|
+
</do-only-if-not-library>
|
|
415
|
+
</target>
|
|
416
|
+
|
|
417
|
+
<target name="-post-package-resources">
|
|
418
|
+
<!-- FIXME(uwe): This is hardcoded for one extra dex file.
|
|
419
|
+
It should iterate over all classes?.dex files -->
|
|
420
|
+
<property name="second_dex_path" value="assets/classes2.jar" />
|
|
421
|
+
<property name="second_dex_jar" value="${out.dexed.absolute.dir}/${second_dex_path}" />
|
|
422
|
+
<property name="second_dex_copy" value="${out.dexed.absolute.dir}/classes.dex" />
|
|
423
|
+
<if>
|
|
424
|
+
<condition>
|
|
425
|
+
<and>
|
|
426
|
+
<available file="${second_dex_file}" />
|
|
427
|
+
<or>
|
|
428
|
+
<not>
|
|
429
|
+
<uptodate srcfile="${second_dex_file}" targetfile="${out.absolute.dir}/${resource.package.file.name}" />
|
|
430
|
+
</not>
|
|
431
|
+
<uptodate srcfile="${out.absolute.dir}/${resource.package.file.name}" targetfile="${out.absolute.dir}/${resource.package.file.name}.d" />
|
|
432
|
+
</or>
|
|
433
|
+
</and>
|
|
434
|
+
</condition>
|
|
435
|
+
<then>
|
|
436
|
+
<echo>Adding ${second_dex_path} to ${resource.package.file.name}</echo>
|
|
437
|
+
<exec executable="aapt" dir="${out.dexed.absolute.dir}">
|
|
438
|
+
<arg line='remove -v "${out.absolute.dir}/${resource.package.file.name}" ${second_dex_path}'/>
|
|
439
|
+
</exec>
|
|
440
|
+
<copy file="${second_dex_file}" tofile="${second_dex_copy}"/>
|
|
441
|
+
<mkdir dir="${out.dexed.absolute.dir}/assets"/>
|
|
442
|
+
<zip destfile="${second_dex_jar}" basedir="${out.dexed.absolute.dir}" includes="classes.dex" />
|
|
443
|
+
<delete file="${second_dex_copy}"/>
|
|
444
|
+
|
|
445
|
+
<!-- FIXME(uwe): Use zip instead of aapt? -->
|
|
446
|
+
<exec executable="aapt" dir="${out.dexed.absolute.dir}" failonerror="true">
|
|
447
|
+
<arg line='add -v "${out.absolute.dir}/${resource.package.file.name}" ${second_dex_path}'/>
|
|
448
|
+
</exec>
|
|
449
|
+
<!-- EMXIF -->
|
|
450
|
+
|
|
451
|
+
</then>
|
|
452
|
+
</if>
|
|
453
|
+
</target>
|
|
454
|
+
#{end_marker}
|
|
327
455
|
EOF
|
|
328
456
|
|
|
329
457
|
ant_script.gsub!(/\s*#{start_marker}.*?#{end_marker}\s*/m, '')
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
end
|
|
335
|
-
else
|
|
336
|
-
raise "I am sorry, but the 'multi_dex' option is only available for projects targeting api level android-16 (Android 4.1) or higher due to a bug in earlier versions of Android."
|
|
458
|
+
# FIXME(uwe): Remove condition when we stop supporting Android 4.0 and older.
|
|
459
|
+
if sdk_level >= 16
|
|
460
|
+
unless ant_script.gsub!(/\s*(<\/project>)/, "\n\n#{dx_override}\n\n\\1")
|
|
461
|
+
raise 'Bad ANT script'
|
|
337
462
|
end
|
|
338
463
|
end
|
|
339
464
|
File.open(BUILD_XML_FILE, 'w') { |f| f << ant_script }
|
|
@@ -357,12 +482,13 @@ file JRUBY_ADAPTER_FILE => RUBOTO_CONFIG_FILE do
|
|
|
357
482
|
heap_alloc = 13
|
|
358
483
|
comment = '// '
|
|
359
484
|
end
|
|
485
|
+
indent = ' ' * 12
|
|
360
486
|
config = <<EOF
|
|
361
|
-
#{begin_marker}
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
487
|
+
#{indent}#{begin_marker}
|
|
488
|
+
#{indent}#{comment}@SuppressWarnings("unused")
|
|
489
|
+
#{indent}#{comment}byte[] arrayForHeapAllocation = new byte[#{heap_alloc} * 1024 * 1024];
|
|
490
|
+
#{indent}#{comment}arrayForHeapAllocation = null;
|
|
491
|
+
#{indent}#{end_marker}
|
|
366
492
|
EOF
|
|
367
493
|
pattern = %r{^\s*#{begin_marker}\n.*^\s*#{end_marker}\n}m
|
|
368
494
|
source = source.sub(pattern, config)
|
|
@@ -380,10 +506,9 @@ EOF
|
|
|
380
506
|
end
|
|
381
507
|
ruby_version = ruby_version.to_s
|
|
382
508
|
ruby_version['.'] = '_'
|
|
383
|
-
indent = ' ' * 12
|
|
384
509
|
config = <<EOF
|
|
385
510
|
#{indent}#{begin_marker}
|
|
386
|
-
|
|
511
|
+
#{indent}#{comment}System.setProperty("jruby.compat.version", "RUBY#{ruby_version}"); // RUBY1_9 is the default in JRuby 1.7
|
|
387
512
|
#{indent}#{end_marker}
|
|
388
513
|
EOF
|
|
389
514
|
pattern = %r{^\s*#{begin_marker}\n.*^\s*#{end_marker}\n}m
|
|
@@ -392,6 +517,23 @@ EOF
|
|
|
392
517
|
File.open(JRUBY_ADAPTER_FILE, 'w') { |f| f << source }
|
|
393
518
|
end
|
|
394
519
|
|
|
520
|
+
task :ruboto_activity => RUBOTO_ACTIVITY_FILE
|
|
521
|
+
file RUBOTO_ACTIVITY_FILE => RUBY_ACTIVITY_SOURCE_FILES do |task|
|
|
522
|
+
original_source = File.read(RUBOTO_ACTIVITY_FILE)
|
|
523
|
+
next unless original_source =~ %r{\A(.*Generated Methods.*?\*/\n*)(.*)\B}m
|
|
524
|
+
intro, generated_methods = $1, $2.scan(/(?:\s*\n*)(^\s*?public.*?^ }\n)/m).flatten
|
|
525
|
+
implemented_methods = task.prerequisites.map { |f| File.read(f).scan(/(?:^\s*def\s+)([^\s(]+)/) }.flatten.sort
|
|
526
|
+
commented_methods = generated_methods.map do |gm|
|
|
527
|
+
implemented_methods.
|
|
528
|
+
any? { |im| gm.upcase.include?(" #{im.upcase.gsub('_', '')}(") } ?
|
|
529
|
+
gm : "/*\n#{gm}*/\n"
|
|
530
|
+
end
|
|
531
|
+
new_source = "#{intro}#{commented_methods.join("\n")}\n}\n"
|
|
532
|
+
if new_source != original_source
|
|
533
|
+
File.open(RUBOTO_ACTIVITY_FILE, 'w') { |f| f << new_source }
|
|
534
|
+
end
|
|
535
|
+
end
|
|
536
|
+
|
|
395
537
|
task apk_dependencies: APK_DEPENDENCIES
|
|
396
538
|
|
|
397
539
|
file APK_FILE => APK_DEPENDENCIES do |t|
|
|
@@ -447,7 +589,7 @@ namespace :update_scripts do
|
|
|
447
589
|
start_app
|
|
448
590
|
else
|
|
449
591
|
scripts = update_scripts
|
|
450
|
-
if app_running?
|
|
592
|
+
if scripts && app_running?
|
|
451
593
|
reload_scripts(scripts)
|
|
452
594
|
else
|
|
453
595
|
start_app
|
|
@@ -690,8 +832,12 @@ task :log, [:filter] do |t, args|
|
|
|
690
832
|
started_regex = Regexp.new "^\\I/ActivityManager.+Start proc #{package} for activity #{package}/\\.#{main_activity}: pid=(?<pid>\\d+)"
|
|
691
833
|
restarted_regex = Regexp.new "^\\I/ActivityManager.+START u0 {cmp=#{package}/org.ruboto.RubotoActivity.+} from pid (?<pid>\\d+)"
|
|
692
834
|
related_regex = Regexp.new "#{package}|#{main_activity}"
|
|
835
|
+
android_4_2_noise_regex = /Unexpected value from nativeGetEnabledTags/
|
|
693
836
|
pid_regex = nil
|
|
694
837
|
logcat.each_line do |line|
|
|
838
|
+
# FIXME(uwe): Remove when we stop supporting Ancdroid 4.2
|
|
839
|
+
next if line =~ android_4_2_noise_regex
|
|
840
|
+
# EMXIF
|
|
695
841
|
if (activity_start_match = started_regex.match(line) || restarted_regex.match(line))
|
|
696
842
|
activity_started = true
|
|
697
843
|
pid = activity_start_match[:pid]
|
data/assets/ruboto.yml
CHANGED
|
@@ -59,14 +59,3 @@
|
|
|
59
59
|
# - webrick
|
|
60
60
|
# - win32
|
|
61
61
|
# - Win32API
|
|
62
|
-
|
|
63
|
-
###################################
|
|
64
|
-
#
|
|
65
|
-
# multi_dex
|
|
66
|
-
#
|
|
67
|
-
# Switch on use of multiple classes.dex files when building.
|
|
68
|
-
# This will allow you to have more than 65535 methods in your app.
|
|
69
|
-
# WARNING: This disables pre-dex during build which will increase your
|
|
70
|
-
# incremental build time substantially.
|
|
71
|
-
#
|
|
72
|
-
# multi_dex: true
|
|
@@ -35,7 +35,7 @@ public class EntryPointActivity extends org.ruboto.RubotoActivity {
|
|
|
35
35
|
// The Intent to to call when done. Defaults to calling this Activity again.
|
|
36
36
|
// Override to change.
|
|
37
37
|
protected Intent futureIntent() {
|
|
38
|
-
if (!getIntent().getAction().equals(Intent.ACTION_VIEW)) {
|
|
38
|
+
if (getIntent().getAction() == null || !getIntent().getAction().equals(Intent.ACTION_VIEW)) {
|
|
39
39
|
return new Intent(getIntent()).setAction(Intent.ACTION_VIEW);
|
|
40
40
|
} else {
|
|
41
41
|
return getIntent();
|
|
@@ -157,6 +157,7 @@ public class JRubyAdapter {
|
|
|
157
157
|
System.setProperty("jruby.ji.proxyClassFactory", "org.ruboto.DalvikProxyClassFactory");
|
|
158
158
|
System.setProperty("jruby.ji.upper.case.package.name.allowed", "true");
|
|
159
159
|
System.setProperty("jruby.class.cache.path", appContext.getDir("dex", 0).getAbsolutePath());
|
|
160
|
+
System.setProperty("java.io.tmpdir", appContext.getCacheDir().getAbsolutePath());
|
|
160
161
|
|
|
161
162
|
// FIXME(uwe): Simplify when we stop supporting android-15
|
|
162
163
|
if (Build.VERSION.SDK_INT >= 16) {
|
|
@@ -392,7 +393,8 @@ public class JRubyAdapter {
|
|
|
392
393
|
//try {
|
|
393
394
|
// t.printStackTrace(output);
|
|
394
395
|
//} catch (NullPointerException npe) {
|
|
395
|
-
// TODO(uwe): printStackTrace should not fail
|
|
396
|
+
// TODO(uwe): t.printStackTrace() should not fail
|
|
397
|
+
System.err.println(t.getClass().getName() + ": " + t);
|
|
396
398
|
for (java.lang.StackTraceElement ste : t.getStackTrace()) {
|
|
397
399
|
output.append(ste.toString() + "\n");
|
|
398
400
|
}
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
#######################################################
|
|
8
8
|
|
|
9
9
|
Java::android.content.Context.class_eval do
|
|
10
|
-
def toast(text, duration=android.widget.Toast::LENGTH_SHORT)
|
|
10
|
+
def toast(text, duration=Java::android.widget.Toast::LENGTH_SHORT)
|
|
11
11
|
Java::android.widget.Toast.makeText(self, text, duration).show
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
def toast_result(result, success, failure, duration=android.widget.Toast::LENGTH_SHORT)
|
|
14
|
+
def toast_result(result, success, failure, duration=Java::android.widget.Toast::LENGTH_SHORT)
|
|
15
15
|
toast(result ? success : failure, duration)
|
|
16
16
|
end
|
|
17
17
|
end
|
data/lib/ruboto/commands/base.rb
CHANGED
data/lib/ruboto/util/build.rb
CHANGED
data/lib/ruboto/util/emulator.rb
CHANGED
data/lib/ruboto/util/update.rb
CHANGED
|
@@ -234,7 +234,15 @@ module Ruboto
|
|
|
234
234
|
log_action('Copying dx.jar to libs') { copier.copy 'libs' }
|
|
235
235
|
end
|
|
236
236
|
|
|
237
|
-
def update_assets
|
|
237
|
+
def update_assets(old_version = nil)
|
|
238
|
+
# FIXME(uwe): Remove when we stop support for updating from Ruboto 1.1.0
|
|
239
|
+
old_extra_classes = 'assets/classes2.jar'
|
|
240
|
+
if old_version == '1.1.0' && File.exists?(old_extra_classes)
|
|
241
|
+
puts "Deleting old extra dex file #{old_extra_classes}."
|
|
242
|
+
File.delete(string)
|
|
243
|
+
end
|
|
244
|
+
# EMXIF
|
|
245
|
+
|
|
238
246
|
puts "\nCopying files:"
|
|
239
247
|
weak_copier = Ruboto::Util::AssetCopier.new Ruboto::ASSETS, '.', false
|
|
240
248
|
%w{.gitignore Rakefile ruboto.yml}.each { |f| log_action(f) { weak_copier.copy f } }
|
|
@@ -373,8 +381,9 @@ module Ruboto
|
|
|
373
381
|
if File.exists?('ruboto.yml')
|
|
374
382
|
sleep 1
|
|
375
383
|
FileUtils.touch 'ruboto.yml'
|
|
376
|
-
system 'rake build_xml jruby_adapter'
|
|
377
384
|
end
|
|
385
|
+
Dir['src/*_activity.rb'].each{|f|FileUtils.touch(f)}
|
|
386
|
+
system 'rake build_xml jruby_adapter ruboto_activity'
|
|
378
387
|
end
|
|
379
388
|
|
|
380
389
|
def read_ruboto_version
|
|
@@ -488,7 +497,7 @@ module Ruboto
|
|
|
488
497
|
'yaml.rb', # This looks like 1.8 stdlib...
|
|
489
498
|
]
|
|
490
499
|
elsif gem_version >= Gem::Version.new('1.7.12')
|
|
491
|
-
excluded_core_packages = %w(**/*Darwin* **/*Solaris* **/*windows* **/*Windows* META-INF com/headius/invokebinder com/headius/options/example com/kenai/constantine com/kenai/jffi com/kenai/jnr/x86asm com/martiansoftware jni jnr/constants/platform/darwin jnr/constants/platform/fake jnr/constants/platform/freebsd jnr/constants/platform/openbsd jnr/constants/platform/sunos jnr/enxio jnr/ffi/annotations jnr/ffi/byref jnr/ffi/mapper jnr/ffi/provider jnr/ffi/util jnr/ffi/Struct$* jnr/ffi/types jnr/posix/Aix* jnr/posix/FreeBSD* jnr/posix/MacOS* jnr/posix/OpenBSD* jnr/x86asm org/jruby/ant org/jruby/cext org/jruby/compiler/impl/BaseBodyCompiler* org/jruby/compiler/util org/jruby/demo org/jruby/embed/bsf org/jruby/embed/jsr223 org/jruby/embed/osgi org/jruby/ext/ffi/AbstractMemory* org/jruby/ext/ffi/Enums* org/jruby/ext/ffi/io org/jruby/ext/ffi/jffi org/jruby/
|
|
500
|
+
excluded_core_packages = %w(**/*Darwin* **/*Solaris* **/*windows* **/*Windows* META-INF com/headius/invokebinder com/headius/options/example com/kenai/constantine com/kenai/jffi com/kenai/jnr/x86asm com/martiansoftware jni jnr/constants/platform/darwin jnr/constants/platform/fake jnr/constants/platform/freebsd jnr/constants/platform/openbsd jnr/constants/platform/sunos jnr/enxio jnr/ffi/annotations jnr/ffi/byref jnr/ffi/mapper jnr/ffi/provider jnr/ffi/util jnr/ffi/Struct$* jnr/ffi/types jnr/posix/Aix* jnr/posix/FreeBSD* jnr/posix/MacOS* jnr/posix/OpenBSD* jnr/x86asm org/jruby/ant org/jruby/cext org/jruby/compiler/impl/BaseBodyCompiler* org/jruby/compiler/util org/jruby/demo org/jruby/embed/bsf org/jruby/embed/jsr223 org/jruby/embed/osgi org/jruby/ext/ffi/AbstractMemory* org/jruby/ext/ffi/Enums* org/jruby/ext/ffi/io org/jruby/ext/ffi/jffi org/jruby/javasupport/bsf org/yecht yaml.rb)
|
|
492
501
|
elsif gem_version >= Gem::Version.new('1.7.5')
|
|
493
502
|
# TODO(uwe): Remove when we stop supporting jruby-jars 1.7.5
|
|
494
503
|
excluded_core_packages = %w(**/*Darwin* **/*Solaris* **/*windows* **/*Windows* META-INF com/headius com/kenai/constantine com/kenai/jffi com/kenai/jnr/x86asm com/martiansoftware jni jnr/constants/platform/darwin jnr/constants/platform/fake jnr/constants/platform/freebsd jnr/constants/platform/openbsd jnr/constants/platform/sunos jnr/ffi/annotations jnr/ffi/byref jnr/ffi/mapper jnr/ffi/provider jnr/ffi/util jnr/ffi/Struct$* jnr/ffi/types jnr/posix/Aix* jnr/posix/FreeBSD* jnr/posix/MacOS* jnr/posix/OpenBSD* jnr/x86asm org/jruby/ant org/jruby/cext org/jruby/compiler/impl/BaseBodyCompiler* org/jruby/compiler/util org/jruby/demo org/jruby/embed/bsf org/jruby/embed/jsr223 org/jruby/embed/osgi org/jruby/ext/ffi/AbstractMemory* org/jruby/ext/ffi/io org/jruby/ext/ffi/jffi org/jruby/ext/tracepoint org/jruby/javasupport/bsf org/yecht)
|
data/lib/ruboto/version.rb
CHANGED
|
@@ -29,7 +29,6 @@ class SslActivity
|
|
|
29
29
|
@open_uri_thread.join
|
|
30
30
|
run_on_ui_thread { @response_view.text = 'open-uri loaded OK!' }
|
|
31
31
|
puts 'before open'
|
|
32
|
-
ENV['TMPDIR'] = files_dir.absolute_path
|
|
33
32
|
open('https://google.com/', ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE) do |f|
|
|
34
33
|
puts 'inside open'
|
|
35
34
|
body = f.read
|
data/test/ruboto_gen_test.rb
CHANGED
|
@@ -50,10 +50,11 @@ class RubotoGenTest < Test::Unit::TestCase
|
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
# APK was 59.6KB. PLATFORM: CURRENT, ANDROID_TARGET: 10
|
|
53
|
-
# APK was
|
|
53
|
+
# APK was 66.6KB. PLATFORM: CURRENT, ANDROID_TARGET: 15
|
|
54
54
|
# APK was 74.9KB. PLATFORM: CURRENT, ANDROID_TARGET: 16
|
|
55
55
|
# APK was 80.4KB. PLATFORM: CURRENT, ANDROID_TARGET: 19
|
|
56
56
|
# APK was 65.0KB. PLATFORM: FROM_GEM, ANDROID_TARGET: 10
|
|
57
|
+
# APK was 81.0KB. PLATFORM: FROM_GEM, ANDROID_TARGET: 16
|
|
57
58
|
# APK was 80.2KB. PLATFORM: FROM_GEM, ANDROID_TARGET: 17
|
|
58
59
|
# APK was 8428.4KB. PLATFORM: STANDALONE, ANDROID_TARGET: 10, JRuby: 1.7.4
|
|
59
60
|
# APK was 7405.8KB. PLATFORM: STANDALONE, ANDROID_TARGET: 15, JRuby: 1.7.4
|
|
@@ -92,8 +93,8 @@ class RubotoGenTest < Test::Unit::TestCase
|
|
|
92
93
|
else
|
|
93
94
|
upper_limit = {
|
|
94
95
|
10 => 66.0,
|
|
95
|
-
15 =>
|
|
96
|
-
16 =>
|
|
96
|
+
15 => 67.0,
|
|
97
|
+
16 => 82.0,
|
|
97
98
|
17 => 81.0,
|
|
98
99
|
19 => 81.0,
|
|
99
100
|
}[ANDROID_TARGET] || 75.0
|
data/test/ruboto_setup_test.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require File.expand_path('test_helper', File.dirname(__FILE__))
|
|
2
2
|
require 'net/http'
|
|
3
3
|
|
|
4
|
-
class
|
|
4
|
+
class RubotoSetupTest < Test::Unit::TestCase
|
|
5
5
|
SDK_DOWNLOAD_PAGE = 'http://developer.android.com/sdk/index.html?hl=sk'
|
|
6
6
|
|
|
7
7
|
def test_if_page_still_exists
|
|
@@ -15,7 +15,7 @@ class SetupTest < Test::Unit::TestCase
|
|
|
15
15
|
regex = '(\>installer_.*.exe)'
|
|
16
16
|
page_content = Net::HTTP.get(URI.parse(SDK_DOWNLOAD_PAGE))
|
|
17
17
|
link = page_content.scan(/#{regex}/).to_s
|
|
18
|
-
assert_match
|
|
18
|
+
assert_match /\d+(\.\d+)?(\.\d+)?/, link
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
end
|
data/test/test_helper.rb
CHANGED
|
@@ -160,8 +160,6 @@ class Test::Unit::TestCase
|
|
|
160
160
|
standalone = options.delete(:standalone) || !!included_stdlibs || !!excluded_stdlibs || ENV['RUBOTO_PLATFORM'] == 'STANDALONE'
|
|
161
161
|
update = options.delete(:update) || false
|
|
162
162
|
ruby_version = options.delete(:ruby_version) || (JRUBY_JARS_VERSION.to_s[0..0] == '9' ? 2.1 : 1.9)
|
|
163
|
-
multi_dex = options.has_key?(:multi_dex) ? options.delete(:multi_dex) :
|
|
164
|
-
(standalone && !example && ANDROID_TARGET >= 16)
|
|
165
163
|
|
|
166
164
|
raise "Unknown options: #{options.inspect}" unless options.empty?
|
|
167
165
|
raise 'Inclusion/exclusion of libs requires standalone mode.' if (included_stdlibs || excluded_stdlibs) && !standalone
|
|
@@ -177,7 +175,6 @@ class Test::Unit::TestCase
|
|
|
177
175
|
template_dir << "_bundle_#{[*bundle].join('_')}" if bundle
|
|
178
176
|
template_dir << '_updated' if update
|
|
179
177
|
template_dir << '_standalone' if standalone
|
|
180
|
-
template_dir << '_multi-dex' if multi_dex
|
|
181
178
|
template_dir << "_without_#{excluded_stdlibs.map { |ed| ed.gsub(/[.\/]/, '_') }.join('_')}" if excluded_stdlibs
|
|
182
179
|
template_dir << "_with_#{included_stdlibs.map { |ed| ed.gsub(/[.\/]/, '_') }.join('_')}" if included_stdlibs
|
|
183
180
|
if File.exists?(template_dir)
|
|
@@ -192,8 +189,8 @@ class Test::Unit::TestCase
|
|
|
192
189
|
File.open('local.properties', 'w') { |f| f.puts "sdk.dir=#{ANDROID_HOME}" }
|
|
193
190
|
File.open('test/local.properties', 'w') { |f| f.puts "sdk.dir=#{ANDROID_HOME}" }
|
|
194
191
|
if standalone
|
|
195
|
-
if included_stdlibs || excluded_stdlibs || heap_alloc || ruby_version
|
|
196
|
-
write_ruboto_yml(included_stdlibs, excluded_stdlibs, heap_alloc, ruby_version
|
|
192
|
+
if included_stdlibs || excluded_stdlibs || heap_alloc || ruby_version
|
|
193
|
+
write_ruboto_yml(included_stdlibs, excluded_stdlibs, heap_alloc, ruby_version)
|
|
197
194
|
end
|
|
198
195
|
FileUtils.touch 'libs/jruby-core-x.x.x.jar'
|
|
199
196
|
FileUtils.touch 'libs/jruby-stdlib-x.x.x.jar'
|
|
@@ -216,13 +213,13 @@ class Test::Unit::TestCase
|
|
|
216
213
|
end
|
|
217
214
|
Dir.chdir APP_DIR do
|
|
218
215
|
write_gemfile(bundle) if bundle
|
|
219
|
-
if included_stdlibs || excluded_stdlibs || heap_alloc || ruby_version
|
|
216
|
+
if included_stdlibs || excluded_stdlibs || heap_alloc || ruby_version
|
|
220
217
|
sleep 1
|
|
221
|
-
write_ruboto_yml(included_stdlibs, excluded_stdlibs, heap_alloc, ruby_version
|
|
218
|
+
write_ruboto_yml(included_stdlibs, excluded_stdlibs, heap_alloc, ruby_version)
|
|
222
219
|
system 'rake build_xml jruby_adapter'
|
|
223
220
|
end
|
|
224
221
|
if standalone
|
|
225
|
-
system "#{RUBOTO_CMD} gen jruby"
|
|
222
|
+
system "#{RUBOTO_CMD} gen jruby #{JRUBY_JARS_VERSION}"
|
|
226
223
|
raise "update jruby failed with return code #$?" if $? != 0
|
|
227
224
|
end
|
|
228
225
|
end
|
|
@@ -291,12 +288,11 @@ class Test::Unit::TestCase
|
|
|
291
288
|
end
|
|
292
289
|
end
|
|
293
290
|
|
|
294
|
-
def write_ruboto_yml(included_stdlibs, excluded_stdlibs, heap_alloc, ruby_version
|
|
291
|
+
def write_ruboto_yml(included_stdlibs, excluded_stdlibs, heap_alloc, ruby_version)
|
|
295
292
|
yml = YAML.dump({'included_stdlibs' => included_stdlibs,
|
|
296
293
|
'excluded_stdlibs' => excluded_stdlibs,
|
|
297
294
|
# 'ruby_version' => ruby_version,
|
|
298
295
|
'heap_alloc' => heap_alloc,
|
|
299
|
-
'multi_dex' => multi_dex,
|
|
300
296
|
})
|
|
301
297
|
puts "Adding ruboto.yml:\n#{yml}"
|
|
302
298
|
File.open('ruboto.yml', 'w') { |f| f << yml }
|
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.1.
|
|
4
|
+
version: 1.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Daniel Jackoway
|
|
@@ -11,7 +11,7 @@ authors:
|
|
|
11
11
|
autorequire:
|
|
12
12
|
bindir: bin
|
|
13
13
|
cert_chain: []
|
|
14
|
-
date: 2014-
|
|
14
|
+
date: 2014-07-01 00:00:00.000000000 Z
|
|
15
15
|
dependencies:
|
|
16
16
|
- !ruby/object:Gem::Dependency
|
|
17
17
|
name: main
|
|
@@ -240,3 +240,4 @@ signing_key:
|
|
|
240
240
|
specification_version: 4
|
|
241
241
|
summary: A platform for developing apps using JRuby on Android.
|
|
242
242
|
test_files: []
|
|
243
|
+
has_rdoc:
|