Last year, I started looking into learning Android development. I’m a C# developer who spends most of his time in Visual Studio, so I had some trouble getting accustomed to it. I’ve looked at a lot of ways to ease the transition into Android. Here are some of my thoughts:
Mono For Android or Proper Android Java
After struggling with Eclipse, I started looking into Mono for Android. I’m a C# developer, and I have to say that I felt a lot more at home in Visual Studio. I’ve also done very little Java development over the years. I took a week-long course in 1999—but mostly don’t use it.
I found Mono For Android to be decent, but it’s not easy. You still have to have learn how to use intents and activities and use the xml layouts that are expected. I found myself trying to learn the Android architecture and how the Mono libraries work with it.
Here are my problems with Mono for Android:
1. There is far less documentation than you would need. If you get in a bind, not many people would be able to help you.
2. It’s like learning VB.Net instead of C#. At some point, you have to take the hit and relearn a few things. Almost all of the example code you look at will be in Java.
3. I can’t be 100% that it will perform well enough on the device. There could be a performance hit. And you need to include the mono runtime, so it would bloat the size of your apk.
4. It costs $400. This is fine if I’m asked to create an app by the end of the week by an employer. But when learning for fun, it’s too high a price to pay. Besides, compared to “free”, it’s too expensive.
So, I prefer to native.
PhoneGap
I did a lot of stuff with PhoneGap too. I love coding in javascript and there is so much that can be done with HTML5. I was able to quickly code a little app that fed off data from Toodledo. For cross platform, I think this is ideal. But if I want to take full advantage of the Android platform, I would need to do native.
Eclipse or IntelliJ IDEA
So, I struggled with Eclipse. Even things like autocomplete were throwing me because I was hitting TAB instead of ENTER to accept the autocomplete suggestions. It was messing me up. When I went back to Visual Studio, it was messing that up too. I hate having my flow upset like that.
The majority of tutorials for Android development are using Eclipse. All of the Android tools are well integrated into it.
However, JetBrains has a Java IDE called IntelliJ Idea which is soooo much better for a Visual Studio user than Eclipse is. Jetbrains also develop Resharper, so their shortcuts are very similar. There is a community edition (free) available here. I highly recommend it for Visual Studio developers moving to Android.
The only downside I see with IntelliJ Idea is that some tools like DDMS viewer are not integrated into the IDE. To use them, you have to go to the tools folder of your Android sdk folder and start them manually. But everything is there.
Windows Phone 7
I did some WP7 work last year. It’s a nice platform and I loved writing code for it. But the market share is too small. I know one person who has a Windows phone. I upgraded my phone this weekend, I looked at the Lumia—but went with the Galaxy S3. Maybe one day Microsoft will advance in the phone arena, but I have sincere doubts.