We are building a webapp combining dojo and couple of other GIS related frameworks to render map and other data to browser. It works perfectly fine in desktop browser (firefox, chrome). However when we fire it up an andriod emulator, the performance is very slow. we have increased the memory to about 2 GB and VM around 256mb for the emulator.
What could the problem be?
Is it better to develop a seperate android app or continue this as a mobile web itself?
Basically your question relies on the same effect as to what happened to facebook.
Their original "app" was based on HTML5 development and was slow as molasses. They realized that if they went native - their performance would increase. In reality it was slapping on rocket launchers.
It would be the same for android and android apps.
If you have built it as a web app it will be pulling request and then rendering it as html as if it was an open browser rather than using the native map applications built into the system.
If you are savvy enough and your code is more JS than anything with the dojo framework look into the Titanium Framework Accelerator to translate your native web code into a native app. Though tweaking will be needed in order to call native API map protocols
http://www.appcelerator.com/platform/titanium-platform/
Android simulator is slow, it's better if you test in real devices.
Anyway if performance is a must, you should develop a native app. HTML5 is improving but in some situations you need native code. Or if your code is mainly Javascript, there are some javascript compilers to generate native code and improve the performance.
Related
I'm really keen to develop a web browser application for Android Wear devices. To make such application I need a WebView object, but the major problem is that Google has made the android.webkit API unavailable in that OS.
Since Android is open-source, is it technically possible to manually include the needed libraries, by coping them from the android source code on GitHub into my project? Are they going to work like as in a normal Android device, and is it legal?
Here is the link to the API I'd like to use.
Developing a browser based on WebView is not a good idea anyway. Although historically Android Browser was based on WebView, it had to use a lot of hidden APIs in order to work. All more or less functional browser apps based on WebView have to do the same, which makes them fragile. Also, the resulting browser app will not be as secure as a real multi-process web browser.
A better idea is to take Chromium and build it using Wear SDK. And there is already one built this way.
You don't have access to a complete source for Android Wear to build a complete image.
We are developing web browser application for mobile phones and I am trying to figure out a way that I can gain access to the camera and take a photo and then upload it to the internet. But so far what I was suggested is to use phonegap and create native application. Phonegap is fine but it is not what I am looking for because my client wants to design forms and these html forms somehow will be able to trigger the camera and take photo and upload it to a server. Do you think developing a native API for every platform and having access to its functions from the web browsers is possible? What your suggestion would be?
(Note: My customer only want application that can run on mobile web browsers no native application runs on I-Phone, windows mobile, Blackberry and Android)
Thanks a lot...
Web apps (not wrapped in native code as Kumar details) cannot access all device hardware and sensors. Location support is available on iOS and Android, but camera access is only available on Android (via JavaScript). Similarly, device motion APIs are not accessible on Android, but are on iOS.
As you can see, support is sketchy and if you are truly looking to use such features, you are better off (and in many cases, realistically looking at) writing native apps for each platform you intend to support.
HTML5 is not yet at the point where it can replace native apps. It can do some of the things that native apps can, but even then performance is suboptimal. Currently, native apps may be more difficult and time-consuming, but they are necessary.
Calling android native APIs from javascript functions of embedded WebView
Use JS to call Java code which will in-turn call the Camera API or whatever else you are looking for.
It's not going to be possible to do it on iPhone, the only known way of accessing the camera is through the Cocoa layer.
Issue
What is your strategy for building a desktop-like webapp that needs to be deployed to desktop web browsers and on mobile devices(Android, IPhone, etc)?
A course of action could be to firstly select the best framework for building the part that runs on computers(i.e. not mobile devices). Being a desktop-like app, a good candidate framework is GWT+ExtGWT since it provides:
Java-based development which is much scalable/solid than developing in Javascript via ExtJS for example
Good debugging
Good testability
Next, you'd want to deploy this app on mobile devices too. So how do you go from here? Write a separate implementation(separate from GWT) for Android, another one for iOS(in objective-c), another one for Windows Mobile, and so on?
Related
Related to above, I saw the presentation of PhoneGap which claims you develop in Javascript+HTML and it generates code for all mobile platforms: Android, iOS, etc.
However, PhoneGap is not an option since I don't think it integrates well with GWT and more important, it doesn't generate a native app which can take advantage of features like backgrounding, services, etc(see http://www.youtube.com/watch?v=xHXn3Kg2IQE for why native Android apps are much better than browser-based ones). There may be other frameworks like PhoneGap out there that I'm not aware of though but at this point I only see:
one implementation with GWT
one implementation for Android
one implementation for IPhone
and so on ...
If you are already planning on developing for multiple platforms, it is a good idea to at least consider cross platform frameworks like PhoneGap or Appcelerator. Beyond the fact that you are developing for multiple platforms there are a couple of other important questions to consider.
Do you want a web version as well?
Do you need intensive graphics support?
Do you have loads of money to target multiple platforms?
Do you have loads of time to target multiple platforms?
You also point out two more great questions to consider in debugging and testability. In terms of unit testing, any native platform is very difficult to unit test. Debugging is pretty easy for most native platforms.
Regarding PhoneGap, it is important to know a few things about it.
You can write PhoneGap plugins. A plugin is essentially native code for any given platform that can do pretty much anything you would want to do in native code -- background services, opengl, etc -- and make it accessible to JavaScript in the web view.
There are several open source projects that you might be very interested in such as GWT-PhoneGap, QUnit for JavaScript unit testing, and Weinre for Firebug like debugging.
Hope that helps!
I was looking into PhoneGap and Titanium framework, and I did not clearly understand how to they work, let's suppose I have already developed an app for android or iphone, can I run this app on another mobile with a different OS with PhoneGap or Titanium help?
Or I have to develop again my app with PhoneGap/Titanium framwork?
In this case I have full support at all the features like thread, JSON or XML parsing and so on?
Thank you
PhoneGap basically takes a client-side web app (HTML, CSS, JavaScript) and wraps the whole thing in a native device's web view control. You can hook to some of the device's native functions, but as you can guess, it's pretty limited compared to native development. But easy, and brings in a whole range of skills that a lot of people already have. That's really the appeal of PhoneGap.
Titanium is also html/javascript oriented, but it actually claims to compile to native code. Their sample "kitchen sink" app demos quite a lot of the native APIs, at least for the iPhone. I doubt you'd be able to deal directly with threading, but JSON for sure, and I'd think XML as well.
Titanium has full support for JSON or XML parsing.
You can see Titanium examples - Kitchen Sink - for more details.
The idea behind phone gap is that you can take a browser based client app that is written in html/css/javascript and use phonegap to gain access to some native mobile hardware like contacts, gps, accelerometer, etc. Phonegap allows you also to build this web app for different mobile devices all using the same web app code.
To answer the first part of your question, no, you would not be able to take a developed app and use PhoneGap or Titanium to run the app on another device.You would have to write the app in either the PhoneGap or Titanium Framework and then build the application to the devices you want to support through the tools that each give you.
For example, you would write your code in JavaScript(Titanium) or HTML/CSS/JavaScript(PhoneGap), then use the app's build tool to create the file that would be released onto the phone.
I often use GWT for web UIs. I have heard of it being used a fair bit in conjunction with Gears for offline solutions (probably nowadays HTML5 "offline storage" is all the rage) and I'd like to experiment with building a GUI in GWT and use it on my iPad. Tips/tutorials on how to deploy it onto the device to act as much as possible like a resident "App"? This is just a curiosity/experiment to fill a week-end... (I can "free" the iPad for the experiment if need be yet I am sure a lot can be done without doing so...)
phonegap(now Apache cordova) makes available the ios/android native features like camera,device file management,contacts,geolocation etc to our app.
GWT and mgwt :::
Using mgwt,gwt( both are opensource) and GwtPhonegap we can develop cross platform mobile applications which can behave exactly like native apps. in performance perspective these apps are bit slow when compared with native apps but the convenience is that the app can be installed in multiple platforms.
GwtPhonegap
GwtPhonegap acts like a bridge(provides abstraction) between device native functionalities and to our app. We can get good look and feel using css.
We have support for gwt-html5-database for which to perform cache storage.gwt-html5
Try using gwt in conjunction with phone gap. It will expose many of the native Apis to make them available for use in gwt.
https://code.google.com/p/gwt-phonegap/wiki/GettingStarted
Additionally I've had very good experiences using the m-gwt as a UI framework. MGWT makes creating native looking UIs using CSS+JS very easy.
http://www.m-gwt.com/