ruboto 0.14.0 → 0.15.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.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +3 -5
- data/README.md +41 -36
- data/RELEASE_CANDICATE_DOC +12 -5
- data/RELEASE_DOC +29 -50
- data/Rakefile +13 -7
- data/assets/rakelib/ruboto.rake +63 -16
- data/assets/samples/sample_activity.rb +1 -1
- data/assets/src/RubotoActivity.java +5 -5
- data/assets/src/org/ruboto/EntryPointActivity.java +13 -52
- data/assets/src/org/ruboto/JRubyAdapter.java +1 -1
- data/assets/src/org/ruboto/SplashActivity.java +117 -119
- data/assets/src/ruboto/activity/reload.rb +66 -0
- data/lib/java_class_gen/android_api.xml +1 -1
- data/lib/ruboto/core_ext/rexml.rb +2 -0
- data/lib/ruboto/util/emulator.rb +1 -1
- data/lib/ruboto/util/setup.rb +12 -9
- data/lib/ruboto/util/update.rb +30 -2
- data/lib/ruboto/version.rb +1 -1
- data/test/ruboto_gen_test.rb +8 -5
- data/test/ruboto_update_test.rb +2 -2
- data/test/splash_test.rb +0 -3
- data/test/sqldroid_test.rb +0 -3
- data/test/test_helper.rb +23 -37
- data/test/update_test_methods.rb +0 -1
- data/test/updated_example_test_methods.rb +4 -1
- metadata +5 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c968343b3a48179ec48fecd316b53fa63ad49e49
|
4
|
+
data.tar.gz: 2a00ac4f9378a4ea037519665d94dee920b0b076
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7beb90cd29d1041a36f2d657023dafc8ac6869ab94532eef8123dddd00fac65f7695747914b0b1549b30284cc9036167545f35c428d3d21637c8bc7f00f52ca2
|
7
|
+
data.tar.gz: ca14e4d1b2bb0c2a49f809b5211e476deb03a4630d55b3aee0109afb2b19f2c2b8f008d63e10f4e760ef41fbca0f4d3aa205113dd4098c0ac3d195eeec356bab
|
data/Gemfile
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
source '
|
1
|
+
source 'http://rubygems.org/'
|
2
2
|
gemspec
|
data/Gemfile.lock
CHANGED
@@ -1,18 +1,16 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ruboto (0.
|
5
|
-
jruby-jars
|
4
|
+
ruboto (0.15.0)
|
6
5
|
main (>= 4.7.2)
|
7
6
|
rake
|
8
7
|
|
9
8
|
GEM
|
10
|
-
remote:
|
9
|
+
remote: http://rubygems.org/
|
11
10
|
specs:
|
12
11
|
arrayfields (4.9.0)
|
13
|
-
chronic (0.
|
12
|
+
chronic (0.10.2)
|
14
13
|
fattr (2.2.1)
|
15
|
-
jruby-jars (1.7.4)
|
16
14
|
main (5.2.0)
|
17
15
|
arrayfields (>= 4.7.4)
|
18
16
|
chronic (>= 0.6.2)
|
data/README.md
CHANGED
@@ -199,17 +199,19 @@ your favorite text editor. If you want an activity that does nothing but Log
|
|
199
199
|
when it gets launched and when it gets destroyed (in the onCreate and onPause
|
200
200
|
methods). You want your script to look like this:
|
201
201
|
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
202
|
+
```ruby
|
203
|
+
class FooActivity
|
204
|
+
def onCreate(bundle)
|
205
|
+
super
|
206
|
+
android.util.Log.v 'MYAPPNAME', 'onCreate got called!'
|
207
|
+
end
|
208
|
+
|
209
|
+
def onPause
|
210
|
+
super
|
211
|
+
android.util.Log.v 'MYAPPNAME', 'onPause got called!'
|
212
|
+
end
|
213
|
+
end
|
214
|
+
```
|
213
215
|
|
214
216
|
The arguments passed to the methods are the same as the arguments that the java
|
215
217
|
methods take. Consult the Android documentation.
|
@@ -234,27 +236,29 @@ directory. For example if you generate a RubotoSampleAppActivity a file
|
|
234
236
|
"test/src/ruboto_sample_app_activity_test.rb" file is created containing a
|
235
237
|
sample test script:
|
236
238
|
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
239
|
+
```ruby
|
240
|
+
activity Java::org.ruboto.sample_app.RubotoSampleAppActivity
|
241
|
+
|
242
|
+
setup do |activity|
|
243
|
+
start = Time.now
|
244
|
+
loop do
|
245
|
+
@text_view = activity.findViewById(42)
|
246
|
+
break if @text_view || (Time.now - start > 60)
|
247
|
+
sleep 1
|
248
|
+
end
|
249
|
+
assert @text_view
|
250
|
+
end
|
251
|
+
|
252
|
+
test('initial setup') do |activity|
|
253
|
+
assert_equal "What hath Matz wrought?", @text_view.text
|
254
|
+
end
|
255
|
+
|
256
|
+
test('button changes text') do |activity|
|
257
|
+
button = activity.findViewById(43)
|
258
|
+
button.performClick
|
259
|
+
assert_equal "What hath Matz wrought!", @text_view.text
|
260
|
+
end
|
261
|
+
```
|
258
262
|
|
259
263
|
You run the tests for your app using ant or rake
|
260
264
|
|
@@ -328,10 +332,11 @@ commands.
|
|
328
332
|
|
329
333
|
For example, in your `~/.bashrc`, `~/.zshrc`, or similar file, you might put
|
330
334
|
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
+
```sh
|
336
|
+
alias ics="ruboto emulator -t 15"
|
337
|
+
alias jellyb="ruboto emulator -t 16"
|
338
|
+
alias jb17="ruboto emulator -t 17"
|
339
|
+
```
|
335
340
|
|
336
341
|
Alternatives
|
337
342
|
------------
|
data/RELEASE_CANDICATE_DOC
CHANGED
@@ -1,11 +1,18 @@
|
|
1
|
-
Subject: [ANN] Ruboto 0.
|
1
|
+
Subject: [ANN] Ruboto 0.15.0 release candidate
|
2
2
|
|
3
3
|
Hi all!
|
4
4
|
|
5
|
-
The Ruboto 0.
|
6
|
-
|
7
|
-
In this release we
|
8
|
-
|
5
|
+
The Ruboto 0.15.0 release candidate is now available.
|
6
|
+
|
7
|
+
In this release we stabilize the new SplashActivity feature and introduce
|
8
|
+
a new rapid development cycle.
|
9
|
+
|
10
|
+
Using "rake update_scripts:reload" changed Ruby scripts are pushed to the
|
11
|
+
device/emulator and an intent is broadcasted to reload the files inside
|
12
|
+
the running app, and the currently displayed activity is restarted.
|
13
|
+
|
14
|
+
The process should take just a few seconds and avoids the full
|
15
|
+
build->transfer->restart cycle.
|
9
16
|
|
10
17
|
As always we need your help and feedback to ensure the quality of the release. Please install the release candidate using
|
11
18
|
|
data/RELEASE_DOC
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
Subject: [ANN] Ruboto 0.
|
1
|
+
Subject: [ANN] Ruboto 0.15.0 released!
|
2
2
|
|
3
|
-
The Ruboto team is pleased to announce the release of Ruboto 0.
|
3
|
+
The Ruboto team is pleased to announce the release of Ruboto 0.15.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,73 +8,52 @@ 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 0.
|
11
|
+
New in version 0.15.0:
|
12
12
|
|
13
|
-
In this release we
|
14
|
-
|
13
|
+
In this release we stabilize the new SplashActivity feature and introduce
|
14
|
+
a new rapid development cycle.
|
15
|
+
|
16
|
+
Using "rake update_scripts:reload" changed Ruby scripts are pushed to the
|
17
|
+
device/emulator and an intent is broadcasted to reload the files inside
|
18
|
+
the running app, and the currently displayed activity is restarted.
|
19
|
+
|
20
|
+
The process should take just a few seconds and avoids the full
|
21
|
+
build->transfer->restart cycle.
|
15
22
|
|
16
23
|
Features:
|
17
24
|
|
18
|
-
* Issue #
|
19
|
-
* Issue #
|
20
|
-
* Issue #
|
21
|
-
|
25
|
+
* Issue #12 Fast development with "rake update_scripts:reload"
|
26
|
+
* Issue #461 Old API level files removed from repository as of 4.3
|
27
|
+
* Issue #475 Reuse the original Intent when relaunching the user activity
|
28
|
+
after the SplashActivity has completed.
|
29
|
+
* Issue #482 Better handling of "update_scripts" apk timestamp
|
30
|
+
* Issue #486 Let "ruboto setup" download the latest version of a tool if
|
31
|
+
multiple versions exist.
|
22
32
|
|
23
33
|
Bugfixes:
|
24
34
|
|
25
|
-
* Issue #
|
26
|
-
* Issue #
|
27
|
-
* Issue #
|
28
|
-
* Issue #
|
29
|
-
calling onCreate
|
30
|
-
* Issue #442 Adding splash.xml crashes app.
|
31
|
-
* Issue #443 onCreateOptionsMenu (and other callbacks) not called on first
|
32
|
-
time startup
|
33
|
-
* Issue #449 Change ruboto setup to use /linux/ instead of /^linux(.*)/
|
34
|
-
* Issue #451 Changing device orientation during splash causes exception
|
35
|
-
* Issue #453 Builds but fails to load ruby scripts on uppercase package
|
36
|
-
name
|
37
|
-
* Issue #455 Rake install fails in ruboto-0.14.0-dev
|
38
|
-
* Issue #468 Using the EntryPointActivity check in the RubotoActivity
|
39
|
-
template doesn't work for other activities like PreferencesActivity
|
40
|
-
* Issue #470 "ruboto update app" deletes "src/ruboto/.svn" subversion
|
41
|
-
directory
|
35
|
+
* Issue #174 Ensure APK is not rebuilt if only Ruby source has changed
|
36
|
+
* Issue #452 Android SDK command dx Not found
|
37
|
+
* Issue #481 New Splash fails to start on Android 2.3
|
38
|
+
* Issue #490 ruboto setup
|
42
39
|
|
43
40
|
Support:
|
44
41
|
|
45
|
-
* Issue #
|
46
|
-
* Issue #450 Application aborts prematurely, when I add a Gemfile.apk
|
47
|
-
|
48
|
-
Documentation:
|
49
|
-
|
50
|
-
* Issue #225 Investigate AIDE
|
51
|
-
* Issue #430 Add Downloads page to ruboto.org
|
42
|
+
* Issue #469 Missing step in "Getting started": 1'. install GEMS
|
52
43
|
|
53
44
|
Pull requests:
|
54
45
|
|
55
|
-
* Issue #
|
56
|
-
* Issue #
|
57
|
-
#437
|
58
|
-
* Issue #444 Fix building on Windows caused by mixed file separators. Also
|
59
|
-
pre-compressed the included PNGs with optipng, despite included pngcrush
|
60
|
-
during rake for increased loseless file compression.
|
61
|
-
* Issue #454 Fix android_package_directory for ones already installed
|
62
|
-
android sdk
|
63
|
-
* Issue #457 Allow uppercase package name
|
64
|
-
* Issue #462 Add SplashActivity for new startup sequence
|
65
|
-
* Issue #463 New APK size upper limit in test/ruboto_gen_test
|
66
|
-
* Issue #464 Fix #451 by locking screen orientation of SplashActivity
|
46
|
+
* Issue #474 Longer 'Timeout' time of BOSS process
|
47
|
+
* Issue #477 Add readme.MD syntax highlight.
|
67
48
|
|
68
49
|
Internal:
|
69
50
|
|
70
|
-
* Issue #
|
71
|
-
|
72
|
-
* Issue #437 test ruboto_update_test fails for old versions < 0.11.0
|
73
|
-
* Issue #465 Adjust update scripts to the new JRuby mavenized packaging
|
51
|
+
* Issue #487 Start testing against JRuby 9000
|
52
|
+
* Issue #488 Start testing against JRuby 1.7.5
|
74
53
|
|
75
54
|
You can find a complete list of issues here:
|
76
55
|
|
77
|
-
* https://github.com/ruboto/ruboto/issues?state=closed&milestone=
|
56
|
+
* https://github.com/ruboto/ruboto/issues?state=closed&milestone=29
|
78
57
|
|
79
58
|
|
80
59
|
Installation:
|
data/Rakefile
CHANGED
@@ -21,6 +21,8 @@ README_FILE = 'README.md'
|
|
21
21
|
BLOG_DIR = "#{File.dirname PROJECT_DIR}/ruboto.github.com/_posts"
|
22
22
|
RELEASE_BLOG = "#{BLOG_DIR}/#{Date.today}-Ruboto-#{Ruboto::VERSION}-release-doc.md"
|
23
23
|
RELEASE_BLOG_GLOB = "#{BLOG_DIR}/*-Ruboto-#{Ruboto::VERSION}-release-doc.md"
|
24
|
+
RELEASE_CANDIDATE_DOC = 'RELEASE_CANDICATE_DOC'
|
25
|
+
RELEASE_DOC = 'RELEASE_DOC'
|
24
26
|
|
25
27
|
CLEAN.include('ruboto-*.gem', 'tmp')
|
26
28
|
|
@@ -35,10 +37,10 @@ file GEM_FILE => GEM_SPEC_FILE do
|
|
35
37
|
end
|
36
38
|
|
37
39
|
task :install => :gem do
|
38
|
-
`gem query -i -n ^ruboto$ -v #{Ruboto::VERSION}`
|
40
|
+
`RUBYOPT= gem query -i -n ^ruboto$ -v #{Ruboto::VERSION}`
|
39
41
|
if $? != 0
|
40
42
|
puts 'Installing gem'
|
41
|
-
cmd = "gem install ruboto-#{Ruboto::VERSION}.gem"
|
43
|
+
cmd = "RUBYOPT= gem install ruboto-#{Ruboto::VERSION}.gem"
|
42
44
|
output = `#{cmd}`
|
43
45
|
if $? == 0
|
44
46
|
puts output
|
@@ -51,10 +53,10 @@ task :install => :gem do
|
|
51
53
|
end
|
52
54
|
|
53
55
|
task :uninstall do
|
54
|
-
`gem query -i -n ^ruboto$ -v #{Ruboto::VERSION}`
|
56
|
+
`RUBYOPT= gem query -i -n ^ruboto$ -v #{Ruboto::VERSION}`
|
55
57
|
if $? == 0
|
56
58
|
puts 'Uninstalling gem'
|
57
|
-
cmd = "gem uninstall -x ruboto -v #{Ruboto::VERSION}"
|
59
|
+
cmd = "RUBYOPT= gem uninstall -x ruboto -v #{Ruboto::VERSION}"
|
58
60
|
output = `#{cmd}`
|
59
61
|
if $? == 0
|
60
62
|
puts output
|
@@ -204,7 +206,8 @@ http://ruboto.org/
|
|
204
206
|
EOF
|
205
207
|
|
206
208
|
puts release_candidate_doc
|
207
|
-
File.write(
|
209
|
+
File.write(RELEASE_CANDIDATE_DOC, release_candidate_doc)
|
210
|
+
sh "git add -f #{RELEASE_CANDIDATE_DOC}"
|
208
211
|
|
209
212
|
puts
|
210
213
|
puts '=' * 80
|
@@ -278,7 +281,9 @@ title : Ruboto #{Ruboto::VERSION}
|
|
278
281
|
layout: post
|
279
282
|
---
|
280
283
|
EOF
|
281
|
-
File.write(
|
284
|
+
File.write(RELEASE_DOC, release_doc)
|
285
|
+
sh "git add -f #{RELEASE_DOC}"
|
286
|
+
`git commit -m "* Added release doc for Ruboto #{Ruboto::VERSION}"`
|
282
287
|
Dir.chdir BLOG_DIR do
|
283
288
|
output = `git status --porcelain`
|
284
289
|
old_blog_posts = Dir[RELEASE_BLOG_GLOB] - [RELEASE_BLOG]
|
@@ -447,6 +452,7 @@ namespace :platform do
|
|
447
452
|
content = http.request(Net::HTTP::Get.new(uri.request_uri)).body
|
448
453
|
File.open(PLATFORM_CURRENT_RELEASE_APK, 'wb') { |f| f << content }
|
449
454
|
rescue Exception, SystemExit
|
455
|
+
puts "Download failed: #{$!}"
|
450
456
|
FileUtils.rm(PLATFORM_CURRENT_RELEASE_APK) if File.exists?(PLATFORM_CURRENT_RELEASE_APK)
|
451
457
|
raise
|
452
458
|
end
|
@@ -564,7 +570,7 @@ end
|
|
564
570
|
|
565
571
|
desc 'Download the latest jruby-jars snapshot'
|
566
572
|
task :get_jruby_jars_snapshot do
|
567
|
-
current_gem = 'jruby-jars-
|
573
|
+
current_gem = 'jruby-jars-9000.dev.gem'
|
568
574
|
`wget http://ci.jruby.org/snapshots/master/#{current_gem}`
|
569
575
|
jars = Dir["#{current_gem}.*"]
|
570
576
|
jars[0..-2].each { |j| FileUtils.rm_f j } if jars.size > 1
|
data/assets/rakelib/ruboto.rake
CHANGED
@@ -54,11 +54,25 @@ unless DX_FILENAME
|
|
54
54
|
exit 1
|
55
55
|
end
|
56
56
|
|
57
|
-
def manifest;
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
def
|
57
|
+
def manifest;
|
58
|
+
@manifest ||= REXML::Document.new(File.read(MANIFEST_FILE))
|
59
|
+
end
|
60
|
+
|
61
|
+
def package;
|
62
|
+
manifest.root.attribute('package')
|
63
|
+
end
|
64
|
+
|
65
|
+
def build_project_name;
|
66
|
+
@build_project_name ||= REXML::Document.new(File.read('build.xml')).elements['project'].attribute(:name).value
|
67
|
+
end
|
68
|
+
|
69
|
+
def scripts_path;
|
70
|
+
@sdcard_path ||= "/mnt/sdcard/Android/data/#{package}/files/scripts"
|
71
|
+
end
|
72
|
+
|
73
|
+
def app_files_path;
|
74
|
+
@app_files_path ||= "/data/data/#{package}/files"
|
75
|
+
end
|
62
76
|
|
63
77
|
PROJECT_DIR = File.expand_path('..', File.dirname(__FILE__))
|
64
78
|
UPDATE_MARKER_FILE = File.join(PROJECT_DIR, 'bin', 'LAST_UPDATE')
|
@@ -224,7 +238,7 @@ file RUBOTO_CONFIG_FILE
|
|
224
238
|
file JRUBY_ADAPTER_FILE => RUBOTO_CONFIG_FILE do
|
225
239
|
require 'yaml'
|
226
240
|
if (heap_alloc = YAML.load(File.read(RUBOTO_CONFIG_FILE))['heap_alloc'])
|
227
|
-
|
241
|
+
config = <<EOF
|
228
242
|
// BEGIN Ruboto HeapAlloc
|
229
243
|
@SuppressWarnings("unused")
|
230
244
|
byte[] arrayForHeapAllocation = new byte[#{heap_alloc} * 1024 * 1024];
|
@@ -242,7 +256,7 @@ EOF
|
|
242
256
|
end
|
243
257
|
source = File.read(JRUBY_ADAPTER_FILE)
|
244
258
|
heap_alloc_pattern = %r{^\s*// BEGIN Ruboto HeapAlloc\n.*^\s*// END Ruboto HeapAlloc\n}m
|
245
|
-
File.open(JRUBY_ADAPTER_FILE, 'w'){|f| f << source.sub(heap_alloc_pattern, config)}
|
259
|
+
File.open(JRUBY_ADAPTER_FILE, 'w') { |f| f << source.sub(heap_alloc_pattern, config) }
|
246
260
|
end
|
247
261
|
|
248
262
|
file APK_FILE => APK_DEPENDENCIES do |t|
|
@@ -269,7 +283,7 @@ end
|
|
269
283
|
|
270
284
|
namespace :update_scripts do
|
271
285
|
desc 'Copy scripts to emulator and restart the app'
|
272
|
-
task :restart => APK_DEPENDENCIES do |t|
|
286
|
+
task :restart => APK_DEPENDENCIES - RUBY_SOURCE_FILES do |t|
|
273
287
|
if build_apk(t, false) || !stop_app
|
274
288
|
install_apk
|
275
289
|
else
|
@@ -277,6 +291,27 @@ namespace :update_scripts do
|
|
277
291
|
end
|
278
292
|
start_app
|
279
293
|
end
|
294
|
+
|
295
|
+
desc 'Copy scripts to emulator and restart the app'
|
296
|
+
task :start => APK_DEPENDENCIES - RUBY_SOURCE_FILES do |t|
|
297
|
+
if build_apk(t, false)
|
298
|
+
install_apk
|
299
|
+
else
|
300
|
+
update_scripts
|
301
|
+
end
|
302
|
+
start_app # FIXME(uwe): Should trigger reload of updated scripts
|
303
|
+
end
|
304
|
+
|
305
|
+
desc 'Copy scripts to emulator and reload'
|
306
|
+
task :reload => APK_DEPENDENCIES - RUBY_SOURCE_FILES do |t|
|
307
|
+
if build_apk(t, false)
|
308
|
+
install_apk
|
309
|
+
start_app
|
310
|
+
else
|
311
|
+
scripts = update_scripts
|
312
|
+
reload_scripts(scripts) if scripts
|
313
|
+
end
|
314
|
+
end
|
280
315
|
end
|
281
316
|
|
282
317
|
task :test => APK_DEPENDENCIES + [:uninstall] do
|
@@ -665,24 +700,36 @@ end
|
|
665
700
|
|
666
701
|
def update_scripts
|
667
702
|
`adb shell mkdir -p #{scripts_path}` if !device_path_exists?(scripts_path)
|
668
|
-
puts 'Pushing files to apk public file area.'
|
669
703
|
last_update = File.exists?(UPDATE_MARKER_FILE) ? Time.parse(File.read(UPDATE_MARKER_FILE)) : Time.parse('1970-01-01T00:00:00')
|
670
704
|
Dir.chdir('src') do
|
671
|
-
Dir['**/*.rb']
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
705
|
+
source_files = Dir['**/*.rb']
|
706
|
+
changed_files = source_files.select { |f| !File.directory?(f) && File.mtime(f) >= last_update && f !~ /~$/ }
|
707
|
+
unless changed_files.empty?
|
708
|
+
puts 'Pushing files to apk public file area.'
|
709
|
+
changed_files.each do |script_file|
|
710
|
+
print "#{script_file}: "; $stdout.flush
|
711
|
+
`adb push #{script_file} #{scripts_path}/#{script_file}`
|
712
|
+
end
|
713
|
+
mark_update
|
714
|
+
return changed_files
|
677
715
|
end
|
678
716
|
end
|
679
|
-
|
717
|
+
return nil
|
680
718
|
end
|
681
719
|
|
682
720
|
def start_app
|
683
721
|
`adb shell am start -a android.intent.action.MAIN -n #{package}/.#{main_activity}`
|
684
722
|
end
|
685
723
|
|
724
|
+
# Triggers reload of updated scripts and restart of the current activity
|
725
|
+
def reload_scripts(scripts)
|
726
|
+
scripts.each.with_index do |s, i|
|
727
|
+
cmd = "adb shell am broadcast -a android.intent.action.VIEW -e file #{s} #{'-e restart YES' if i == (scripts.size - 1)}"
|
728
|
+
puts cmd
|
729
|
+
system cmd
|
730
|
+
end
|
731
|
+
end
|
732
|
+
|
686
733
|
def stop_app
|
687
734
|
output = `adb shell ps | grep #{package} | awk '{print $2}' | xargs adb shell kill`
|
688
735
|
output !~ /Operation not permitted/
|