i was ordered by my boss to find a way that we can offer a simple mobile app to our customers that runs on several mobile platforms from the same codebase. Android and iOS was the minimum. And best would be to use our well known C/C++ knowledge.
First i found "RAD Studio XE6" from Embarcadero, which is a really complete product that can do what we want. But the price is also "very complete"
€ 4700,00+ per seat. WTF!
Doing a bit more searching i found some other tools (e.g. Xamarin, Appcelerator Titanum and of course the famous PhoneGap/Cordova from Apache Group). But either they don't use a single codebase (only 70% or so can be shared and you need to write some parts device dependent) or they don't offer C/C++ API. Also some of them don't compile to native apps but to so called Hybrid apps (a webapp that runs in a UIWebView on the device).
Then i stumbled upon "MoSync" http://www.mosync.com
. I never heard of before. But they claim they were around since 2005.
MoSync offers to write your app in HTML/CSS/JS or C/C++ or a mixture from that. You can build native apps for different platforms from the same codebase without any change. There are different levels of abstraction layers. In the highest level you get a complete ready to run,event handling code template and you just need to fill in "your own meat"
. You can also dive into deeper levels to get more control over layout and behaviour, but then, if you dive to the lowest level, you need to write #ifdev code, because you lost some "crossplatformness".
While you can compile ready to install .apk files for Android under Windows with just installing MoSync, you can only compile the code for iOS under windows. You end up with a ready to package directory structure with the ready to package files in there. But for the final packaging you need an OSX platform (e.g. a MAC) to create an installable package from that MoSync output.
The best thing is the licensing. MoSync is FOSS under GPL v2 AND they offer different commercial licenses that lets you out of the constraints of the GPL (e.g. offering your source too). But they offer even a FREE commercial license, for just the price that every developer have to subscribe for their MoSync copy on an annual base. License plans that cost money offer support plans from experts though, while the free commercial license is constrained to forum/doc/faq support. But the documentation is really detailed and huge. MoSync comes with a lot of sample apps and there are also a lot of guides/tutorials and videos available.
The IDE behind MoSync is Eclipse. And the installer package brings all you need in a handy installer package for either Windows or OSX. But even that MoSync brings its own Simulator for testing your app, its recommended to install the native SDK simulator from each platform (e.g. Android SDK Simulator) because the MoSync simulator (MoRE) is just capable to simulate basic things.
The API supports a lot of device capabilities (like sensors, audio, video and such) and covers also daily needs like connecting to an URL and downloading something and whatnot.
App development made easy
We provide free, easy-to-use, open - source tools for building cross - platform mobile apps.
MoSync SDK - native mobile app development for multiple platforms using a single code base
Develop in C/C++ or HTML5
Deploy to Multiple Platforms
The SDK enables you to compile your app for up to nine different platforms, using one single code base. You can then focus on your next app idea.
9 platforms supported, that is: Android, iOS, Windows Mobile, Windows Phone, Blackberry, Moblin, J2MEE/Java, Symbian and MeeGoo.
The only thing i miss so far is a kind of "form designer". Its a bit tedious to generate your UI programatically and see the results of your changes only after a full compile and upload to the simulator or your device. Here a WYSIWYG GUI editor (like in the Android Eclipse Devekoper package) would be really, really handy.
What i'm thinking about now and i don't know if its possible is, if i can have a kind of "background process" (or service) with MoSync, as our planned app needs to run in background and "poll" some URLs to see if there is something new to download. Maybe this can be done with push notifications though (which is supported by MoSync). But i'm a Newbie to mobile app development and don't see every point in this new world right now. We'll see.
Well i was really happy that i found that pearl. And the company is really generous to give that away for free even for closed source/commercial. So i felt i have to share that with you.