Android Development – Why Android Created an Emulator Instead of a Simulator

androidios

From https://stackoverflow.com/questions/4544588/difference-between-iphone-simulator-and-android-emulator

The difference between emulators and simulators is that emulators mimic the software and hardware environments found on actual devices. Simulators, on the other hand, only mimic the software environment; they otherwise have access to all of the host system's hardware resources such as disk space, memory and processor speed.

Apple always harps on the importance of device testing because iPhone Simulator does not emulate an iPhone processor, disk drive, memory constraints and whatnot. You hardly ever get memory warnings unless your Mac is struggling to manage resources itself, unless you simulate (again) memory warnings from the Simulator's menu item.

Though android emulator emulates the ARM processors and certain hardware, it still doesn't do a good job of matching the CPU performance.

Being an emulator it can match Memory consumption well, it can emulate certain simple devices well but fails when the devices gets complicated for example mobile GPU and HW media decoders. And as the emulation logic works on translating each ARM instruction to X86 instruction and executing its a performance hog and by design not cycle accurate.

My Question: Why Android created emulator rather simulator?

Best Answer

Nobody but Google knows why they made that decision, but here's my best guess:

Android is an open platform, so there are a lot of different hardware configurations out there. Being able to emulate different hardware configurations is a big boon for developers, in that it greatly reduces the need to have actual devices to test on. This keeps the costs down for developers, so encourages them to develop for Android.

Trying to match performance without using the actual hardware is a fool's game in this context - PCs have different specs too! It's also of not of concern to many (I would guess most) developers.

Related Topic