Meteor 1.5 upgrade: Android app broken due to Crosswalk errors

Since I upgraded my Meteor 1.2 app to 1.5, I can’t get the Android version running anymore. There seem to be quite some problems related to Crosswalk. If I start the app, I get the following error messages in the console:

I20170717-11:11:22.042(2)? I/CordovaLog( 3789): Changing log level to DEBUG(3)
I20170717-11:11:22.093(2)? I/chromium( 3789): [INFO:library_loader_hooks.cc(143)] Chromium logging enabled: level = 0, default verbosity = 0
I20170717-11:11:22.094(2)? E/chromium( 3789): [ERROR:xwalk_platform_notification_service.cc(143)] Not implemented reached in virtual bool xwalk::XWalkPlatformNotificationService::GetDisplayedPersistentNotifications(content::BrowserContext*, std::__1::set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >*)
I20170717-11:11:22.094(2)? E/chromium( 3789): [ERROR:xwalk_browser_context.cc(87)] Failed to read preference, error num: 0
I20170717-11:11:22.094(2)? W/chromium( 3789): [WARNING:xwalk_external_extension.cc(58)] Error loading extension '/data/app/io.guzz.mobileapp-1/lib/arm/libxwalkcore.so': couldn't get XW_Initialize function.
I20170717-11:11:22.094(2)? W/chromium( 3789): [WARNING:xwalk_extension_server.cc(407)] Failed to initialize extension: /data/app/io.guzz.mobileapp-1/lib/arm/libxwalkcore.so
I20170717-11:11:22.113(2)? W/chromium( 3789): [WARNING:xwalk_external_extension.cc(58)] Error loading extension '/data/app/io.guzz.mobileapp-1/lib/arm/libxwalkdummy.so': couldn't get XW_Initialize function.
I20170717-11:11:22.114(2)? W/chromium( 3789): [WARNING:xwalk_extension_server.cc(407)] Failed to initialize extension: /data/app/io.guzz.mobileapp-1/lib/arm/libxwalkdummy.so
I20170717-11:11:22.114(2)? I/chromium( 3789): [INFO:xwalk_extension_renderer_controller.cc(42)] EXTENSION PROCESS DISABLED.
I20170717-11:11:22.114(2)? I/MeteorWebApp( 3789): Serving asset bundle with version: 4b969cbefac69da806589143e27267333d3cb677
I20170717-11:11:22.659(2)? E/chromium( 3789): [ERROR:layer_tree_host_impl.cc(2233)] Forcing zero-copy tile initialization as worker context is missing
I20170717-11:11:24.091(2) (android:http://localhost:12328/packages/modules.js:624) 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead.
I20170717-11:11:24.092(2) (android:http://localhost:12328/packages/modules.js:624) 'webkitIndexedDB' is deprecated. Please use 'indexedDB' instead.
I20170717-11:11:27.684(2) (android:http://localhost:12328/cordova.js:1223) deviceready has not fired after 5 seconds.
I20170717-11:11:27.684(2) (android:http://localhost:12328/cordova.js:1216) Channel not fired: onDOMContentLoaded
I20170717-11:11:34.442(2) (android:http://localhost:12328/packages/concats_app-main.js:175) %cguzz: Using Guzz as WebRTC backend provider
I20170717-11:11:36.811(2) (android:http://localhost:12328/packages/concats_app-main.js:175) %cguzz: Running as mobile app (Android)
I20170717-11:11:37.365(2)? E/chromium( 3789): [ERROR:web_contents_delegate.cc(197)] WebContentsDelegate::CheckMediaAccessPermission: Not supported.
I20170717-11:11:38.337(2) (android:http://localhost:12328/cordova.js:312) Error in Success callbackId: PushNotification452558307 : ReferenceError: device is not defined
I20170717-11:11:38.342(2) (android:http://localhost:12328/cordova.js:314) Uncaught ReferenceError: device is not defined
I20170717-11:11:38.734(2)? E/chromium( 3789): [ERROR:web_contents_delegate.cc(197)] WebContentsDelegate::CheckMediaAccessPermission: Not supported.
I20170717-11:11:38.755(2)? E/chromium( 3789): [ERROR:web_contents_delegate.cc(197)] WebContentsDelegate::CheckMediaAccessPermission: Not supported.
I20170717-11:11:40.452(2)? E/chromium( 3789): [ERROR:xwalk_autofill_client.cc(121)] Not implemented reached in virtual void xwalk::XWalkAutofillClient::OnFirstUserGestureObserved()
I20170717-11:11:40.529(2)? E/chromium( 3789): [ERROR:xwalk_autofill_client.cc(121)] Not implemented reached in virtual void xwalk::XWalkAutofillClient::OnFirstUserGestureObserved()
I20170717-11:11:41.380(2)? E/chromium( 3789): [ERROR:xwalk_autofill_client.cc(121)] Not implemented reached in virtual void xwalk::XWalkAutofillClient::OnFirstUserGestureObserved()
I20170717-11:11:42.173(2)? E/chromium( 3789): [ERROR:xwalk_autofill_client.cc(121)] Not implemented reached in virtual void xwalk::XWalkAutofillClient::OnFirstUserGestureObserved()
I20170717-11:11:42.873(2)? E/chromium( 3789): [ERROR:xwalk_autofill_client.cc(121)] Not implemented reached in virtual void xwalk::XWalkAutofillClient::OnFirstUserGestureObserved()
I20170717-11:11:43.140(2)? E/chromium( 3789): [ERROR:xwalk_autofill_client.cc(121)] Not implemented reached in virtual void xwalk::XWalkAutofillClient::OnFirstUserGestureObserved()
I20170717-11:11:45.572(2)? E/chromium( 3789): [ERROR:xwalk_autofill_client.cc(121)] Not implemented reached in virtual void xwalk::XWalkAutofillClient::OnFirstUserGestureObserved()
I20170717-11:11:45.812(2)? E/chromium( 3789): [ERROR:xwalk_autofill_client.cc(121)] Not implemented reached in virtual void xwalk::XWalkAutofillClient::OnFirstUserGestureObserved()
I20170717-11:11:47.443(2)? E/chromium( 3789): [ERROR:xwalk_autofill_client.cc(121)] Not implemented reached in virtual void xwalk::XWalkAutofillClient::OnFirstUserGestureObserved()
I20170717-11:11:51.112(2)? E/chromium( 3789): [ERROR:xwalk_autofill_client.cc(121)] Not implemented reached in virtual void xwalk::XWalkAutofillClient::OnFirstUserGestureObserved()
I20170717-11:11:51.137(2)? E/chromium( 3789): [ERROR:PlatformKeyboardEvent.cpp(84)] Not implemented reached in static bool blink::PlatformKeyboardEvent::currentCapsLockState()
I20170717-11:11:55.186(2)? E/chromium( 3789): [ERROR:xwalk_autofill_client.cc(121)] Not implemented reached in virtual void xwalk::XWalkAutofillClient::OnFirstUserGestureObserved()

The last couple of messages appear every time I touch the app or try to type text using the virtual keyboard. The app won’t connect to the server either, login is not possible anymore.

Is Crosswalk still supported in Meteor?

Bump.

Is anybody else using Crosswalk in a Meteor 1.5 app?

Unfortunately, I am heavily relying on its functionality, since it is the only way to enable WebRTC reliably in an Android app, especially on older devices.

I know that Crosswalk is not developed any further. But I would expect that at least the most recent version should work with the Cordova version Meteor is shipping.

I also noticed that for every Meteor version after 1.3, the Crosswalk cordova dependency in the crosswalk package has been adjusted, but this wasn’t mentioned in the upgrade guide. Was it assumed that these newer versions would be backwards-compatible? I am especially wondering since Crosswalk has been uplifted to a new major version without any notice.

I tried to manually downgrade Crosswalk to the version that had been shipped with Meteor 1.3 (the last version where an upgrade to the mobile infrastructure was mentioned), but this caused the build to fail with an error message Note: Some input files use or override a deprecated API. How can this be if the last time the Cordova environment was touched was with Meteor 1.3?!

I’m facing the same error. Did you find a solution?

No, not yet.

I solved my biggest problem now, which was related to WebRTC. This was independent of Crosswalk, though. Reason was that Android M requires to set permissions at runtime, if the app sets an SDK version of 23+. This wasn’t mentioned in the Meteor upgrade guide.

Another problem I could solve was that the force-ssl package broke my Android app in development, since it forced Meteor to access the local server via https. After I removed the package, the app could connect to the server again.

However, although my biggest show-stoppers are solved now, I’m still getting the errors mentioned above. The app seems to work fine despite of those errors, but I’m still wondering what happens here. If I remove Crosswalk, the errors disappear, so they are clearly related to Crosswalk.

the following setup works for me for Meteor 1.4.4.2:

cordova-plugins:

cordova-plugin-crosswalk-webview@2.2.0
cordova-android-support-gradle-release@0.0.2

mobile-config.js:

App.setPreference('android-minSdkVersion' , 19);
1 Like

Just a quick question: does Crosswalk still offer performance benefits? Im okay with a bigger .apk if it makes the app more smooth. Currently the UI responds pretty slow.

Thanks for this hint. I always thought that the min SDK version for Meteor 1.3+ was 23?

Yes, at least for WebRTC, Crosswalk works way faster on my HTC One device, although it is already on Android L where you could expect good performance by the standard Chrome-based web-view. But it is way slower. That’s one reason why I would like to stick to Crosswalk as long as possible. I’m also having problems switching the camera on a non-Crosswalk build, if the app runs on an Android M device (Nexus 7).

1 Like

Yup its much faster even on an OPO2 running android 6. Crosswalk is awesome.

The sdk tools version is 23. Using sdk version 23 will require android version > 6.0 which excludes a lot of users: https://de.statista.com/statistik/daten/studie/180113/umfrage/anteil-der-verschiedenen-android-versionen-auf-geraeten-mit-android-os/
We used min sdk version 16 before with meteor 1.3.5.2 without any problems.

Ah, thanks for the clarification. In fact, I noticed that since I switched to the sdk tools 23, the permissions have to be handled differently. I thought this was due to the newer sdk version.

So now with Meteor 1.5 is crosswalk / webrtc working ? Some specific version is needed ?
I guess the new Android webview supports webrtc, but requires come low level java to setup ?

Yes, webrtc works in 1.5 if the crosswalk package is included.

with android ? chrome is ok.

meteor + android +crosswalk worked fine before.
now only chrome works

the mentioned changes did not work for android, audio recording fails.