5 ms·
Is anybody using MonoTouch to create cross-platform apps for iOS and Android? What's the experience like?
by bitcartel 14y ago
Is anybody using MonoTouch to create cross-platform apps for iOS and Android? What's the experience like?
- untog 14y agoI used the trial version of it (that only runs in the simulator)- as a C# dev, it was great. MonoDevelop was deeply inferior to Visual Studio, though.
- CodeCube 14y agoNot my app, but you could check out iCircuit's experience: http://praeclarum.org/post/31799384896/icircuit-code-reuse-the-fourth-edition http://praeclarum.org/post/31799384896/icircuit-code-reuse-t... He achieves anywhere from 69-87% code reuse depending on the platform. They did a bit of a case study a while ago where Frank talks about it - http://blog.xamarin.com/2011/10/26/java-to-ipad-in-2-months/ http://blog.xamarin.com/2011/10/26/java-to-ipad-in-2-months/
- mythz 14y agoThere were lots of demos showing cross-platform Android / iOS and even OSX! (with MonoMac :). I met the creators of iCircuit and TouchDraw at MonkeySpace they said it was really easy to get going and you just needed to design your library so the UI was decoupled from the main code-base (which you could effectively re-use as-is). Several of techniques of structuring your code-base was described in @gshackles talk, some of the slides are here: https://speakerdeck.com/u/gshackles/p/cross-platform-mobile-development-with-c-number-monkeyspace https://speakerdeck.com/u/gshackles/p/cross-platform-mobile-... (SpeakerDeck seems affected by EC2's outage). MonoGame (https://github.com/mono/MonoGame https://github.com/mono/MonoGame) is an implementation of XNA which allowed games like Bastion and Infinite Flight (A C# Flight Simulator) to run cross-platform.
- kpao 14y agoWe're in the process of porting our Flight Simulator (Infinite Flight - http://infinite-flight.com http://infinite-flight.com) from iOS to Android. We originally developed it on Windows Phone. Porting from WP7 to iOS took a few months, mostly because MonoGame didn't have any 3D support (we added it). We have been slowly porting to Android, it's been pretty good so far, the framework makes it easy and we've had very little issues making external libraries build on MonoDroid. Xamarin's also been very responsive to our questions and issues. If you want to see what it looks like, here's a video of what we have lined up for our next update coming out in a few days: http://www.youtube.com/watch?v=u5N_ckb-dXw http://www.youtube.com/watch?v=u5N_ckb-dXw
- eropple 14y agoI'm surprised you're so high on MonoGame, though I guess if you started with XNA it makes a lot of sense for you. I find the project to be deeply hurt by being tied to the XNA ecosystem (the content pipeline is a mess, especially as you can't build content stuff in MonoGame itself, and Android support is atrocious--dealing with a destroyed context is insanely messed up). I'm also pretty disappointed in the lack of professional behavior--no CI, few/no automated tests, and few/no code reviews have led to some serious WTFs that sneak in that are really unsettling. There's a lack of project leadership, too, in that if you'd like to contribute there are no real designated maintainers or developers with responsibility over submodules (I've tried myself, multiple times, to no real success). I think the best way forward for Mono and games would be a library, starting with MonoGame or not, that followed better practices and didn't try to make square pegs fit in round holes. There are a lot of areas where it makes sense for Mono to ape the .NET APIs but this doesn't seem like one of them.
- yareally 14y agoIf I could possibly offer an alternative to MonoGame, perhaps try libgdx game framework with MonoTouch. Libgdx is a very well developed framework for Java, but the creator has also put together guides on how to use it with Monotouch. How to guides: http://www.badlogicgames.com/wordpress/?p=2602 http://www.badlogicgames.com/wordpress/?p=2602 http://www.badlogicgames.com/wordpress/?p=2450 http://www.badlogicgames.com/wordpress/?p=2450 http://www.badlogicgames.com/wordpress/?p=2454 http://www.badlogicgames.com/wordpress/?p=2454 http://www.badlogicgames.com/wordpress/?p=2457 http://www.badlogicgames.com/wordpress/?p=2457 http://www.badlogicgames.com/wordpress/?p=2459 http://www.badlogicgames.com/wordpress/?p=2459 There was also a discussion about using J2objc (http://code.google.com/p/j2objc/ http://code.google.com/p/j2objc/) in order to port it to iOS: http://www.badlogicgames.com/wordpress/?p=2593 http://www.badlogicgames.com/wordpress/?p=2593
- eropple 14y agoI like Mario a lot, and I use libgdx for some of my stuff (and am looking at contributing some gamepad stuff to it when I get around to writing it), but despite its quality--which is very good, and the primary developers are professionals who know what they're doing--it is not in the same conversation as MonoGame. No Metro support (and I find it very unlikely Microsoft will allow Java apps in their Metro store, and almost definitely not on ARM devices) and a reliance on IKVM on one of the major mobile platforms makes it a poor choice for greenfield development if you care about those platforms. It's really, really great for desktop and Android, though.
- shadowmint 14y agoYes, and it's cool, but not as awesome as the demos make it seem. There are basically three major downsides: 1) It's another at least $399 x 2 as a single developer to use (but you can develop against it for free and only buy the license when you want to deploy). Professional licenses are more expensive than that. 2) The runtime can take a long time to load. 3-5 seconds for some apps. You can create a splash screen to mitigate this, but it's a *t experience when you do an a/b comparison on a native app and a mono app (this time is basically while it loads the runtime). 3) 3rd party library support sucks. It just doesn't really exist; if you're used to pulling nunit, ninject, shouldly, nhibernate, nsubstitute, etc. into your project, forget it. A handful of libraries have been ported to the touch and android runtimes, but most of things you'll look at either won't work or you'll have to recompile manually (to be fair there are a fair few that are easy drop ins; Dapper works like a charm for example). That said, you get some pretty cool stuff: you can separate your core application logic, including database access into its own library and share the code between your various projects. Fix once, fix everywhere. You can have common unit tests that you can run on a non-windows server. It's vastly more productive (than writing two code bases in objective c and java). You can develop without using visual studio~ <3 (some people see this as a downside; it's not to me. VS2010 is rubbish as far as I'm concerned; it crashes, freezes, loses my work all of the time. For all that I love resharper, I'll take monodevelop in a second thanks). Overall; if you can afford it, do it.
- danabramov 14y agoYou said Dapper works on MonoTouch—did you make any changes to it? I've read[1] there are quite a few problems with it so I had to choose Sqlite over it. I also found this[2], not sure if it helps. What's your experience with Dapper/MT? [1]: http://stackoverflow.com/questions/8223837/using-dapper-in-monotouch http://stackoverflow.com/questions/8223837/using-dapper-in-m... [2]: https://gist.github.com/1115206 https://gist.github.com/1115206
- andyjohnson0 14y agoI've been using it for Android development for about 8 months and I've got no complaints so far. App startup time hasn't been a problem, and I'm getting good levels of code reuse across Windows and Android.