Hi, I want to start programming in Android. I have backgrounds in Java and j2me. As I am new and have budget constraints I was willing to purchase HTC G1 (1.5 cupcake) rather than any 2.2 device. Is that a good idea? (or let me know if there is any lowcost (around $200) 2.2 device) Please give your opinion. Thanks
Check out CyanogenMod. The 6.x series is based on 2.2, and has been ported to a good variety of devices, including the G1. Of course, you will need to root your device.
I would recommend doing additional research on devices you can afford, however. The G1 is the very first Android device, and is old and (really) slow compared to newer devices available today. Don't forget about sources of used phones (such as Craigslist and various forums), you can get some pretty good deals.
Start with the emulator (the most recent SDK will let you target either version) and decide it's a project you really want to do before buying the phone.
Unless of course you are looking for an excuse to buy a phone.
The only form in which you should be buying a first-gen phone like a G1 right now would be on the used market. And likely then only if you don't plan to put a sim in it or already have one with a suitable data plan (beware carrier habits of forcing plan upgrades), because at least in the US carriers don't usually give any discount for not buying a phone, so if here you might as well get something recent on sale for $99 since you are going to pay the true value of it in inflated monthly charges even if you provide your own phone.
Don't buy a first gen phone, that's just stupid. It's like trying to learn to program on windows 95 or teaching yourself assembly as your first language. You're learning outdated stuff that is becoming obsolete very quickly. If you're going to buy a phone just go buy a new one, they're not THAT much more.
From my own experience:
- Developing for Android using real phone is much more rapid and pleasant than using emulator. Especially if you are a newbie - you will want to see results of changes in code quite often. Additionally, developing with phone helps to detect usability issues very early (I've spent some time improving usability on emulator only to learn later that on real device it had no sense, d'oh!). Nowadays, I tend to use emulator only for testing on different resolutions or SDK's.
- That implies that developer should have phone with version he's willing to target (installing ROM with other version may help, but it's hardly an optimal solution).
- From Android Market statistics it seems that share of pre 2.+ (1.5, 1.6) phones is quite small (2.1 + 2.2 is in almost 75% of devices at the time of writing).
- During development for versions like 1.6 you may encounter multiple features and improvements in API that are available only for later API levels. This may be quite annoying. At some point I chose to drop 1.6 support, but this choice is personal.
So, I would strongly recommend choosing 2.+ device as Android developers phone.