Is it possible today for a native Android and IOS applications use WebGL?
It looks like Android WebView and IOS UIWebView (except for iAd) do not support WebGL, correct?
What other libraries (not browsers) support WebGL on Android and IOS? It would be great to have some examples.
Safari in iOS 8 now supports WebGL and Chrome in Android offers partial support. Unfortunately the stock Android browser does not yet offer support, though that appears to be coming. Source: http://caniuse.com/#feat=webgl
As you have mentioned, WebViews would be the way to go to utilise this new tech.
iOS 8 supports WebGL in the WebView, there are 2 WebViews available in iOS8, UIWebView and WKWebView, both supports WebGL that can be included in a native app. WKWebView has a faster JS engine which performs 2X-10X better than UIWebView
Android WebView does not support WebGL yet (atleast until v4.4.4), however you can use a custom WebView as part of the app to support WebGL, Crosswalk runtime can be used for a WebView in Android native app, which supports on Android 4.x versions and supports WebGL, WebAudio, WebRTC and more...
Related
I have an old device (Nook Simple Touch). It based on Android 2.1. I am writing simple application for this device (only for personal usage). This application is a WebView linked to special WEB-site. Site was build using JQuery Mobile.
I get a trouble with it. WebView on this device is not perfect and shows some elements incorrectly. New versions of WebView works well.
Is it possible to improve WebView on old version of Android? May be here is a way to upgrade it or i can use some library for it?
Unfortunately, there's nothing WebView related you can do here.
jQuery Mobile performs badly on Android systems below 2.3
To be more specific, jQuery Mobile performs badly on Android systems below 4.0, however, performance drops even further if Android 2.2 and below is used.
On Android 4.0 you could have used Crosswalk to make your application faster, however, it is limited to Android 4+.
The good news is you are not out of possibilities.
CSS3 is the main reason jQuery Mobile performs purely on Android 2.X devices. You can disable jQuery Mobile styling and do it on your own making sure not to use or overuse CSS3, especially CSS3 drop shadows.
Another possibility would be to upgrade the Android version. Unfortunately, an official upgrade was never released nor there was a custom ROM on XDA developers.
What is the engine of Android native browser? Wiki says that Android used WebKit before 4.4 and Blink for 4.4 and further versions. Is it right statement? Thanks in advance.
The default browser on Android is Google Chrome. This uses the Blink layout engine. For AOSP installations without the Google Apps, the default browser is the old "Browser" app that uses Webkit.
other third party browsers like Firefox uses Gecko, Opera uses Blink, Dolphin uses Webkit, and there are probably others. Additionally, also Samsung and HTC install different (non-Chrome) browsers on their phones. I do not know what they are, or what engine they use.
similar question answered you can see here
I had a similar question. Below is what I found.
1. Wikipedia article
List of features in Android:
Web browser
The web browser available in Android is based on the open-source Blink (previously WebKit) layout engine, coupled with Chromium's V8 JavaScript engine. Then the WebKit-using Android Browser scored 100/100 on the Acid3 test on Android 4.0 ICS; the Blink-based browser currently has better standards support. The old web browser is variably known as 'Android Browser', 'AOSP browser', 'stock browser', 'native browser', and 'default browser' (from the time it was always the default). Starting with Android 4.4 KitKat, Google has begun licensing Google Chrome (a proprietary software) separately from Android, but usually bundled with (what most device vendors did). Since Android 5.0 Lollipop, the WebView browser that apps can use to display web content without leaving the app has been separated from the rest of the Android firmware in order to facilitate separate security updates by Google.
2. HTML5test's slides
The Android Browser
ANDROID 4 DEVICES
ALSO COMMONLY SHIP WITH
GOOGLE CHROME
DEPENDING ON YOUR DEVICE
GOOGLE CHROME COULD BE
AN EXTRA BROWSER
THE DEFAULT BROWSER
THE ONLY BROWSER
OR NOT THERE AT ALL
ANDROID 4.4 SHIPS
WITH A NEW WEBVIEW
BASED ON
CHROMIUM 30
BUT NOT THE SAME AS
GOOGLE CHROME
THE CHROMIUM BASED WEBVIEW
WILL BE UPDATED REGULARLY
ANDROID 4.4.3 → CHROMIUM 33
ANDROID 5 → CHROMIUM 37
IN FACT ON ANDROID 5
THE WEBVIEW CAN BE UPDATED
INDEPENTENTLY OF THE OS
3. Release Notes on WebView
Android 4.4 KitKat
Chromium WebView
Android 4.4 includes a completely new implementation of WebView that's based on Chromium. The new Chromium WebView gives you the latest in standards support, performance, and compatibility to build and display your web-based content.
Chromium WebView provides broad support for HTML5, CSS3, and JavaScript. It supports most of the HTML5 features available in Chrome for Android 30. It also brings an updated version of the JavaScript Engine (V8) that delivers dramatically improved JavaScript performance.
In addition, the new Chromium WebView supports remote debugging using Chrome DevTools. For example, you can use Chrome DevTools on your development machine to inspect, debug, and analyze your WebView content live on a mobile device.
The new Chromium WebView is included on all compatible devices running Android 4.4 and higher. You can take advantage of the new WebView right away, and with minimum modifications to existing apps and content. In most cases, your content will migrate to the new implementation seamlessly.
Android 5.0 Lollipop
Chromium WebView
The initial release for Android 5.0 includes a version of Chromium for WebView based on the Chromium M37 release, adding support for WebRTC, WebAudio, and WebGL.
Chromium M37 also includes native support for all of the Web Components specifications: Custom Elements, Shadow DOM, HTML Imports, and Templates. This means you can use Polymer and its material design elements in a WebView without needing polyfills.
Although WebView has been based on Chromium since Android 4.4, the Chromium layer is now updatable from Google Play.
As new versions of Chromium become available, users can update from Google Play to ensure they get the latest enhancements and bug fixes for WebView, providing the latest web APIs and bug fixes for apps using WebView on Android 5.0 and higher.
Android 7.0 Nougat
WebView
Chrome + WebView, Together
Starting with Chrome version 51 on Android 7.0 and above, the Chrome APK on your device is used to provide and render Android System WebViews. This approach improves memory usage on the device itself and also reduces the bandwidth required to keep WebView up to date (as the standalone WebView APK will no longer be updated as long as Chrome remains enabled).
You can choose your WebView provider by enabling Developer Options and selecting WebView implementation. You can use any compatible Chrome version (Dev, Beta or Stable) that is installed on your device or the standalone Webview APK to act as the WebView implementation.
Multiprocess
Starting with Chrome version 51 in Android 7.0, WebView will run web content in a separate sandboxed process when the developer option "Multiprocess WebView" is enabled.
...
I am developping Hybrid App with Html5 page loaded by Webview, So I wonder if SPDY/3 is enabled default(Android 4.X).
I have heard that Android Browser since Honeycomb supports SPDY/2.
Chrome for Android and Chrome Webview for Android both support SPDY.
Old Webview does not have SPDY support. If you do want, or need to, use SPDY on older Android platforms (Chrome powered Webview is 4.4+), you can use a native java implementation and integrate that into your app - e.g. okhttp library.
I need to make a 3D animation across the web, android and iOS platforms. My question is, is it possible to use WebGL to make the animations in native android and iOS apps? As I would write the animation once and it would in theory port to the android and iOS with out any problems or am I going to have to simply use the OpenGL ES to make the animations for the mobile devices and webGL for the web.
Disclaimer: I work for ludei
So, that's exactly what a company called ludei is preparing to launch ;)
We have it working on Android 2.3 (even on a Nexus One!) through 4.2, and iOS 4 (I think?) and up. We don't rely on the system browsers or webviews, so there are no "private libraries" problems, and we support versions of Android that can't have WebGL otherwise.
We're giving it the final touches now, but we should be able to release it in a few weeks :)
Check out http://impactjs.com/ for iOS they are allowing you to use threeJS //asmallgame.com/labsopen/webgl_impact/ right now for Android it is only supported on Chrome Beta and you have to enable the flag http://thenextweb.com/google/2013/01/25/google-finally-makes-it-easy-to-enable-webgl-support-in-latest-chrome-for-android-beta/ I would expect webGL to be fully supported with key lime pie version of android coming out soon. Also you can hack the iAd platform to support it on iOS but you will not get it through the app store due to using private libraries. github.com/benvanik/WebGLBrowser also be aware of github.com/kripken/emscripten because firefox recently came out with asmJS on odin monkey techcrunch.com/2013/03/21/firefox-nightly-now-includes-odinmonkey-brings-javascript-performance-closer-to-running-at-native-speeds/ this enabled firefox to port over unreal engine to webgl in only a few days at the last GDC so hopefully chrome and other browser start supporting asmJS for the obvious speed boost. techcrunch.com/2013/03/27/mozilla-and-epic-games-bring-unreal-engine-3-to-the-web-no-plugin-needed/
WebGL is not fully supported on all browsers, however both Android and iOS have native OpenGL views that can be used (and will provide a much faster experience than WebGL). Once your environments are set up for each platform, using the same code will be mostly trivial.
Although cocos2d-x does not support 3D animations, its documentation may help you get started for cross-platform apps using openGL.
I need to display WebGL graphics in my webview. Is there any way to modify Android WebView to enable WebGL. If yes, How?
WebGL was not supported in WebViews before Android Lollipop. In KitKat, Android switched to Chromium as the native WebView implementation, but it is locked to Chromium 33, with no WebGL. In Lollipop, WebView is updated via the Play Store, and now supports WebGL. (source: https://developer.chrome.com/multidevice/webview/overview)
Trying to extend WebView to support it is next to impossible.
One thing you might consider, is use CSS 3D transformations instead of WebGL, those are supported on Android ICS and forward, see http://caniuse.com/#feat=transforms3d
WebGL is not supported in current Android webview, you can however use crosswalk-project which is a web runtime that supports WebGL and package it in a android app along with your WebGL app. The latest Intel XDK supports building Android apps with crosswalk runtime.
You can view WebGL on new Android devices using the Chrome Beta app or Firefox beta app. The only device I have tested and this worked on is the Asus Nexus 7 tablet running Android 4.2.2.
My Motorola Razr running Android 4.1.2 does not support WebGL with google Chrome Beta.
Not sure if this directly helps.. but FYI.
Although it is not possible to enable WebGL for Android WebView, there is an option to have native apps using WebGL for rendering using CocoonJS by Ludei (www.ludei.com). They even have a demo app in Google Play to show some known WebGL demos running even in Android 2.3 devices.
https://play.google.com/store/apps/details?id=com.ludei.demos.webgl
Even running on OUYA!
http://www.youtube.com/watch?v=ypyqkAo1jgo
I have chrome version 28.0 on OS 4.2.2 WebGl is not enabled by default you need to enable it by typying chrome://flags/ in seach bar just the way shwn in pic below
Once you have enabled web gl relaunch chrome and you will be able to run most of three.js experiments . I have shared screenshots for few :-
I also tried everything on webview but I was unable to set webgl flags. Probably it is not possible to use webgl in webviews .