Jerome P Mrozak Jerome P Mrozak - 1 year ago 170
Android Question

How do I ensure Android phonegap/cordova apps use Chrome webviews?

I'm writing a game app that twists SVG graphics until they cry "Uncle!". The program works OK on an iPad (safari/webkit) when hosted from a web server, for which no more need be said here. It also works OK on an Android tablet when hosted from a web server, as long as a recent version of Chrome (like v.25 or later) is used.

The program doesn't access the internet at all, but plays with its SVG graphics, runs Javascript and stores status in HTML5 localStorage().

If I run the program on the "default browser" of older Android tablets the SVG graphics don't get handled correctly, thus my requirement for a recent version of Chrome on the tablet.

I have just created an APK for my app, and find that it doesn't use the Chrome browser when I install it on my really-new Android tablet. Rather, it seems to use a browser embedded within the APK, or at least called from the APK for which remnant libraries exist in the tablet.

My aim with the APK is to make my code run displayed by a recent webkit browser, which seems to mean running in the Chrome environment.

For my question, I need to change something. But what?

  • embed a Chrome browser in my APK?

  • tell the APK to use the tablet's Chrome browser?

  • give up using APK to distribute the program?

  • ???

Do my dear readers have a clue for me?



Answer Source

I would recommend Crosswalk, it's by far the most stable solution out there, our team currently uses it in a production application. Put simply, it packages a Chromium based webview inside your apk and it's backed by Intel. You can use it starting from Android 4.X.

Official sales pitch:

Crosswalk is a web runtime for ambitious HTML5 applications. It provides all the features of a modern browser, combined with deep device integration and an API for adding native extensions. It is especially suited to mobile devices, with support for both Android and Tizen.

For Cordova 4.0.0 and higher there is an official Crosswalk plugin, making it really easy to get up and running:

If you have your Cordova project running, all you need to do is

cordova plugin add cordova-plugin-crosswalk-webview --save

to add the Crosswalk webview plugin. The next build will fetch all dependencies and package everything nicely.

Android 4.4.x

On Android 4.4 your hybrid app will run on a Chromium based WebView, however, it will be stuck on the same version forever (if I'm not mistaken it's Chromium 33). In my opinion it would be best to use Crosswalk here as well.

Android 5.0+

If you code for Android 5.0 and above, the Chromium WebView will be updated through Google Play. More info here:

CrossWalk version 20 and up

CrossWalk will drop support for Android 4.0.X starting with version 20. If you really need to keep 4.0.X in your support matrix, do not upgrade. I would recommend to build another APK for Android 5.X and above which no longer includes CrossWalk at all. More info on this


I found that running my mobile hybrid app had better graphical performance on Crosswalk than when I relied on the system webview (tested on a Sony Xperia ZL, which is on Android 5.x, so the webview is updated through the play store). Why that is, I've no idea yet, maybe Crosswalk configures the Webview in certain ways? This needs further investigation.