Ask HN: is Mono for Android worth it?

1 points by ConstantineXVI ↗ HN
Been toying with doing an Android app on the side. I like the idea of writing it in C# (as far as "standard" languages go, I'm far more comfortable with it v. Java); but not really sure it's worth $400 when I'm not even sure I'll get $40 income from said app to begin with. Anyone that's used it, is it worth the money even if you aren't targeting WP or iOS also (via MonoTouch)? I'll pay if it's worth the money, but I don't want to be 6 weeks in and find some necessary API that Mono doesn't glue particularly well to.

7 comments

[ 3.2 ms ] story [ 20.2 ms ] thread
Well, I don't know about Mono on Android, but my business partner and I tried using Mono to port a simple .NET app to OSX and it was disastrous.

Layout was wrong, the application was ugly and non-native, and the final straw was the printing API that flat out crashed whenever we tried to use it. We ended up re-writing in Java, and achieving a relatively high level of quality in a short period of time. Java was easy to pick up after C#, and the tooling was much more mature than Mono.

You can build C# OSX apps with native UI if you use Mono with Monobjc:

http://www.monobjc.net/

MonoTouch for iOS works similarly, and bridges into native Objective C UI libraries (and you continue to use Interface Builder). Last time I tried it, it had the downsides of long startup time (2-3 seconds) and big runtime. However, if you're writing a big app, let's say 5MB, then going from 5MB to 7MB is probably ok.

I think MonoTouch for Android also uses native UI, but I have not tried it yet.

I'm not porting over existing .NET code, layout isn't a concern there. Rdio is the one Mono based app I've used (that I'm aware of), and it seems to handle UI mostly fine. I'm more concerned with the coverage of the Android APIs overall.
If you want a cross-platform UI from the same codebase, you should use Gtk#, not use Windows.Forms. But that requires a UI rewrite.

An alternative is to split your code along the business logic/presentation layer boundary. Share the business logic and write a platform specific UI using the native toolkit on each platform: WPF or Winforms on Windows, MonoMac (Cocoa) on Mac and Gtk# on Linux.

The Winforms stack has not been maintained for about 5 years, and was never particularly debugged nor maintained on Mac. We wanted to remove it, and just tell people "Sorry, this API is useless", but there are a few type dependencies that are needed elsewhere.

We just blogged a case study from the PictureTHIS, an app from the guys that did Draw a Stickman:

http://blog.xamarin.com/2012/08/07/picturethis-fun-for-both-...

They have a nice case study.

You do not have to pay before you try, the evaluation version lets you do all your development on the simulator. If you like it, you can buy it and deploy to device. And if you are unhappy, you can return it within 30 days.

That said, we will work hard to make sure you are delighted with our product, and keep you as a user.

Thanks for dropping in, Miguel. Liking what I'm seeing so far; sending a mail to Xamarin's support line w/ a few notes shortly
While I've had a tinker with both Mono and Android, I haven't used Mono on Android. I have however, had the displeasure of using it on GNU+Linux. I'd sooner do a UI rewrite than touch Mono again.