Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries. Thanks for all your past and future contributions.
THE MATERIAL CONTAINED HEREIN IS PART OF THE SYMBIAN OS LIBRARY PUBLISHED WITH S60 AND UIQ SDKS (S60 for 3rd and 5th editions). NO ACKNOWLEDGEMENT WAS GIVEN AND, IT IS NOT CLEAR WHETHER PERMISSION HAS BEEN GRANTED FOR ITS REPRODUCTION.
An emulator is a desktop application (Windows, Mac, Linux) which simulates the phone hardware and operating system on the PC. This enables the development of phone software to be substantially desktop-based, with only the final development stages focussed on the hardware. Use of the emulator saves time in the early stages of development, since you can use the development IDE to debug the code easily and resolve most initial bugs and design problems. For example, if a panic occurs in your code, the debugger can provide comprehensive information to diagnose the error condition that caused it. Use of the emulator also reduces the number of times you need to create an installation package, transfer it to the phone and install it, which would otherwise be time consuming in the early phases of development.
The Symbian OS emulator for Windows provides as faithful an emulation as possible of the OS running on target hardware, and has processes and scheduling that are almost identical to those on a real device. However, there are necessarily some differences, for example the memory model for a real phone is different to that of the emulator and the underlying hardware is different, so it is not possible to use the same device driver and hardware abstraction layer code on both the emulator and a real phone. For this reason, the emulator cannot be used for all development and, for low-level programming such as that for device drivers, target hardware cannot be emulated.
One of the differences between a phone handset and the emulator may be observed as a slight difference in the pixel sizes of each. Text may be displayed differently on the phone to the way it appears on the emulator. Another difference is that the emulator programming environment tends to be more forgiving than that of the target hardware. For example, code which uses non-constant static variables will compile for the emulator, but will not compile for the ARM platform. Sometimes code which may run successfully on the emulator will fail on the hardware.
To eliminate any issues that are caused by differences between the emulator and a real phone, all application code must be run and tested thoroughly on the phone itself as well as the emulator before it is released. You can find more detail in Deploying code on hardware.
The emulator is most commonly used as part of debugging a project, in which case it is usually started by using Run or Debug from within the IDE.
Emulators for Symbian OS
On either platform, it can also be started from a command prompt by entering the command:
EPOC was an earlier name for Symbian OS, and survives in various places, such as in this executable name. The command runs a debug build of the emulator (epoc.exe, found in the SDK directory \epoc32\release\winscw\udeb), which is what you will normally work with, as it allows you to debug your programs through the IDE. There's also a release build, which is quicker to start up (found under \epoc32\release\winscw\urel) and invoked by typing the following:
C:\> epoc -rel
A new window should then appear showing an emulation of the phone’s display, plus a surround that includes some navigation and phone buttons. The S60 and UIQ SDKs each customise the display to mimic the smartphone types supported by that UI platform.
The S60 emulator.