Is there a sane way to develop a cross platform Mobile app? We want these to be native apps on each platform, and not necessarily some kind of web page.

Currently we're thinking to split it into two languages:

  • C# backend (business logic)
  • --> Standard C# app for WP7
  • --> App built on MonoTouch for iPhone/iPad/etc.
  • Java backend (business logic)
  • --> Standard Android Java app (MonoDroid version of C# not ready yet)
  • --> Standard Blackberry Java app

We could also develop initially in C# and use one of the conversion tools out there to get our C# converted into Java as a starting point.

Is there another approach? Our skillsets include mainly include a strong C# .Net background, and minor Java experience.

We don't really want to go low level and use something like C/C++ to get the job done. These are usually going to be simple LOB applications that communicate to some web service.

Side Question: how do game devs like the makers of Angry Birds do it?

UPDATE:

MonoDroid is now officially released. So it seems you would only need to use Java for the BlackBerry. We are considering not developing for BlackBerry at all, because developing for the other 3 platforms has been simplified. There is definitely some cost involved, as MonoTouch and MonoDroid are both $399 and you would also need a license for Visual Studio (this doesn't include cost for App store, etc.).

Edit
Report