ruboto 1.4.1 → 1.5.0

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: 4c5388b2c49b07f2a24e6ff47ddbfc1bdf3d3c32
4
- data.tar.gz: 5e403bbd0d6595fcfa3a331219ab11c78f8038e1
3
+ metadata.gz: 5cf1877943572ab84d12119768dd14f3f78974f0
4
+ data.tar.gz: 2ae6f50b354303637f7b7cd5274f74de10648182
5
5
  SHA512:
6
- metadata.gz: af308b2ecd2ace0e15375505db4cc4c67ef466952a64bfe761e784dcf5b3ad4a41546418cf2c1e0745a5dfb74c81f74cd36a24177bc44da3ce49429687886b23
7
- data.tar.gz: e90f2a78ea73193a1bfb24ee6436921ecf6c393947d3bd4d2d17fc9fec39067da4d335dcebd5082e3f09c8aa1326aceefb4b33e7269b242b50eb9dd0f77adf06
6
+ metadata.gz: 34824bba9512f51cd583fd61e51e018b636d24a12ed39923d128b2f45ddb6c86aaa5e3fdd1a3ccb5511a459e6f9bb19973279e8be2233a87a4da67a416c46a9e
7
+ data.tar.gz: ef88fdcd111e94f71a4c88509b98c7e5bbdb342a736350539b1b5cff4bf3b7f8cf2c30a5d5c0eddd265f9249e1522c9d87aee2e2f22e0aa487d6bde6a5da94c4
@@ -0,0 +1,28 @@
1
+ Contributing
2
+ ============
3
+
4
+ Want to contribute? Great! Meet us in #ruboto on irc.freenode.net, fork the
5
+ project and start coding!
6
+
7
+ "But I don't understand it well enough to contribute by forking the project!"
8
+ That's fine. Equally helpful:
9
+
10
+ * Use Ruboto and tell us how it could be better.
11
+ Report [issues](http://github.com/ruboto/ruboto/issues).
12
+ * Browse http://ruboto.org/ and the documentation, and let us know how to make
13
+ it better.
14
+ * As you gain wisdom, contribute it to
15
+ [the wiki](http://github.com/ruboto/ruboto/wiki).
16
+ * When you gain enough wisdom, reconsider whether you could fork the project.
17
+
18
+ If contributing code to the project, please run the existing tests and add tests
19
+ for your changes. You run the tests using rake:
20
+
21
+ $ rake test
22
+
23
+ We have set up a matrix test that tests multiple configuations on the emulator:
24
+
25
+ $ ./matrix_tests.sh
26
+
27
+ All branches and pull requests on GitHub are also tested on
28
+ [https://travis-ci.org/ruboto/ruboto](https://travis-ci.org/ruboto/ruboto).
@@ -1,9 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruboto (1.4.1.dev)
4
+ ruboto (1.5.0.dev)
5
5
  main (~> 5.2)
6
- rake (~> 10.0)
6
+ net-telnet (~> 0.1.1)
7
+ rake (~> 11.3)
7
8
  rubyzip (~> 1.0)
8
9
 
9
10
  GEM
@@ -11,23 +12,24 @@ GEM
11
12
  specs:
12
13
  arrayfields (4.9.2)
13
14
  chronic (0.10.2)
14
- coderay (1.1.0)
15
- fattr (2.2.2)
15
+ coderay (1.1.1)
16
+ fattr (2.3.0)
16
17
  main (5.3.2)
17
18
  arrayfields (>= 4.7.4)
18
19
  chronic (>= 0.6.2)
19
20
  fattr (>= 2.2.0)
20
21
  map (>= 5.1.0)
21
22
  pry (>= 0.9)
22
- map (6.5.5)
23
+ map (6.6.0)
23
24
  method_source (0.8.2)
24
- minitest (5.8.3)
25
- pry (0.10.3)
25
+ minitest (5.8.4)
26
+ net-telnet (0.1.1)
27
+ pry (0.10.4)
26
28
  coderay (~> 1.1.0)
27
29
  method_source (~> 0.8.1)
28
30
  slop (~> 3.4)
29
- rake (10.4.2)
30
- rubyzip (1.1.7)
31
+ rake (11.3.0)
32
+ rubyzip (1.2.0)
31
33
  slop (3.6.0)
32
34
 
33
35
  PLATFORMS
@@ -38,4 +40,4 @@ DEPENDENCIES
38
40
  ruboto!
39
41
 
40
42
  BUNDLED WITH
41
- 1.10.6
43
+ 1.13.6
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
  [![Build Status](https://travis-ci.org/ruboto/ruboto.svg?branch=master)](https://travis-ci.org/ruboto/ruboto)
3
3
  [![Code Climate](https://codeclimate.com/github/ruboto/ruboto.svg)](https://codeclimate.com/github/ruboto/ruboto)
4
4
 
5
+ <a href="https://gratipay.com/ruboto/" class="rich-diff-level-one"><img src="https://camo.githubusercontent.com/dcd1e367172f3fa649a334e1ee6fb334f16ed8d8/68747470733a2f2f63646e2e7261776769742e636f6d2f67726174697061792f67726174697061792d62616467652f322e782e782f646973742f67726174697061792e706e67" alt="Support via Gratipay" data-canonical-src="https://cdn.rawgit.com/gratipay/gratipay-badge/2.x.x/dist/gratipay.png" align="right" style="max-width:100%;"></a>
6
+
5
7
  Ruboto (JRuby on Android) is a platform for developing full stand-alone apps for
6
8
  Android using the Ruby language and libraries. It includes support libraries
7
9
  and generators for creating projects, classes, tests, and more. The complete
@@ -288,30 +290,7 @@ You can run the tests for your app using ant or rake:
288
290
  Contributing
289
291
  ------------
290
292
 
291
- Want to contribute? Great! Meet us in #ruboto on irc.freenode.net, fork the
292
- project and start coding!
293
-
294
- "But I don't understand it well enough to contribute by forking the project!"
295
- That's fine. Equally helpful:
296
-
297
- * Use Ruboto and tell us how it could be better.
298
- * Browse http://ruboto.org/ and the documentation, and let us know how to make
299
- it better.
300
- * As you gain wisdom, contribute it to
301
- [the wiki](http://github.com/ruboto/ruboto/wiki/)
302
- * When you gain enough wisdom, reconsider whether you could fork the project.
303
-
304
- If contributing code to the project, please run the existing tests and add tests
305
- for your changes. You run the tests using rake:
306
-
307
- $ rake test
308
-
309
- We have set up a matrix test that tests multiple configuations on the emulator:
310
-
311
- $ ./matrix_tests.sh
312
-
313
- All branches and pull requests on GitHub are also tested on
314
- [https://travis-ci.org/ruboto/ruboto](https://travis-ci.org/ruboto/ruboto).
293
+ See [CONTRIBUTING.md](CONTRIBUTING.md)
315
294
 
316
295
  Getting Help
317
296
  ------------
@@ -1,10 +1,11 @@
1
- Subject: [ANN] Ruboto 1.4.1 release candidate
1
+ Subject: [ANN] Ruboto 1.5.0 release candidate
2
2
 
3
3
  Hi all!
4
4
 
5
- The Ruboto 1.4.1 release candidate is now available.
5
+ The Ruboto 1.5.0 release candidate is now available.
6
6
 
7
- Bugfixes for the 1.4.0 release.
7
+ We now have properly working Ruby SSL and HTTPS! You need jruby-jars
8
+ 1.7.25 and Android 4.4 or better :)
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
 
@@ -1,6 +1,6 @@
1
- Subject: [ANN] Ruboto 1.4.1 released!
1
+ Subject: [ANN] Ruboto 1.5.0 released!
2
2
 
3
- The Ruboto team is pleased to announce the release of Ruboto 1.4.1.
3
+ The Ruboto team is pleased to announce the release of Ruboto 1.5.0.
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,44 +8,59 @@ 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.4.1:
11
+ New in version 1.5.0:
12
12
 
13
- Bugfixes for the 1.4.0 release.
13
+ We now have properly working Ruby SSL and HTTPS! You need jruby-jars
14
+ 1.7.25 and Android 4.4 or better :)
15
+
16
+ API Changes:
17
+
18
+ * Issue #713 Add support for Android 5.1 Lollipop
19
+ * Issue #768 Add support for Android 6.0 Marshmallow
14
20
 
15
21
  Features:
16
22
 
17
- * Issue #779 Differentiate the default dex heap size for 32-bit systems
18
- * Issue #780 Update "rake log" to handle output from Android 6.0
19
- * Issue #782 Do not commit the keystore by default
20
- * Issue #789 Add support for JRuby 1.7.24
23
+ * Issue #791 Update RubotoCore to ActiveRecord 4.2
24
+ * Issue #792 Set emulator name in ruboto.yml
25
+ * Issue #795 Set emulator device name in ruboto.yml
26
+ * Issue #797 Set emulator skin name in ruboto.yml
27
+ * Issue #798 ruboto.yml emulator config (donv)
28
+ * Issue #805 Add support for the new emulator 2.0
21
29
 
22
30
  Bugfixes:
23
31
 
24
- * Issue #783 Don't report changing emulator properties when they are not
25
- actually changed
26
- * Issue #784 Improve haxm install with/without "-y" and "--upgrade"
27
- options (donv)
28
- * Issue #785 Setup never finds Platform SDK
29
- * Issue #786 Use $ANDROID_HOME instead of android executable location to
30
- find platforms (ahills)
31
- * Issue #790 Fix "--update" option for "ruboto setup"
32
+ * Issue #726 Any reference to net/https throws LoadError for
33
+ org/bouncycastle/bcpkix-jdk15on/1.47/bcpkix-jdk15on-1.47
34
+ * Issue #793 Fix OpenSSL
35
+ * Issue #796 Adds a setting in "ruboto.yml" for the desired
36
+ dex_heap_size (lucasallan)
37
+ * Issue #807 Fix SDK_DOWNLOAD_PAGE link (LucianoPC)
38
+
39
+ Support:
32
40
 
33
- Performance:
41
+ * Issue #802 java.lang.UnsupportedOperationException: can't load this
42
+ type of class file
43
+ * Issue #803 (NoMethodError) undefined method 'current' for
44
+ Java::JavaLang::Thread:Class
34
45
 
35
- * Issue #787 Refresh the benchmark server layout and design
46
+ Community:
36
47
 
37
- Support:
48
+ * Issue #666 Set up donations and sponsoring of the Ruboto project
49
+
50
+ Pull requests:
38
51
 
39
- * Issue #749 Invalid maximum heap size: -Xmx4096M
40
- * Issue #761 JDK 7
52
+ * Issue #794 Test ssl (donv)
53
+ * Issue #812 Set ANDROID_EMULATOR_FORCE_32BIT to fix broken build
54
+ (celeduc)
41
55
 
42
56
  Internal:
43
57
 
44
- * Issue #773 Release 1.4.1
58
+ * Issue #775 Release 1.5.0
59
+ * Issue #808 Bug fixes (donv)
45
60
 
46
61
  You can find a complete list of issues here:
47
62
 
48
- * https://github.com/ruboto/ruboto/issues?state=closed&milestone=40
63
+ * https://github.com/ruboto/ruboto/issues?state=closed&milestone=41
49
64
 
50
65
 
51
66
  Installation:
data/Rakefile CHANGED
@@ -364,10 +364,10 @@ task :release => [:clean, README_FILE, :release_docs, :gem] do
364
364
  output = `git status --porcelain`
365
365
  raise "Workspace not clean!\n#{output}" unless output.empty?
366
366
  Dir.chdir WEB_DIR do
367
+ sh "git add -f #{RELEASE_BLOG}"
368
+ `git commit -m "* Added release blog for Ruboto #{Ruboto::VERSION}" -- #{RELEASE_BLOG}`
367
369
  output = `git status --porcelain`
368
370
  raise "Web workspace not clean!\n#{output}" unless output.empty?
369
- sh "git add -f #{RELEASE_BLOG}"
370
- `git commit -m "* Added release blog for Ruboto #{Ruboto::VERSION}"`
371
371
  sh 'git push'
372
372
  end
373
373
  sh "git tag #{Ruboto::VERSION}"
@@ -512,11 +512,12 @@ task :get_jruby_jars_snapshots do
512
512
  [[master_gem, 'master'], [stable_gem, 'jruby-1_7']].each do |gem, branch|
513
513
  print "Downloading #{gem}: \r"
514
514
  uri = URI("http://#{download_host}#{download_dir}/snapshots/#{branch}/#{gem}")
515
- done = 0
516
- body = ''
517
515
  Net::HTTP.new(uri.host, uri.port).request_get(uri.path) do |response|
518
516
  if response.code == '200'
519
517
  length = response['Content-Length'].to_i
518
+ timestamp = response['Last-Modified'] # Sat, 23 Jan 2016 05:52:03 GMT'
519
+ body = ''
520
+ done = 0
520
521
  response.read_body do |fragment|
521
522
  body << fragment
522
523
  done += fragment.length
@@ -525,50 +526,49 @@ task :get_jruby_jars_snapshots do
525
526
  print "Downloading #{gem}: #{done / 1024}/#{length / 1024}KB #{progress}%\r"
526
527
  end
527
528
  end
529
+ unless body.empty?
530
+ File.write(gem, body)
531
+ FileUtils.touch gem, mtime: Time.parse(timestamp)
532
+ end
528
533
  puts
529
534
  else
530
535
  raise "Unexpected HTTP response code: #{response.code.inspect}"
531
536
  end
532
537
  end
533
- File.open(gem, 'wb') { |f| f << body } unless body.empty?
534
538
  end
535
539
  end
536
540
 
537
541
  task '.travis.yml' do
538
542
  puts "Regenerating #{'.travis.yml'}"
539
543
  source = File.read('.travis.yml')
540
- test_parts = 4
544
+ test_parts = 3
541
545
  matrix = ''
542
546
  allow_failures = ''
543
547
 
544
548
  # FIXME(uwe): JRuby 1.7.13 works for Nettbuss. Keep for 2016.
545
549
  # FIXME(uwe): Test all of these that work
546
550
  [
547
- ['CURRENT', [nil]],
548
- ['FROM_GEM', [:MASTER, :STABLE]],
549
- ['STANDALONE', [:MASTER, :STABLE, '1.7.24', '1.7.13']],
551
+ # ['CURRENT', [nil]], # Running standalone is the most important way now
552
+ # ['FROM_GEM', [:MASTER, :STABLE]], # Running standalone is the most important way now
553
+ ['STANDALONE', [:MASTER, :STABLE, '1.7.25', '1.7.13']],
550
554
  ].each do |platform, versions|
551
555
  versions.each do |v|
552
556
  # FIXME(uwe): Test the newest and most common api levels
553
- # FIXME(uwe): Nettbuss uses api level 15. Keep for 2016.
557
+ # FIXME(uwe): Nettbuss uses api level 15. Keep for 2017.
554
558
  # FIXME(uwe): https://github.com/ruboto/ruboto/issues/426
555
- [23, 22, 21, 19, 17, 16, 15].each do |api|
559
+ [23, 22, 21, 19, 17, 15].each do |api|
556
560
  (1..test_parts).each do |n|
557
561
  line = " - ANDROID_TARGET=#{api} RUBOTO_PLATFORM=#{platform.ljust(10)} TEST_PART=#{n}of#{test_parts}#{" JRUBY_JARS_VERSION=#{v}" if v}\n"
558
562
 
559
- next if v == :MASTER # FIXME(uwe): Remove when master branch is green.
560
563
  next if api == 23 # FIXME(uwe): Remove when Android 6.0 is green. Unable to start emulator on travis.
561
564
  next if api == 22 # FIXME(uwe): Remove when Android 5.1 is green. Must use slow ARM emulator due to missing HAXM.
562
565
  next if api == 22 && platform == 'STANDALONE' && v == :STABLE # FIXME(uwe): Remove when Android 5.1 is green. Must use slow ARM emulator due to missing HAXM.
563
566
  next if api == 21 # FIXME(uwe): Remove when Android 5.0 is green.
564
567
  next if api == 17 # FIXME(uwe): Remove when Android 4.2 is green.
565
- next if api == 16 # FIXME(uwe): Remove when Android 4.1 is green.
566
568
 
567
- if platform == 'FROM_GEM' || # FIXME(uwe): Remove when new RubotoCore is green.
568
- (v == :STABLE && (platform != 'STANDALONE' || api != 15)) || # FIXME(uwe): Remove when 1.7 branch is green.
569
- v == '1.7.13' || # FIXME(uwe): Remove when 1.7.13 is green.
570
- false
571
- allow_failures << line.gsub('-', '- env:')
569
+ if v == :MASTER || v == :STABLE
570
+ # allow_failures << line.gsub('-', '- env:')
571
+ next
572
572
  end
573
573
  matrix << line
574
574
  end
@@ -35,6 +35,7 @@ Vagrant.configure(2) do |config|
35
35
  su - vagrant -c 'curl -sSL https://get.rvm.io | bash -s stable --ruby'
36
36
  su - vagrant -c 'mkdir -p ruboto'
37
37
  su - vagrant -c 'rsync -acPuv --exclude adb_logcat.log --exclude /tmp /vagrant/* ruboto/'
38
+ sudo apt-get -y autoremove
38
39
  SHELL
39
40
  end
40
41
 
@@ -29,8 +29,19 @@ def package_installed?(package_name, apk_file)
29
29
  installed_timestamp >= File.mtime(apk_file))
30
30
  end
31
31
 
32
+ # the scripts path is different on different Android versions and devices...
32
33
  def scripts_path(package)
33
- @sdcard_path ||= "/mnt/sdcard/Android/data/#{package}/files/scripts"
34
+ external_storage = `adb shell 'echo $EXTERNAL_STORAGE'`.chomp
35
+ app_data_path = "#{external_storage}/Android/data/#{package}"
36
+ if external_storage.empty?
37
+ puts "external storage not found: #{app_data_path.inspect}"
38
+ app_data_path = `adb shell run-as #{package} pwd`
39
+ if app_data_path =~ /Permission denied/
40
+ puts "internal storage not found: #{app_data_path.inspect}"
41
+ app_data_path = "/mnt/sdcard/Android/data/#{package}"
42
+ end
43
+ end
44
+ "#{app_data_path}/files/scripts"
34
45
  end
35
46
 
36
47
  def mark_update(time = Time.now)
@@ -75,7 +86,7 @@ def install_apk(package, apk_file)
75
86
  output = nil
76
87
  install_retry_count = 0
77
88
  begin
78
- timeout install_timeout do
89
+ Timeout.timeout install_timeout do
79
90
  output = `adb install -r "#{apk_file}" 2>&1`
80
91
  end
81
92
  rescue Timeout::Error
@@ -108,7 +119,7 @@ def install_apk(package, apk_file)
108
119
  output = nil
109
120
  install_retry_count = 0
110
121
  begin
111
- timeout install_timeout do
122
+ Timeout.timeout install_timeout do
112
123
  output = `adb install "#{apk_file}" 2>&1`
113
124
  end
114
125
  rescue Timeout::Error
@@ -138,22 +149,18 @@ def uninstall_apk(package_name, apk_file)
138
149
  end
139
150
  end
140
151
 
152
+ def make_device_path(package, path)
153
+ puts `adb shell #{"run-as #{package}" if sdk_level >= 23} mkdir -p #{path}`
154
+ device_path_exists?(path)
155
+ end
156
+
141
157
  def update_scripts(package)
142
- # FIXME(uwe): Simplify when we stop supporting Android 2.3
143
- if sdk_level < 15
144
- scripts_path(package).split('/').tap do |parts|
145
- parts.size.times do |i|
146
- path = parts[0..i].join('/')
147
- puts(`adb shell mkdir #{path}`) unless device_path_exists?(path)
148
- end
149
- end
150
- else
151
- puts(`adb shell mkdir -p #{scripts_path(package)}`) unless device_path_exists?(scripts_path(package))
158
+ scripts_path = scripts_path(package)
159
+ if !device_path_exists?(scripts_path) && !make_device_path(package, scripts_path)
160
+ raise "Unable to create device scripts dir: #{scripts_path}"
152
161
  end
153
- # EMXIF
154
-
155
- raise "Unable to create device scripts dir: #{scripts_path(package)}" unless device_path_exists?(scripts_path(package))
156
- last_update = File.exists?(UPDATE_MARKER_FILE) ? Time.parse(File.read(UPDATE_MARKER_FILE)) : Time.parse('1970-01-01T00:00:00')
162
+ mark_time = File.exists?(UPDATE_MARKER_FILE) ? File.read(UPDATE_MARKER_FILE) : '1970-01-01T00:00:00'
163
+ last_update = Time.parse(mark_time)
157
164
  Dir.chdir('src') do
158
165
  source_files = Dir['**/*.rb']
159
166
  changed_files = source_files.select { |f| !File.directory?(f) && File.mtime(f) >= last_update && f !~ /~$/ }
@@ -161,7 +168,7 @@ def update_scripts(package)
161
168
  puts 'Pushing files to apk public file area:'
162
169
  changed_files.each do |script_file|
163
170
  print "#{script_file}: "; $stdout.flush
164
- system "adb push #{script_file} #{scripts_path(package)}/#{script_file}"
171
+ system "adb push #{script_file} #{scripts_path}/#{script_file}"
165
172
  end
166
173
  mark_update
167
174
  return changed_files
@@ -555,18 +555,14 @@ file APK_FILE => APK_DEPENDENCIES do |t|
555
555
  build_apk(t, false)
556
556
  end
557
557
 
558
- # FIXME(uwe): Simplify when we stop supporting 32-bit development environments
559
- DEFAULT_MIN_DX_HEAP_SIZE = RbConfig::CONFIG['host_cpu'] =~ /86/ ? 3072 : 4096
560
- # EMXIF
561
- MINIMUM_DX_HEAP_SIZE = (ENV['DX_HEAP_SIZE'] && ENV['DX_HEAP_SIZE'].to_i) || DEFAULT_MIN_DX_HEAP_SIZE
562
558
  task :patch_dex do
563
559
  DX_FILENAMES.each do |dx_filename|
564
560
  new_dx_content = File.read(dx_filename).dup
565
561
  xmx_pattern = ON_WINDOWS ? /^set defaultXmx=-Xmx(\d+)(M|m|G|g|T|t)/ : /^defaultMx="-Xmx(\d+)(M|m|G|g|T|t)"/
566
562
  if new_dx_content =~ xmx_pattern &&
567
- ($1.to_i * 1024 ** {M: 2, G: 3, T: 4}[$2.upcase.to_sym]) < MINIMUM_DX_HEAP_SIZE*1024**2
568
- puts "Increasing max heap space from #{$1}#{$2} to #{MINIMUM_DX_HEAP_SIZE}M in #{dx_filename}"
569
- new_xmx_value = ON_WINDOWS ? %Q{set defaultXmx=-Xmx#{MINIMUM_DX_HEAP_SIZE}M} : %Q{defaultMx="-Xmx#{MINIMUM_DX_HEAP_SIZE}M"}
563
+ ($1.to_i * 1024 ** {M: 2, G: 3, T: 4}[$2.upcase.to_sym]) < dex_heap_size*1024**2
564
+ puts "Increasing max heap space from #{$1}#{$2} to #{dex_heap_size}M in #{dx_filename}"
565
+ new_xmx_value = ON_WINDOWS ? %Q{set defaultXmx=-Xmx#{dex_heap_size}M} : %Q{defaultMx="-Xmx#{dex_heap_size}M"}
570
566
  new_dx_content.sub!(xmx_pattern, new_xmx_value)
571
567
  File.open(dx_filename, 'w') { |f| f << new_dx_content } rescue puts "\n!!! Unable to increase dx heap size !!!\n\n"
572
568
  end
@@ -683,6 +679,7 @@ file BUNDLE_JAR => [GEM_FILE, GEM_LOCK_FILE] do
683
679
  old_verbose, $VERBOSE = $VERBOSE, nil
684
680
  begin
685
681
  Object.const_set('RUBY_ENGINE', 'jruby')
682
+ Object.const_set('JRUBY_VERSION', '7.7.7') unless defined?(JRUBY_VERSION)
686
683
  ensure
687
684
  $VERBOSE = old_verbose
688
685
  end
@@ -988,7 +985,7 @@ end
988
985
  # Triggers reload of updated scripts and restart of the current activity
989
986
  def reload_scripts(scripts)
990
987
  s = scripts.map { |s| s.gsub(/[&;]/) { |m| "&#{m[0]}" } }.join(';')
991
- cmd = %Q{adb shell am broadcast -a android.intent.action.VIEW -e reload '#{s}'}
988
+ cmd = %Q{adb shell "am broadcast -a android.intent.action.VIEW -e reload '#{s}'"}
992
989
  puts cmd
993
990
  system cmd
994
991
  end
@@ -997,3 +994,16 @@ def stop_app
997
994
  output = `adb shell ps | grep #{package} | awk '{print $2}' | xargs adb shell kill`
998
995
  output !~ /Operation not permitted/
999
996
  end
997
+
998
+ def dex_heap_size
999
+ # FIXME(uwe): Simplify when we stop supporting 32-bit development environments
1000
+ default = RbConfig::CONFIG['host_cpu'] =~ /86/ ? 3072 : 4096
1001
+ heap_size = ruboto_config_file[:dex_heap_size]
1002
+ # EMXIF
1003
+ @heap_size ||= (ENV['DX_HEAP_SIZE'] && ENV['DX_HEAP_SIZE'].to_i) || (heap_size && heap_size.to_i) || default
1004
+ end
1005
+
1006
+ def ruboto_config_file
1007
+ return {} unless File.exist? RUBOTO_CONFIG_FILE
1008
+ @ruboto_config_file ||= (YAML.load(File.read(RUBOTO_CONFIG_FILE)) || {})
1009
+ end