Want your app on multiple platforms without rewriting all the code? Here’s a summary of some of the tools, libraries and SDKs out there to support building multi-platform apps.
Every mobile developer struggles with the decision of which platforms to support, and most end up building for more than one platform. I am frequently asked what tools are out there to make it easier to build for multiple platforms. Well, there are lots of options out there for you, everything from professional paid tools to open source libraries. I decided to sit down and put together a list for you. Information is all based on what I could find on their websites at the time this blog was posted. For the most up-to-date information I recommend you visit the product sites themselves. Each product title is linked back to their website. There are some gaming and graphic specific tools listed as well.
Don't forget good design of your app also makes it easier to implement on multiple platforms. Using a Model View ViewModel architecture makes it easier to re-use your code. Check out this MVVM Light Toolkit or Okra (formerly Cocoon) to help you get started with the MVVM model pattern in XAML. This is great when combined with portable class libraries which allows you to share code between Windows Phone 8 and Windows 8 apps.
Apache Cordova (formerly known as PhoneGap)
Embarcadero RAD Studio XE3
Yo Yo Games GameMaker
Construct2 by Scirra
I’m sure there are some I missed, feel free to add comments to point out any good tools and tips for cross platform development that you have discovered. Don’t forget in Canada when you publish your app you could earn rewards through Developer Movement!
There is also MonoGame (www.monogame.net) which is a cross platform XNA 4.0 API which supports Android, iOS, Mac, Linux, Windows, Windows 8 and Windows Phone 8.
Price : Its Free* and Open Source.
Coding Language : .Net
*you need MonoTouch/Mono for Android to target iOS/Android .
On the gaming side you missed MonoGame ( www.monogame.net ).
ARMED! and Draw a Stickman:Tip are just 2 examples of games that used MonoGame to get onto the Windows 8 store. XNA developers have a close to native option with MonoGame.
Windows Phone 8 support is available in the recent beta and on top of that they can then take their XNA games to iOS, Android, MacOS, Linux and eventually PlayStation Mobile and Raspbery Pi.
Please consider updating your list.
Good catches, I also had someone catch me on twitter to point out Construct2 by scierra, these are now added to the post! Thanks! If I missed any others let me know!
Very helpful Post.. thanks Susan :)
Following my last comment here is a list of supported devices and API
Marc Andre - thank you, just added RhoMobile to the list.
thanks very useful links for multiplatform development in one page, i added this topic to my bookmarks.
For 3d-games: There's also Multimedia Factory 2 (and like ones) from www.clickteam.com - develop in it's IDE where drag/drop + edit events allows you to produce numerous outputs including SWF, XBOX, ios, android, wp, etc.
1) Use C# - Write your apps in C#. Existing code written in C# can be ported to iOS and Android using Xamarin very easily, and obviously used on Windows Phone.
2) Utilize the MVC design pattern - Develop your application’s User Interface using the Model/View/Controller pattern. Architect your application using a Model/View/Controller approach or a Model/View/ViewModel approach where there is a clear separation between the “Model” and the rest. Determine which parts of your application will be using native user interface elements of each platform (iOS, Android, Windows Phone and Windows 8/RT) and use this as a guideline to split your application into two components: “Core” and “User-Interface”.
3) Build native UIs - Each OS-specific application provides a different user-interface layer (implemented in C# with the assistance of native UI design tools): On iOS use the MonoTouch.UIKit APIs to create native-looking applications, optionally utilizing Apple’s Interface Builder.
On Android, use Android.Views to create native-looking applications, taking advantage of Xamarin’s UI designer On Windows Phone you will be using the XAML/Silverlight presentation layer, using Visual Studio or Blend’s UI designer On Windows 8, use the Metro APIs to create a native user experience. The amount of code re-use will depend largely on how much code is kept in the shared core and how much code is user-interface specific. The core code is anything that does not interact directly with the user, but instead provides services for parts of the application that will collect and display this information.
To increase the amount of code re-use, you can adopt cross-platform components that provide common services across all these systems such as:
SQLite-NET for local SQL storage, Xamarin.Mobile for accessing device-specific capabilities including the camera, contacts and geolocation,
Using framework features for networking, web services, IO and more.