Several tools for developing Windows Mobile
applications are available from Microsoft. Developers can choose between
writing code in native C/C++ or in managed code targeting the .NET
Compact Framework. Not all .NET languages are supported—only C# and
VB.NET. It is not possible to use managed C++ or other .NET languages.
Coding Environments and SDKs
There are two
primary development environments for writing Windows Mobile code: Visual
Studio and Platform Builder. Visual Studio is for application
developers, and Platform Builder is for developers building new embedded
platforms or writing device drivers. Most developers will use Visual
Studio, whereas OEMs and device manufacturers are more likely to use
Platform Builder.
Visual Studio and the Microsoft SDKs
The most popular Windows
Mobile development environment is Microsoft’s Visual Studio. Visual
Studio includes “Smart Device” templates for creating Windows Mobile
applications. Additionally, Visual Studio integrates application
deployment and debugging technology to assist during the development
cycle. Creating Windows Mobile
applications without Visual Studio is possible, but the process is much
more manual. Unfortunately, the Express editions of Visual Studio do
not support embedded devices, so a paid Visual Studio license is
required.
In addition to Visual
Studio, the Windows Mobile SDK is required. The SDK contains all of the
header files, libraries, and tools necessary to build and deploy
applications. When a new version of Windows Mobile is released,
Microsoft publishes a new SDK version. Newer SDK versions contain the
definitions and libraries required to leverage new functionality. At the
time of this writing, the most current version of the Windows Mobile
SDK is the Windows Mobile 6 Professional and Standard SDK Refresh. The
SDK installation process registers newly installed SDKs with Visual
Studio, and the SDK will become selectable during the
application-creation process.
Platform Builder
The secondary
development environment for Windows Mobile is Microsoft’s Platform
Builder. The name says a lot about what it does—Platform Builder enables
developers to pick and choose the components they want for a particular
embedded platform. If you’re doing Windows CE development and creating a
new device, then Platform Builder is an absolute necessity. In the case
of Windows Mobile, Microsoft itself assembles the platform and chooses
the components to include. Windows Mobile device developers will also
use Platform Builder to create their OALs. If you’re developing or
testing user applications on Windows Mobile, avoid Platform Builder and
use Visual Studio instead. The Platform Builder application must be
purchased from Microsoft. Trial versions are available for download from
Microsoft.com.
Emulator
Microsoft provides a device
emulator and images that can be used to mimic almost any Windows Mobile
device currently available on the market. These images only contain
features present in the base operating system, and do not include any
applications specific to device manufacturers or wireless operators. In
addition to base image emulation and debugging, the emulator supports
emulation of network cards, cell networks, GPS towers, and SD cards.
Because the emulator allows so much control over a device’s
functionality, it is a perfect test bed for evaluating Windows Mobile
security features and the robustness of individual components.
Microsoft Device Emulator
The Microsoft Device Emulator,
version 1.0, is included with Visual Studio 2005–2008 and can be
downloaded for free from Microsoft’s website (see Figure 1).
The
most current version available at the time of this writing is 3.0. If
you’re developing on Windows Vista or above, version 2.0 or above is
required to support cradling of the device.
The emulator includes
several Windows Mobile images, and Microsoft provides new images
whenever versions of Windows Mobile are released. Images are distributed
for free from Microsoft’s website. All Windows Mobile SKUs are
supported, so it is easy to test the differences in behavior among the
various SKUs. The emulator can be run independently from Visual Studio
or started from Visual Studio directly. If the emulator is linked to
Visual Studio, then application deployment and debugging becomes a
“one-click” affair.
To automate programs running
on the emulator, use the Device Automation Toolkit (DATK). This toolkit
includes tools for dumping the graphical elements of an application and
then automating them using a .NET Framework API. The API is a little
unwieldy, and tests can be difficult to debug. Although not perfect, the
DATK can be very helpful when you’re trying to repeat application
tests.
Device Emulator Manager
Use
the Device Emulator Manager (dvcemumanager.exe) for choosing between
images and controlling image power on/power off state (see Figure 2).
This tool is installed with the emulator and can control all the
currently installed images. Images can be started, stopped, and cradled
from within this tool. There is also a command-line tool
(DeviceEmulator.exe) for controlling individual images; this executable
is installed in the emulator’s program files directory.
In addition to the GUI and
command-line interfaces, Device Emulator 3.0 introduces the
IDeviceEmulatorManager COM interface. This interface can be used to
discover currently installed images and control them. If you’re
performing fuzzing or other repetition-based testing, the COM interface
is helpful for controlling images.
Cellular Emulator
The Windows Mobile SDK
includes a cellular emulator capable of emulating the voice, data, and
SMS portions of the cellular network (see Figure 3).
The cellular emulator communicates with the emulated device using the
device’s serial ports. It is also possible to send fake SMS messages to
the device to see how the device behaves.
The
cellular emulator is helpful to evaluate the cellular features of
Windows Mobile when a real device or cellular network is not available.
The cellular emulator is included in the Tools portion of the Windows
Mobile 6 SDK.