I know C# rather well and just love Visual Studio as IDE. 🙂 Yet now I want to start developing for android…
I found out about MonoDroid and wanted to ask if it has any downsides to it that would make Java more preferable, or should I uninstall Eclipse and dive straight into MonoDroid?
If I understand right, MonoDroid deploys/compiles native android applications and does not need any additional .net-like framework or anything?
Are there any significant limitations to what I can do with MonoDroid? For example, having the app run in the background or using some external .net libraries for image editing, etc. ?
There’s a lot more than just a set of wrappers running under davlick, truth to be told, there is much more of a horizontal relationship between MonoDroid and Android;
When did using the same language as the OS developers become a big issue? There’s lots of C++ programmers wondering how to use BSD or SVR5 and many C programmers who want to know what the heck to do on Windows++…
I’ve been worrying about the same thing – productivity in C# instead of playing with an unfamiliar language, vs developing how the OS developers intended it to be.
Its easy to list pros vs cons –
pros (of monodroid, for C# developers)
- familiar dev environment, can develop using Visual Studio
- C# instead of Java
- Reusable code assets – you can use a lot of code in your iphone project or Windows phone 7 project using monotouch and the WP7 SDK.
- debugging could be difficult, due to lack of api documentation from Google. Will have to depend solely on monodroid documentation.
- there could be a lag when it comes to latest cutting edge features – safe to assume that the monodroid team will require some time to wrap around the latest android features every time there is a new OS release
- availability of libraries – I am not sure how you can use the open source libraries that would have evolved around the android platform, that could cut down on development time
Much of the documentation available is in Java: so if you run into difficulties with phone behavior when using MonoDroid you won’t really find that much help or debugging information so you may want to stick with Eclipse.
If you will write in c# anyway you will be have to wrap it into a Java code, so what’s the point ? Also you may head with a very difficult issues while trying to understand the APIs who written for Java programming…
Here are some points that you can mull over:
Android applications are predominately written with Java. The Android SDK itself is natively written in Java.
Working in Mono may not provide all the functionality available in the Java SDK.
If you are a C# Developer you wont be able to find, in Java, some of the (cool) features available in C# (like Property Delegates etc).
Code written in .NET can be re-used for other environments – this may save a lot time that would have been spent learning a new language/environment (like Objective C), and coding in it.
.NET extends the Android development stack with it’s existing libraries and API’s.
I think both are good for certain reason. It will be very hard to say which one is preferable for Android development – in the end that is up to you too decide.
Also note that any release build using monodroid adds an additional 4mb to the apk filesize and increases app startup time with a few seconds.
For simple apps this can mean a 500-800% increase in filesize – whic is pretty bad in my book.