No support for placing or receiving actual phone calls. You can
simulate phone calls (placed and received) through the emulator
console, however.

No support for USB connections

No support for device-attached headphones

No support for determining network connected state

No support for determining battery charge level and AC charging state

No support for determining SD card insert/eject

No support for Bluetooth

IMO you can use emulator to simplify UI development, to view UI on "device screen", to be sure that app layout is ok, app can be run, you can test some special cases by simulating gps position, network speed or messaging etc. But testing on real device is a must.

Do you have any idea why this limitation is enforced?
–
JiriJul 13 '09 at 12:36

2

It's a licensing issue. The emulator is based on the open source build of Android, but the proprietary Google apps need agreements with the handset vendor or mobile operator.
–
mparazJul 31 '09 at 7:15

2

So, if you want to install android on some new bizarre device, you cant have Google apps there either, am i right?
–
JiriJul 31 '09 at 14:51

1

the map heap size per app is limited to 16/24/48MB on a real device depending on the device. The emulator usually is limited to 16MB per app just like on of the older devices like G1. This parameter you cannot set when creating an avd, but you can pass it as parameter when launching the emulator, i.e.: -prop dalvik.vm.heapsize=24m This way you can also simulate the correct 'heap per app' size correctly for your device.
–
Mathias LinJul 14 '10 at 0:36

I'd say the main thing is that there are several "real devices" currently using Android, and there will be more, with different hardware endowments -- some will have GPS and some won't, ditto for touchscreen, real keyboard as opposed to virtual on-screen one, camera resolution, etc, etc.

While the OS will do a lot of the heavy lifting for you, you still want to make sure your design a user experience that makes sense on every Android device you intend to support, despite the variation in their HW features -- in this sense, designing applications for Android is more similar to designing them for, say, Linux, Windows, or the Web (cater for a wide variety of hardware-configuration details), rather than e.g. Macs or iPhone (where you need to consider a much narrower set of possible HW configurations).

The emulator is (or tries to be;-) "one" Android device -- but there will be others ("real" ones;-) with different screen resolutions, input peripheral devices, etc, etc...

One cannot test touch events with emulator which has to be tested only by means of mouse clicks on emulator which any developer going to develop an application based on touch screens should be aware of.

One comment regarding google accounts: With version 8 of the google APIs for Android 2.2, you can add a google account on the device. However, it will only allow authentication for tests of the google APIs (e.g. google documents) but not syncing of contacts etc.

In simple term an emulator is a device that runs on your computer screen whereas a real device is something you can hold. There may be a few differences when it comes to use such as you can not use an em. I have written a detailed post about this you may consider reading.