Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Someone suggested me MonoTouch to build .NET applications for Android. I want to know whether it is universally accepted and preferred or not.

I am a .NET developer and comfortable with C#. Should I learn Java or proceed via MonoTouch/MonoDroid route?

share|improve this question

closed as not constructive by gnat, gbjbaanb, Walter, Tamás Szelei, Tom Squires Jul 4 '12 at 14:44

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

Do you mean Monodroid? Monotouch is for iPhones –  MattDavey Jul 4 '12 at 7:21
Oh ok. Monodroid as well. –  RPK Jul 4 '12 at 7:41
I think the answer depends on skills of work force at one's disposal (you in this case). Also depends if there is a large existing code base. Have you actually tried Java? As a C# developer, I would never use it for personal projects (rather Scala). –  Den Jul 4 '12 at 8:01
I reject it. Ergo, the answer is No. :-) –  Stephen C Jul 4 '12 at 14:25
add comment

3 Answers

I used MonoDroid and Java, and my experience about MonoDroid is:

  • Its documentation is worse
  • Features are coming later than in Java (Especially without the support packages was bad, but they are available now)
  • Apps get bigger (about 4+MB in release, depending on the .NET features you use)
  • 399$ per user (at least)
  • You can use LINQ, lambdas etc.
  • If you have existing c# business logic code, you can probably just reuse it
  • VS instead of Eclipse
  • If you are planning to reuse the Logic, you can use it for silverlight and iOS apps too.
  • community is way smaller, getting help if something doesn't work is much more difficult

If you have some time, try the evaluation version and test it yourself.

share|improve this answer
add comment

I think you should try Java - its guaranteed to be around for the next iterations of the Android platform, whereas MonoDroid is not. MD is also quite expensive (IIRC) compared to the java tooling.

If you don't like Java, you could use Apache Cordova to write your cross-phone apps (its a HTML5 client toolkit), or use the Android NDK to write C/C++ apps.

share|improve this answer
Any proof that MonoDroid won't be around in the next iteration of the Android Platform. Besides how can you say that Java is guaranteed, Google would be crazy if it did not prepare a plan, if it lost the Oracle case. I can literally guarantee you that Google DID have a plan if they lost that case. –  Ramhound Jul 5 '12 at 19:10
add comment

I think that question you should ask yourself is:

Will you use your base code somewhere else except Android?

If you want to share code between desktop/Android/WP/iPhone and want to have same functionality and only change GUI code for each platform then I think you should go for it. Just keep in mind it's proprietary software base on Mono. Mono is kind of unwanted child in Linux sphere but Miguel made good job and discovered good way how to make money on it by doing MonoDroid and MonoTouch.

IMHO if you want to make Android only applications just use Java. You know already C# and .NET. Trust me going C# -> Java is not hard. You'll spend most of the time in Android API anyways and difference in syntax between those too is just so small that you should not be worried about. You'll surely benefit more by learning Android API and framework than thinking if you should use C# and MonoDroid ;-)

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.