rhodes 2.1.0 → 2.2.0.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +7 -0
- data/README.textile +4 -5
- data/Rakefile +8 -1
- data/lib/build/jake.rb +22 -16
- data/lib/extensions/rhoxml/rexml/cdata.rb +67 -0
- data/lib/extensions/rhoxml/rexml/document.rb +2 -116
- data/lib/extensions/rhoxml/rexml/element.rb +1 -1
- data/lib/extensions/rhoxml/rexml/text.rb +117 -0
- data/lib/framework/rho/render.rb +19 -11
- data/lib/framework/rho/rho.rb +17 -10
- data/lib/framework/rho/rhobluetooth.rb +103 -0
- data/lib/framework/rho/rhocontroller.rb +2 -0
- data/lib/framework/rho/rhoevent.rb +43 -0
- data/lib/framework/rho/rhoevent_bb.rb +80 -0
- data/lib/framework/rho/rhoevent_c.rb +47 -0
- data/lib/framework/rhodes.rb +2 -2
- data/lib/framework/rhom/rhom_db_adapter.rb +2 -1
- data/lib/framework/rhom/rhom_model.rb +9 -3
- data/lib/framework/rhom/rhom_object_factory.rb +46 -22
- data/lib/framework/rhom/rhom_source.rb +12 -10
- data/lib/framework/version.rb +2 -2
- data/lib/rhodes.rb +2 -2
- data/platform/android/Rhodes/AndroidManifest.xml +23 -2
- data/platform/android/Rhodes/gen/com/rhomobile/rhodes/R.java +54 -38
- data/platform/android/Rhodes/jni/include/rhodes.h +3 -0
- data/platform/android/Rhodes/jni/include/rhodes/JNIRhodes.h +2 -2
- data/platform/android/Rhodes/jni/include/rhodes/details/rhojava.inc +4 -0
- data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_RhodesService.h +16 -0
- data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_bluetooth_RhoBluetoothManager.h +21 -0
- data/platform/android/Rhodes/jni/src/bluetooth.cpp +169 -0
- data/platform/android/Rhodes/jni/src/callbacks.cpp +10 -0
- data/platform/android/Rhodes/jni/src/event.cpp +429 -0
- data/platform/android/Rhodes/jni/src/fileapi.cpp +51 -1
- data/platform/android/Rhodes/jni/src/rhodes.cpp +16 -0
- data/platform/android/Rhodes/jni/src/sslimpl.cpp +3 -0
- data/platform/android/Rhodes/res/layout/bt_device_list.xml +42 -0
- data/platform/android/Rhodes/res/layout/bt_device_name.xml +7 -0
- data/platform/android/Rhodes/res/values/strings.xml +8 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/AndroidR.java +14 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Capabilities.java +2 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Push.java +7 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushReceiver.java +58 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushService.java +53 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Rhodes.java +8 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +144 -3
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/IRhoBluetoothManager.java +66 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothDeviceListActivity.java +201 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManager.java +139 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManagerNew.java +401 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManagerOld.java +136 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothSession.java +457 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/UUIDHelper.java +71 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCapture.java +12 -7
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/Event.java +19 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/EventStore.java +261 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SimpleMainView.java +4 -2
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/TabbedMainView.java +2 -2
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/uri/MailUriHandler.java +10 -2
- data/platform/android/build/RhodesSRC_build.files +33 -22
- data/platform/android/build/android.rake +198 -27
- data/platform/android/build/librhodes_build.files +3 -1
- data/platform/android/build/libruby_build.files +4 -1
- data/platform/bb/Hsqldb/src/com/rho/db/HsqlDBResult.java +2 -2
- data/platform/bb/Hsqldb/src/com/rho/db/HsqlDBRowResult.java +1 -1
- data/platform/bb/Hsqldb/src/org/hsqldb/Expression.java +7 -4
- data/platform/bb/Hsqldb/src/org/hsqldb/Like.java +3 -3
- data/platform/bb/Hsqldb/src/org/hsqldb/Table.java +3 -1
- data/platform/bb/Hsqldb/src/org/hsqldb/Tokenizer.java +1 -1
- data/platform/bb/RubyVM/RubyVM.jdp +1 -0
- data/platform/bb/RubyVM/src/com/rho/RhoConf.java +108 -1
- data/platform/bb/RubyVM/src/com/rho/RhoLogConf.java +7 -1
- data/platform/bb/RubyVM/src/com/rho/RhoRuby.java +7 -4
- data/platform/bb/RubyVM/src/com/rho/ThreadQueue.java +7 -1
- data/platform/bb/RubyVM/src/com/rho/net/AsyncHttp.java +1 -1
- data/platform/bb/RubyVM/src/com/rho/net/NetRequest.java +21 -23
- data/platform/bb/RubyVM/src/com/rho/net/RhoConnection.java +19 -10
- data/platform/bb/RubyVM/src/com/rho/sync/SyncEngine.java +8 -0
- data/platform/bb/RubyVM/src/com/rho/sync/SyncNotify.java +3 -0
- data/platform/bb/RubyVM/src/com/rho/sync/SyncThread.java +14 -17
- data/platform/bb/RubyVM/src/com/xruby/runtime/builtin/RubyFile.java +7 -5
- data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RhoSupport.java +2 -0
- data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RubyRuntime.java +10 -1
- data/platform/bb/RubyVM/src/j2me/io/File.java +7 -6
- data/platform/bb/build/RubyVM_build.files +412 -412
- data/platform/bb/build/bb.rake +42 -18
- data/platform/bb/build/hsqldb_build.files +151 -151
- data/platform/bb/build/rhodes_build.files +44 -40
- data/platform/bb/rhodes/platform/5.0/com/rho/BrowserAdapter5.java +2 -0
- data/platform/bb/rhodes/platform/5.0/com/rho/RhodesApplicationPlatform.java +237 -0
- data/platform/bb/rhodes/platform/common/com/rho/RhodesApplicationPlatform.java +14 -0
- data/platform/bb/rhodes/rhodes.jdp +6 -1
- data/platform/bb/rhodes/src/com/rho/RhoRubyHelper.java +7 -1
- data/platform/bb/rhodes/src/com/rho/RhodesApplicationPlatform.java +14 -0
- data/platform/bb/rhodes/src/com/rho/net/NetworkAccess.java +62 -76
- data/platform/bb/rhodes/src/com/rho/rubyext/RhoCalendar.java +660 -0
- data/platform/bb/rhodes/src/{rhomobile → com/rho/rubyext}/RhoPhonebook.java +95 -38
- data/platform/bb/rhodes/src/com/rho/rubyext/System.java +22 -1
- data/platform/bb/rhodes/src/rhomobile/PushListeningThread.java +26 -6
- data/platform/bb/rhodes/src/rhomobile/RhodesApplication.java +21 -7
- data/platform/bb/rhodes/src/rhomobile/bluetooth/BluetoothManager.java +528 -0
- data/platform/bb/rhodes/src/rhomobile/bluetooth/BluetoothPort.java +281 -0
- data/platform/bb/rhodes/src/rhomobile/bluetooth/BluetoothScreen.java +119 -0
- data/platform/bb/rhodes/src/rhomobile/camera/CameraFilesListener.java +2 -2
- data/platform/iphone/Classes/AppManager/AppManager.m +70 -7
- data/platform/iphone/Classes/Bluetooth/Bluetooth.h +72 -0
- data/platform/iphone/Classes/Bluetooth/Bluetooth.m +414 -0
- data/platform/iphone/Classes/Event/Event.h +12 -0
- data/platform/iphone/Classes/Event/Event.m +300 -0
- data/platform/iphone/Classes/LogOptionsController.h +2 -1
- data/platform/iphone/Classes/LogOptionsController.m +1 -1
- data/platform/iphone/Classes/LogViewController.h +2 -1
- data/platform/iphone/Classes/MapView/MapViewController.h +2 -1
- data/platform/iphone/Classes/RhoViewController.h +16 -0
- data/platform/iphone/Classes/RhoViewController.m +20 -0
- data/platform/iphone/Classes/Rhodes.h +12 -0
- data/platform/iphone/Classes/Rhodes.m +34 -6
- data/platform/iphone/Classes/Signature/SignatureViewController.h +2 -2
- data/platform/iphone/Classes/Signature/SignatureViewController.m +0 -10
- data/platform/iphone/Classes/SimpleMainView.h +2 -2
- data/platform/iphone/Classes/SimpleMainView.m +5 -14
- data/platform/iphone/Classes/SplashViewController.h +2 -2
- data/platform/iphone/Classes/TabbedMainView.h +2 -2
- data/platform/iphone/Classes/TabbedMainView.m +5 -10
- data/platform/iphone/Info.plist +5 -5
- data/platform/iphone/rhorubylib/rhorubylib.xcodeproj/project.pbxproj +39 -0
- data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +47 -4
- data/platform/osx/Rhodes Debugger/NoodleLineNumberView.m +3 -2
- data/platform/shared/common/AutoPointer.h +3 -0
- data/platform/shared/common/RhoConf.cpp +2 -1
- data/platform/shared/common/RhoThread.h +1 -1
- data/platform/shared/common/RhoTime.h +3 -3
- data/platform/shared/common/RhodesApp.cpp +75 -23
- data/platform/shared/common/RhodesApp.h +4 -0
- data/platform/shared/common/RhodesAppBase.h +2 -0
- data/platform/shared/common/ThreadQueue.cpp +23 -18
- data/platform/shared/common/ThreadQueue.h +2 -0
- data/platform/shared/db/res/db/syncdb.schema +39 -39
- data/platform/shared/logging/RhoLogConf.cpp +58 -3
- data/platform/shared/logging/RhoLogConf.h +3 -1
- data/platform/shared/net/CURLNetRequest.cpp +17 -6
- data/platform/shared/net/HttpServer.cpp +125 -25
- data/platform/shared/net/HttpServer.h +4 -3
- data/platform/shared/ruby/ext/bluetooth/bluetooth.i +56 -0
- data/platform/shared/ruby/ext/bluetooth/bluetooth_wrap.c +2563 -0
- data/platform/shared/ruby/ext/calendar/calendar.i +28 -0
- data/platform/shared/ruby/ext/calendar/calendar_wrap.c +2251 -0
- data/platform/shared/ruby/ext/calendar/event.h +41 -0
- data/platform/shared/ruby/ext/calendar/event.i +28 -0
- data/platform/shared/ruby/ext/calendar/event_wrap.c +2151 -0
- data/platform/shared/ruby/ext/rho/rhoruby.c +103 -3
- data/platform/shared/ruby/ext/rho/rhoruby.h +16 -2
- data/platform/shared/ruby/ext/rhoconf/rhoconf.i +12 -0
- data/platform/shared/ruby/ext/rhoconf/rhoconf_wrap.c +101 -0
- data/platform/shared/ruby/ext/system/system.i +14 -0
- data/platform/shared/ruby/ext/system/system_wrap.c +2568 -2208
- data/platform/shared/ruby/main.c +8 -0
- data/platform/shared/rubyext/GeoLocation.cpp +6 -3
- data/platform/shared/rubyext/System.cpp +14 -0
- data/platform/shared/sync/SyncEngine.cpp +9 -1
- data/platform/shared/sync/SyncNotify.cpp +16 -8
- data/platform/shared/sync/SyncNotify.h +1 -0
- data/platform/shared/sync/SyncThread.cpp +7 -12
- data/platform/shared/sync/SyncThread.h +5 -3
- data/platform/wm/build/wm.rake +7 -1
- data/platform/wm/rhodes/Alert.cpp +1 -1
- data/platform/wm/rhodes/MainWindow.cpp +28 -0
- data/platform/wm/rhodes/MainWindow.h +9 -0
- data/platform/wm/rhodes/OutlookApp.cpp +72 -0
- data/platform/wm/rhodes/OutlookApp.h +22 -0
- data/platform/wm/rhodes/Rhodes.cpp +8 -0
- data/platform/wm/rhodes/Rhodes.rc +31 -0
- data/platform/wm/rhodes/bluetooth/Bluetooth.cpp +1274 -0
- data/platform/wm/rhodes/bluetooth/Bluetooth.h +321 -0
- data/platform/wm/rhodes/phonebook/NativeAddressBook.cpp +37 -70
- data/platform/wm/rhodes/phonebook/NativeAddressBook.h +0 -4
- data/platform/wm/rhodes/resource.h +8 -1
- data/platform/wm/rhodes/rho/net/NetRequest.cpp +4 -0
- data/platform/wm/rhodes/rho/net/NetRequestImpl.cpp +6 -4
- data/platform/wm/rhodes/rho/rubyext/calendar.cpp +487 -0
- data/platform/wm/rhodes/rhodes.vcproj +28 -11
- data/platform/wm/rhodes/stdafx.h +1 -0
- data/platform/wm/rubylib/rubylib.vcproj +32 -0
- data/rakefile.rb +8 -1
- data/res/generators/templates/application/Rakefile +1 -1
- data/res/generators/templates/application/app/layout.erb +4 -1
- data/res/generators/templates/application/build.yml +0 -1
- data/res/generators/templates/application/public/css/iphone.css +2 -2
- data/res/generators/templates/application/public/jqtouch/jqtouch-iphone.css +9 -0
- data/res/generators/templates/application/public/jqtouch/jqtouch.css +1 -5
- data/res/generators/templates/application/public/jqtouch/jqtouch.js +3 -2
- data/rhodes.gemspec +1 -1
- data/spec/perfomance_spec/app/Benchmark/benchmark.rb +4 -0
- data/spec/perfomance_spec/app/Benchmark/bulk_results.erb +13 -0
- data/spec/perfomance_spec/app/Benchmark/controller.rb +178 -0
- data/spec/perfomance_spec/app/Benchmark/create_results.erb +13 -0
- data/spec/perfomance_spec/app/Benchmark/customers.erb +35 -0
- data/spec/perfomance_spec/app/Benchmark/index.erb +9 -0
- data/spec/perfomance_spec/app/Benchmark/products.erb +25 -0
- data/spec/perfomance_spec/app/Benchmark/search_results.erb +13 -0
- data/spec/perfomance_spec/app/Customer/customer.rb +6 -0
- data/spec/perfomance_spec/app/Perftest/index.erb +5 -0
- data/spec/perfomance_spec/app/Product/index.erb +25 -0
- data/spec/perfomance_spec/app/Product/product.rb +6 -0
- data/spec/perfomance_spec/app/helpers/application_helper.rb +126 -0
- data/spec/perfomance_spec/app/helpers/browser_helper.rb +18 -0
- data/spec/perfomance_spec/rhoconfig.txt +1 -1
- data/spec/phone_spec/app/Account_s/account_s.rb +5 -2
- data/spec/phone_spec/app/Case/case.rb +1 -0
- data/spec/phone_spec/app/Case_s/case_s.rb +2 -0
- data/spec/phone_spec/app/Data/perftest.json +35 -0
- data/spec/phone_spec/app/Data/testCDATA.xml +11 -0
- data/spec/phone_spec/app/Product/product.rb +1 -1
- data/spec/phone_spec/app/{Spec → spec}/asynchttp_spec.rb +66 -17
- data/spec/phone_spec/app/{Spec → spec}/barcode_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/blobsync_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/bsearch_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/bulksync_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/contacts_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/crypt_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/date_spec.rb +0 -0
- data/spec/phone_spec/app/spec/events_spec.rb +199 -0
- data/spec/phone_spec/app/{Spec → spec}/fixtures/client_info.txt +0 -0
- data/spec/phone_spec/app/{Spec → spec}/fixtures/object_values.txt +0 -0
- data/spec/phone_spec/app/{Spec → spec}/json_spec.rb +11 -2
- data/spec/phone_spec/app/{Spec → spec}/mapview_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/nativebar_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/navbar_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/pagination/fixtures/object_values.txt +0 -0
- data/spec/phone_spec/app/{Spec → spec}/rho_controller_spec.rb +5 -0
- data/spec/phone_spec/app/{Spec → spec}/rho_spec.rb +48 -0
- data/spec/phone_spec/app/{Spec → spec}/rhofile_spec.rb +9 -6
- data/spec/phone_spec/app/{Spec → spec}/rhom_object_spec.rb +188 -9
- data/spec/phone_spec/app/{Spec → spec}/syncengine_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/xml_spec.rb +15 -0
- data/spec/phone_spec/app/{Spec → spec}/xruby_spec.rb +0 -0
- data/spec/phone_spec/app/spec_runner.rb +4 -1
- data/spec/phone_spec/build.yml +2 -1
- metadata +95 -31
- data/platform/bb/rhodes/platform/5.0/com/rho/RhoMainScreen.java +0 -36
- data/platform/bb/rhodes/platform/6.0/com/rho/BrowserAdapter5.java +0 -155
- data/platform/bb/rhodes/platform/6.0/com/rho/RhoMainScreen.java +0 -36
@@ -20,6 +20,8 @@
|
|
20
20
|
*/
|
21
21
|
package com.rhomobile.rhodes.uri;
|
22
22
|
|
23
|
+
import java.util.Map;
|
24
|
+
|
23
25
|
import com.rhomobile.rhodes.Logger;
|
24
26
|
|
25
27
|
import android.content.Context;
|
@@ -38,8 +40,7 @@ public class MailUriHandler implements UriHandler {
|
|
38
40
|
}
|
39
41
|
|
40
42
|
public boolean handle(String url) {
|
41
|
-
|
42
|
-
if (!uri.getScheme().equals("mailto"))
|
43
|
+
if (!MailTo.isMailTo(url))
|
43
44
|
return false;
|
44
45
|
|
45
46
|
Logger.D(TAG, "This is 'mailto' uri, handle it");
|
@@ -52,12 +53,19 @@ public class MailUriHandler implements UriHandler {
|
|
52
53
|
String s = muri.getTo();
|
53
54
|
if (s != null) intent.putExtra(Intent.EXTRA_EMAIL, new String[]{s});
|
54
55
|
|
56
|
+
s = muri.getCc();
|
57
|
+
if (s != null) intent.putExtra(Intent.EXTRA_CC, new String[]{s});
|
58
|
+
|
55
59
|
s = muri.getSubject();
|
56
60
|
if (s != null) intent.putExtra(Intent.EXTRA_SUBJECT, s);
|
57
61
|
|
58
62
|
s = muri.getBody();
|
59
63
|
if (s != null) intent.putExtra(Intent.EXTRA_TEXT, s);
|
60
64
|
|
65
|
+
Map<String,String> headers = muri.getHeaders();
|
66
|
+
s = headers.get("bcc");
|
67
|
+
if (s != null) intent.putExtra(Intent.EXTRA_BCC, new String[]{s});
|
68
|
+
|
61
69
|
ctx.startActivity(Intent.createChooser(intent, "Send e-mail..."));
|
62
70
|
return true;
|
63
71
|
}
|
@@ -1,50 +1,59 @@
|
|
1
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/nativeview/RhoNativeViewManager.java
|
2
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/AndroidR.java
|
3
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/HttpLog.java
|
4
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/Logger.java
|
5
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/NativeBar.java
|
6
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/NavBar.java
|
7
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/NetworkConnectivityListener.java
|
8
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/NetworkStateTracker.java
|
9
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/RhoActivity.java
|
10
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/RhoConf.java
|
11
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/RhoLogConf.java
|
12
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/RhoMenu.java
|
13
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/Rhodes.java
|
14
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java
|
15
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/RingtoneManager.java
|
16
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/SplashScreen.java
|
17
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/Utils.java
|
18
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/WebView.java
|
19
1
|
platform/android/Rhodes/src/com/rhomobile/rhodes/alert/Alert.java
|
2
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/AndroidR.java
|
3
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/IRhoBluetoothManager.java
|
4
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothDeviceListActivity.java
|
5
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManager.java
|
6
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManagerNew.java
|
7
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManagerOld.java
|
8
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothSession.java
|
9
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/UUIDHelper.java
|
20
10
|
platform/android/Rhodes/src/com/rhomobile/rhodes/camera/Camera.java
|
21
11
|
platform/android/Rhodes/src/com/rhomobile/rhodes/camera/FileList.java
|
22
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCapture.java
|
23
12
|
platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCaptureCallback.java
|
13
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCapture.java
|
24
14
|
platform/android/Rhodes/src/com/rhomobile/rhodes/datetime/DateTimePicker.java
|
25
15
|
platform/android/Rhodes/src/com/rhomobile/rhodes/datetime/DateTimePickerScreen.java
|
16
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/event/Event.java
|
17
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/event/EventStore.java
|
26
18
|
platform/android/Rhodes/src/com/rhomobile/rhodes/file/RhoFileApi.java
|
27
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocation.java
|
28
19
|
platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocationImpl.java
|
20
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocation.java
|
21
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/HttpLog.java
|
22
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/Logger.java
|
29
23
|
platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/MainView.java
|
30
24
|
platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SimpleMainView.java
|
31
25
|
platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/TabbedMainView.java
|
32
26
|
platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/Annotation.java
|
33
27
|
platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/AnnotationsOverlay.java
|
34
28
|
platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/MapView.java
|
35
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/
|
29
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/NativeBar.java
|
30
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/nativeview/RhoNativeViewManager.java
|
31
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/NavBar.java
|
32
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/NetworkConnectivityListener.java
|
33
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/NetworkStateTracker.java
|
36
34
|
platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/ContactAccessor.java
|
37
35
|
platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/ContactAccessorNew.java
|
38
36
|
platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/ContactAccessorOld.java
|
39
37
|
platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/ContactField.java
|
38
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/Contact.java
|
40
39
|
platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/Phonebook.java
|
40
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/PushReceiver.java
|
41
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/PushService.java
|
42
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/RhoActivity.java
|
43
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/RhoConf.java
|
44
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/Rhodes.java
|
45
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java
|
46
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/RhoLogConf.java
|
47
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/RhoMenu.java
|
48
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/RingtoneManager.java
|
41
49
|
platform/android/Rhodes/src/com/rhomobile/rhodes/signature/ImageCapture.java
|
42
50
|
platform/android/Rhodes/src/com/rhomobile/rhodes/signature/Signature.java
|
43
51
|
platform/android/Rhodes/src/com/rhomobile/rhodes/signature/SignatureView.java
|
44
52
|
platform/android/Rhodes/src/com/rhomobile/rhodes/socket/RhoSockAddr.java
|
45
|
-
platform/android/Rhodes/src/com/rhomobile/rhodes/socket/RhoSocket.java
|
46
53
|
platform/android/Rhodes/src/com/rhomobile/rhodes/socket/RhoSocketImpl.java
|
54
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/socket/RhoSocket.java
|
47
55
|
platform/android/Rhodes/src/com/rhomobile/rhodes/socket/SSLImpl.java
|
56
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/SplashScreen.java
|
48
57
|
platform/android/Rhodes/src/com/rhomobile/rhodes/ui/AboutDialog.java
|
49
58
|
platform/android/Rhodes/src/com/rhomobile/rhodes/ui/LogOptionsDialog.java
|
50
59
|
platform/android/Rhodes/src/com/rhomobile/rhodes/ui/LogViewDialog.java
|
@@ -54,8 +63,10 @@ platform/android/Rhodes/src/com/rhomobile/rhodes/uri/TelUriHandler.java
|
|
54
63
|
platform/android/Rhodes/src/com/rhomobile/rhodes/uri/UriHandler.java
|
55
64
|
platform/android/Rhodes/src/com/rhomobile/rhodes/uri/VideoUriHandler.java
|
56
65
|
platform/android/Rhodes/src/com/rhomobile/rhodes/util/PerformOnUiThread.java
|
66
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/Utils.java
|
57
67
|
platform/android/Rhodes/src/com/rhomobile/rhodes/webview/ChromeClientNew.java
|
58
68
|
platform/android/Rhodes/src/com/rhomobile/rhodes/webview/ChromeClientOld.java
|
69
|
+
platform/android/Rhodes/src/com/rhomobile/rhodes/WebView.java
|
59
70
|
platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebSettings.java
|
60
71
|
platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebSettingsNew.java
|
61
72
|
platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebSettingsOld.java
|
@@ -20,6 +20,8 @@ def get_api_level(version)
|
|
20
20
|
ANDROID_MARKET_VERSION_TO_API_LEVEL[version]
|
21
21
|
end
|
22
22
|
|
23
|
+
JAVA_PACKAGE_NAME = 'com.rhomobile.rhodes'
|
24
|
+
|
23
25
|
# Here is place were android platform should be specified.
|
24
26
|
# For complete list of android API levels and its mapping to
|
25
27
|
# market names (such as "Android-1.5" etc) see output of
|
@@ -34,9 +36,55 @@ ANDROID_PERMISSIONS = {
|
|
34
36
|
'phone' => ['CALL_PHONE', 'READ_PHONE_STATE'],
|
35
37
|
'pim' => ['READ_CONTACTS', 'WRITE_CONTACTS', 'GET_ACCOUNTS'],
|
36
38
|
'record_audio' => 'RECORD_AUDIO',
|
37
|
-
'vibrate' => 'VIBRATE'
|
39
|
+
'vibrate' => 'VIBRATE',
|
40
|
+
'bluetooth' => ['BLUETOOTH_ADMIN', 'BLUETOOTH'],
|
41
|
+
'calendar' => ['READ_CALENDAR', 'WRITE_CALENDAR'],
|
42
|
+
'push' => proc do |manifest| add_push(manifest) end
|
38
43
|
}
|
39
44
|
|
45
|
+
def add_push(manifest)
|
46
|
+
element = REXML::Element.new('permission')
|
47
|
+
element.add_attribute('android:name', "#{$app_package_name}.permission.C2D_MESSAGE")
|
48
|
+
element.add_attribute('android:protectionLevel', 'signature')
|
49
|
+
manifest.add element
|
50
|
+
|
51
|
+
element = REXML::Element.new('uses-permission')
|
52
|
+
element.add_attribute('android:name', "#{$app_package_name}.permission.C2D_MESSAGE")
|
53
|
+
manifest.add element
|
54
|
+
|
55
|
+
element = REXML::Element.new('uses-permission')
|
56
|
+
element.add_attribute('android:name', "com.google.android.c2dm.permission.RECEIVE")
|
57
|
+
manifest.add element
|
58
|
+
|
59
|
+
receiver = REXML::Element.new('receiver')
|
60
|
+
receiver.add_attribute('android:name', "#{JAVA_PACKAGE_NAME}.PushReceiver")
|
61
|
+
receiver.add_attribute('android:permission', "com.google.android.c2dm.permission.SEND")
|
62
|
+
|
63
|
+
action = REXML::Element.new('action')
|
64
|
+
action.add_attribute('android:name', "com.google.android.c2dm.intent.RECEIVE")
|
65
|
+
category = REXML::Element.new('category')
|
66
|
+
category.add_attribute('android:name', $app_package_name)
|
67
|
+
|
68
|
+
ie = REXML::Element.new('intent-filter')
|
69
|
+
ie.add_element(action)
|
70
|
+
ie.add_element(category)
|
71
|
+
receiver.add_element(ie)
|
72
|
+
|
73
|
+
action = REXML::Element.new('action')
|
74
|
+
action.add_attribute('android:name', "com.google.android.c2dm.intent.REGISTRATION")
|
75
|
+
category = REXML::Element.new('category')
|
76
|
+
category.add_attribute('android:name', $app_package_name)
|
77
|
+
|
78
|
+
ie = REXML::Element.new('intent-filter')
|
79
|
+
ie.add_element(action)
|
80
|
+
ie.add_element(category)
|
81
|
+
receiver.add_element(ie)
|
82
|
+
|
83
|
+
manifest.elements.each('application') do |app|
|
84
|
+
app.add receiver
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
40
88
|
def set_app_name_android(newname)
|
41
89
|
puts "set_app_name"
|
42
90
|
$stdout.flush
|
@@ -80,10 +128,15 @@ def set_app_name_android(newname)
|
|
80
128
|
|
81
129
|
doc.elements.delete "manifest/application/uses-library[@android:name='com.google.android.maps']" unless $use_geomapping
|
82
130
|
|
83
|
-
|
131
|
+
caps_proc = []
|
132
|
+
caps = ['INTERNET', 'PERSISTENT_ACTIVITY', 'WAKE_LOCK']
|
84
133
|
$app_config["capabilities"].each do |cap|
|
85
134
|
cap = ANDROID_PERMISSIONS[cap]
|
86
135
|
next if cap.nil?
|
136
|
+
if cap.is_a? Proc
|
137
|
+
caps_proc << cap
|
138
|
+
next
|
139
|
+
end
|
87
140
|
cap = [cap] if cap.is_a? String
|
88
141
|
cap = [] unless cap.is_a? Array
|
89
142
|
caps += cap
|
@@ -97,6 +150,14 @@ def set_app_name_android(newname)
|
|
97
150
|
element.add_attribute('android:minSdkVersion', ANDROID_API_LEVEL.to_s)
|
98
151
|
manifest.add element
|
99
152
|
|
153
|
+
# Clear C2DM stuff
|
154
|
+
doc.elements.delete "manifest/application/receiver[@android:name='com.rhomobile.rhodes.PushReceiver']"
|
155
|
+
manifest.elements.each('permission') do |e|
|
156
|
+
name = e.attribute('name', 'android')
|
157
|
+
next if name.nil?
|
158
|
+
manifest.delete(e) if name.to_s =~ /\.C2D_MESSAGE$/
|
159
|
+
end
|
160
|
+
|
100
161
|
manifest.elements.each('uses-permission') { |e| manifest.delete e }
|
101
162
|
caps.sort.each do |cap|
|
102
163
|
element = REXML::Element.new('uses-permission')
|
@@ -104,6 +165,10 @@ def set_app_name_android(newname)
|
|
104
165
|
manifest.add element
|
105
166
|
end
|
106
167
|
|
168
|
+
caps_proc.each do |p|
|
169
|
+
p.call manifest
|
170
|
+
end
|
171
|
+
|
107
172
|
File.open($appmanifest, "w") { |f| doc.write f, 2 }
|
108
173
|
|
109
174
|
buf = File.new($rho_android_r,"r").read.gsub(/^\s*import com\.rhomobile\..*\.R;\s*$/,"\nimport #{$app_package_name}.R;\n")
|
@@ -158,6 +223,16 @@ namespace "config" do
|
|
158
223
|
exit 1
|
159
224
|
end
|
160
225
|
|
226
|
+
errfmt = "WARNING!!! Path to Android %s contain spaces! It will not work because of the Google toolchain restrictions. Move it to another location and reconfigure rhodes."
|
227
|
+
if $androidsdkpath =~ /\s/
|
228
|
+
puts(errfmt % "SDK")
|
229
|
+
exit 1
|
230
|
+
end
|
231
|
+
if $androidndkpath =~ /\s/
|
232
|
+
puts(errfmt % "NDK")
|
233
|
+
exit 1
|
234
|
+
end
|
235
|
+
|
161
236
|
$java = $config["env"]["paths"]["java"]
|
162
237
|
$androidpath = Jake.get_absolute $config["build"]["androidpath"]
|
163
238
|
$bindir = File.join($app_path, "bin")
|
@@ -187,6 +262,7 @@ namespace "config" do
|
|
187
262
|
$app_rjava_dir = File.join $tmpdir
|
188
263
|
$app_native_libs_java = File.join $tmpdir, "NativeLibraries.java"
|
189
264
|
$app_capabilities_java = File.join $tmpdir, "Capabilities.java"
|
265
|
+
$app_push_java = File.join $tmpdir, "Push.java"
|
190
266
|
|
191
267
|
if RUBY_PLATFORM =~ /(win|w)32$/
|
192
268
|
$emulator = #"cmd /c " +
|
@@ -194,7 +270,6 @@ namespace "config" do
|
|
194
270
|
$bat_ext = ".bat"
|
195
271
|
$exe_ext = ".exe"
|
196
272
|
$path_separator = ";"
|
197
|
-
$rubypath = "res/build-tools/RhoRuby.exe"
|
198
273
|
|
199
274
|
# Add PATH to cygwin1.dll
|
200
275
|
ENV['CYGWIN'] = 'nodosfilewarning'
|
@@ -209,11 +284,6 @@ namespace "config" do
|
|
209
284
|
$exe_ext = ""
|
210
285
|
$path_separator = ":"
|
211
286
|
# TODO: add ruby executable for Linux
|
212
|
-
if RUBY_PLATFORM =~ /darwin/
|
213
|
-
$rubypath = "res/build-tools/RubyMac"
|
214
|
-
else
|
215
|
-
$rubypath = "res/build-tools/rubylinux"
|
216
|
-
end
|
217
287
|
end
|
218
288
|
|
219
289
|
puts "+++ Looking for platform..." if USE_TRACES
|
@@ -271,7 +341,7 @@ namespace "config" do
|
|
271
341
|
$keystore = nil
|
272
342
|
$keystore = $app_config["android"]["production"]["certificate"] if !$app_config["android"].nil? and !$app_config["android"]["production"].nil?
|
273
343
|
$keystore = $config["android"]["production"]["certificate"] if $keystore.nil? and !$config["android"].nil? and !$config["android"]["production"].nil?
|
274
|
-
$keystore = File.
|
344
|
+
$keystore = File.expand_path(File.join(ENV['HOME'], ".rhomobile", "keystore")) if $keystore.nil?
|
275
345
|
|
276
346
|
$storepass = nil
|
277
347
|
$storepass = $app_config["android"]["production"]["password"] if !$app_config["android"].nil? and !$app_config["android"]["production"].nil?
|
@@ -388,6 +458,11 @@ namespace "config" do
|
|
388
458
|
end
|
389
459
|
$app_config["capabilities"].map! { |cap| cap.is_a?(String) ? cap : nil }.delete_if { |cap| cap.nil? }
|
390
460
|
|
461
|
+
$push_sender = nil
|
462
|
+
$push_sender = $config["android"]["push"]["sender"] if !$config["android"].nil? and !$config["android"]["push"].nil?
|
463
|
+
$push_sender = $app_config["android"]["push"]["sender"] if !$app_config["android"].nil? and !$app_config["android"]["push"].nil?
|
464
|
+
$push_sender = "support@rhomobile.com" if $push_sender.nil?
|
465
|
+
|
391
466
|
mkdir_p $bindir if not File.exists? $bindir
|
392
467
|
mkdir_p $rhobindir if not File.exists? $rhobindir
|
393
468
|
mkdir_p $targetdir if not File.exists? $targetdir
|
@@ -661,9 +736,9 @@ namespace "build" do
|
|
661
736
|
|
662
737
|
gapi_already_enabled = false
|
663
738
|
caps_already_enabled = {}
|
664
|
-
ANDROID_PERMISSIONS.keys.each do |k|
|
665
|
-
|
666
|
-
end
|
739
|
+
#ANDROID_PERMISSIONS.keys.each do |k|
|
740
|
+
# caps_already_enabled[k] = false
|
741
|
+
#end
|
667
742
|
if File.file? genconfig_h
|
668
743
|
File.open(genconfig_h, 'r') do |f|
|
669
744
|
while line = f.gets
|
@@ -671,8 +746,16 @@ namespace "build" do
|
|
671
746
|
gapi_already_enabled = true
|
672
747
|
else
|
673
748
|
ANDROID_PERMISSIONS.keys.each do |k|
|
674
|
-
|
675
|
-
|
749
|
+
if line =~ /^\s*#\s*define\s+RHO_CAP_#{k.upcase}_ENABLED\s+(.*)\s*$/
|
750
|
+
value = $1.strip
|
751
|
+
if value == 'true'
|
752
|
+
caps_already_enabled[k] = true
|
753
|
+
elsif value == 'false'
|
754
|
+
caps_already_enabled[k] = false
|
755
|
+
else
|
756
|
+
raise "Unknown value for the RHO_CAP_#{k.upcase}_ENABLED: #{value}"
|
757
|
+
end
|
758
|
+
end
|
676
759
|
end
|
677
760
|
end
|
678
761
|
end
|
@@ -686,7 +769,7 @@ namespace "build" do
|
|
686
769
|
caps_enabled = {}
|
687
770
|
ANDROID_PERMISSIONS.keys.each do |k|
|
688
771
|
caps_enabled[k] = $app_config["capabilities"].index(k) != nil
|
689
|
-
regenerate = true if caps_enabled[k] != caps_already_enabled[k]
|
772
|
+
regenerate = true if caps_already_enabled[k].nil? or caps_enabled[k] != caps_already_enabled[k]
|
690
773
|
end
|
691
774
|
|
692
775
|
if regenerate
|
@@ -735,18 +818,28 @@ namespace "build" do
|
|
735
818
|
|
736
819
|
# Generate Capabilities.java
|
737
820
|
File.open($app_capabilities_java, "w") do |f|
|
738
|
-
f.puts "package
|
821
|
+
f.puts "package #{JAVA_PACKAGE_NAME};"
|
739
822
|
f.puts "public class Capabilities {"
|
740
823
|
ANDROID_PERMISSIONS.keys.sort.each do |k|
|
741
824
|
f.puts " public static boolean #{k.upcase}_ENABLED = true;"
|
742
825
|
end
|
743
826
|
f.puts "}"
|
744
827
|
end
|
828
|
+
|
829
|
+
# Generate Push.java
|
830
|
+
puts "app_push_java: #{$app_push_java.inspect}"
|
831
|
+
File.open($app_push_java, "w") do |f|
|
832
|
+
f.puts "package #{JAVA_PACKAGE_NAME};"
|
833
|
+
f.puts "public class Push {"
|
834
|
+
f.puts " public static final String SENDER = \"#{$push_sender}\";"
|
835
|
+
f.puts "};"
|
836
|
+
end
|
837
|
+
|
745
838
|
end
|
746
839
|
|
747
840
|
task :gen_java_ext => "config:android" do
|
748
841
|
File.open($app_native_libs_java, "w") do |f|
|
749
|
-
f.puts "package
|
842
|
+
f.puts "package #{JAVA_PACKAGE_NAME};"
|
750
843
|
f.puts "public class NativeLibraries {"
|
751
844
|
f.puts " public static void load() {"
|
752
845
|
f.puts " // Load native .so libraries"
|
@@ -864,11 +957,12 @@ namespace "build" do
|
|
864
957
|
lines << $app_android_r
|
865
958
|
lines << $app_native_libs_java
|
866
959
|
lines << $app_capabilities_java
|
960
|
+
lines << $app_push_java
|
867
961
|
if File.exists? File.join($extensionsdir, "ext_build.files")
|
868
962
|
puts 'ext_build.files found ! Addditional files for compilation :'
|
869
963
|
File.open(File.join($extensionsdir, "ext_build.files")) do |f|
|
870
964
|
while line = f.gets
|
871
|
-
|
965
|
+
puts 'java file : ' + line
|
872
966
|
lines << line
|
873
967
|
end
|
874
968
|
end
|
@@ -906,6 +1000,13 @@ namespace "build" do
|
|
906
1000
|
end
|
907
1001
|
|
908
1002
|
files = []
|
1003
|
+
Dir.glob(File.join($extensionsdir, "*.jar")).each do |f|
|
1004
|
+
puts Jake.run($jarbin, ["xf", f], File.join($tmpdir, "Rhodes"))
|
1005
|
+
unless $?.success?
|
1006
|
+
puts "Error running jar (xf)"
|
1007
|
+
exit 1
|
1008
|
+
end
|
1009
|
+
end
|
909
1010
|
Dir.glob(File.join($tmpdir, "Rhodes", "*")).each do |f|
|
910
1011
|
relpath = Pathname.new(f).relative_path_from(Pathname.new(File.join($tmpdir, "Rhodes"))).to_s
|
911
1012
|
files << relpath
|
@@ -1159,7 +1260,7 @@ def run_application (target_flag)
|
|
1159
1260
|
args << "-a"
|
1160
1261
|
args << "android.intent.action.MAIN"
|
1161
1262
|
args << "-n"
|
1162
|
-
args << $app_package_name + "
|
1263
|
+
args << $app_package_name + "/#{JAVA_PACKAGE_NAME}.Rhodes"
|
1163
1264
|
Jake.run($adb, args)
|
1164
1265
|
end
|
1165
1266
|
|
@@ -1181,6 +1282,21 @@ namespace "run" do
|
|
1181
1282
|
log_name = $app_path + '/RhoLog.txt'
|
1182
1283
|
File.delete(log_name) if File.exist?(log_name)
|
1183
1284
|
|
1285
|
+
# Failsafe to prevent eternal hangs
|
1286
|
+
Thread.new {
|
1287
|
+
sleep 1000
|
1288
|
+
|
1289
|
+
if RUBY_PLATFORM =~ /darwin/
|
1290
|
+
# OS X:
|
1291
|
+
`killall -9 adb`
|
1292
|
+
`killall -9 emulator`
|
1293
|
+
else
|
1294
|
+
# Windows
|
1295
|
+
`taskkill /F /IM adb.exe`
|
1296
|
+
`taskkill /F /IM emulator.exe`
|
1297
|
+
end
|
1298
|
+
}
|
1299
|
+
|
1184
1300
|
load_app_and_run
|
1185
1301
|
|
1186
1302
|
Jake.before_run_spec
|
@@ -1212,19 +1328,31 @@ namespace "run" do
|
|
1212
1328
|
sleep(5) unless end_spec
|
1213
1329
|
end
|
1214
1330
|
|
1215
|
-
#TODO: stop app
|
1216
1331
|
Jake.process_spec_results(start)
|
1217
1332
|
|
1333
|
+
# stop app
|
1334
|
+
if RUBY_PLATFORM =~ /darwin/
|
1335
|
+
# OS X:
|
1336
|
+
`killall -9 adb`
|
1337
|
+
`killall -9 emulator`
|
1338
|
+
else
|
1339
|
+
# Windows
|
1340
|
+
`taskkill /F /IM adb.exe`
|
1341
|
+
`taskkill /F /IM emulator.exe`
|
1342
|
+
end
|
1343
|
+
|
1218
1344
|
$stdout.flush
|
1219
1345
|
|
1220
1346
|
end
|
1221
1347
|
|
1222
1348
|
task :phone_spec do
|
1223
|
-
Jake.run_spec_app('android','phone_spec')
|
1349
|
+
exit 1 if Jake.run_spec_app('android','phone_spec')
|
1350
|
+
exit 0
|
1224
1351
|
end
|
1225
1352
|
|
1226
1353
|
task :framework_spec do
|
1227
|
-
Jake.run_spec_app('android','framework_spec')
|
1354
|
+
exit 1 if Jake.run_spec_app('android','framework_spec')
|
1355
|
+
exit 0
|
1228
1356
|
end
|
1229
1357
|
|
1230
1358
|
task :emulator => "device:android:debug" do
|
@@ -1234,7 +1362,13 @@ namespace "run" do
|
|
1234
1362
|
|
1235
1363
|
def run_emulator
|
1236
1364
|
apkfile = Jake.get_absolute $targetdir + "/" + $appname + "-debug.apk"
|
1237
|
-
|
1365
|
+
|
1366
|
+
Jake.run($adb, ['kill-server'])
|
1367
|
+
#Jake.run($adb, ['start-server'])
|
1368
|
+
#adb_start_server = $adb + ' start-server'
|
1369
|
+
Thread.new { Jake.run($adb, ['start-server']) }
|
1370
|
+
puts 'Sleep for 5 sec. waiting for "adb start-server"'
|
1371
|
+
sleep 5
|
1238
1372
|
|
1239
1373
|
createavd = "\"#{$androidbin}\" create avd --name #{$avdname} --target #{$avdtarget} --sdcard 32M --skin HVGA"
|
1240
1374
|
system(createavd) unless File.directory?( File.join(ENV['HOME'], ".android", "avd", "#{$avdname}.avd" ) )
|
@@ -1249,12 +1383,49 @@ namespace "run" do
|
|
1249
1383
|
end
|
1250
1384
|
|
1251
1385
|
running = is_emulator_running
|
1252
|
-
Thread.new { system("\"#{$emulator}\" -avd #{$avdname}") } unless running
|
1253
1386
|
|
1254
|
-
|
1255
|
-
|
1387
|
+
if !running
|
1388
|
+
# Start the emulator, check on it every 5 seconds until it's running
|
1389
|
+
Thread.new { system("\"#{$emulator}\" -avd #{$avdname}") }
|
1390
|
+
puts "Waiting up to 180 seconds for emulator..."
|
1391
|
+
startedWaiting = Time.now
|
1392
|
+
adbRestarts = 1
|
1393
|
+
while (Time.now - startedWaiting < 180 )
|
1394
|
+
sleep 5
|
1395
|
+
now = Time.now
|
1396
|
+
emulatorState = ""
|
1397
|
+
Jake.run2($adb,["-e", "get-state"],{:system => false, :hideerrors => :false}) do |line|
|
1398
|
+
puts "RET: " + line
|
1399
|
+
emulatorState += line
|
1400
|
+
end
|
1401
|
+
if emulatorState =~ /unknown/
|
1402
|
+
printf("%.2fs: ",(now - startedWaiting))
|
1403
|
+
if (now - startedWaiting) > (60 * adbRestarts)
|
1404
|
+
# Restart the adb server every 60 seconds to prevent eternal waiting
|
1405
|
+
puts "Appears hung, restarting adb server"
|
1406
|
+
Jake.run($adb, ['kill-server'])
|
1407
|
+
Thread.new { Jake.run($adb, ['start-server']) }
|
1408
|
+
adbRestarts += 1
|
1409
|
+
else
|
1410
|
+
puts "Still waiting..."
|
1411
|
+
end
|
1412
|
+
else
|
1413
|
+
puts "Success"
|
1414
|
+
puts "Device is ready after " + (Time.now - startedWaiting).to_s + " seconds"
|
1415
|
+
break
|
1416
|
+
end
|
1417
|
+
end
|
1418
|
+
|
1419
|
+
if !is_emulator_running
|
1420
|
+
puts "Emulator still isn't up and running, giving up"
|
1421
|
+
exit 1
|
1422
|
+
end
|
1423
|
+
|
1424
|
+
else
|
1425
|
+
puts "Emulator is up and running"
|
1426
|
+
end
|
1427
|
+
|
1256
1428
|
$stdout.flush
|
1257
|
-
puts `"#{$adb}" -e wait-for-device`
|
1258
1429
|
end
|
1259
1430
|
|
1260
1431
|
def load_app_and_run
|