o me, half the battle of starting development on a new mobile platform is fighting issues with new tool chains. Sometimes, it’s maturity issues: the tools just aren’t ready. Other times it’s documentation issues: the tools just aren’t well documented. Regardless, the simple process of moving to a new mobile platform fills me with a mixture of excitement and dread as I contemplate selecting a tool chain, grappling with the various unknowns, and discovering what isn’t documented or functional while simultaneously executing against whatever project deadline that’s already been set.
Part of the problem is the cost of providing the SDK for a new platform; manufacturers typically cobble together an SDK consisting of GUI and command-line tools around a well-known product like Microsoft Visual Studio, and the result is as uncomfortable to use as it probably was to build. The remainder of the problem is a confluence of factors: platform vendors seldom have the resources and abilities of tool vendors, lack of experience with a new platform makes it harder to determine what developers actually need, and the rapid changes inherent in the early part of a platform’s life cycle leads to a lot of special cases and awkward-to-use tools. The Nokia SDK for Series 60 was an excellent example of all of this; while it did the job for software developers well, it had legacy bits that dated back to Symbian’s Psion history, and was, to put it mildly, clunky at best. Not so with its replacement, Carbide, from Nokia. Carbide comes in two flavors: Carbide.c++ for doing Series 60 development in C++, and Carbide.j, the follow on to Nokia’s J2ME developer kits for Series 40 and Series 60.
This article takes a closer look at Carbide.c++, the SDK for doing Series 60 development in C++. J2ME developers should be sure to check out Carbide.J, their environment for J2ME developers.
To use Carbide.c++, you must have a PC with a recent version of Microsoft Windows installed, along with ActiveState Perl 5.6. You don’t need to have Eclipse installed; Carbide.c++ includes Eclipse in its installer. Simply download the Carbide.c++ installer from Nokia and follow the instructions. When you’re done you will also need to download and install at least one S60 or UIQ SDK; the Carbide.c++ installer presents a Web page with links to these, so that’s easy. Be prepared to wait a while during the downloads and installation, though?you’re going to be downloading a lot (hundreds of megabytes) of data.
Based on Eclipse
The key distinguishing factor of Carbide.c++ is that it’s based on Eclipse, the open developer platform for building software development kits for a variety of purposes. Unlike Carbide’s predecessor, which was built as a series of tools that were loosely connected to Microsoft Visual Studio, Carbide.c++ is built atop Eclipse, and includes over a hundred Eclipse plug-ins to facilitate development for Series 60.
Like any Eclipse environment, the environment includes mechanisms for maintaining your project, a group of related source files that make up your application. Within Eclipse you can edit source files, perform builds, and do all of the other IDE-based activities you’d expect from any modern environment. The editor itself is equally full-featured, with support for keyword and syntax coloring, project-wide search, and shortcuts to help identify the correct Symbian interface as you’re coding.
The plug-ins, provided by Sybian, Nokia, and CodeWarrior, include support for base Symbian development, replacing the plethora of command-line utilities for managing build configurations, Application Information Files (AIF), and Multiple Bitmap (MBM) files, and so on. Nokia also provides plug-ins for Series 60 and UIQ development, and although it’s not obvious to end developers, the support for building and testing applications is actually organized as a set of plug-ins, too.
Working with Wizards
Symbian development?and thus, by extension, Series 60 development?is a framework-based process. Unlike other platforms like Palm and BREW, in which when you start you face a blank page in which you write code, much of what you do in developing code for Symbian is to subclass and extend existing classes in C++. Some tool chains for Symbian programming?notably those provided by CodeWarrior or Borland on retail basis?provided wizards that automated much of this process. Carbide.c++ includes the same capability, with wizards for creating both S60 and UIQ applications, and then within those wizards, specific kinds of applications such as control-, dialog-, or view-based applications.
With the wizard, once you choose the kind of application you’re building, you choose the appropriate SDK against which you will be building your application. This in itself is a welcome relief; gone are the days of playing with environment variables trying to coerce an application to build against a different SDK version!
Once you select an SDK, the wizard prompts you with additional questions to fine-tune the project you’ve created. Once complete you can edit the freshly created C files to begin writing your application.
Building, Launching and Debugging
Every aspect of application building and debugging is performed within the Carbide.c++ environment, including options such as include paths, application UIDs, compilation of resources including the AIF and MBMs, and signing keys for the Symbian Self-Signing program.
Executing a project requires what the tool chain refers to as a “launch configuration” that lumps together the project name, which emulator to use, and any required environment variables. Once configured, the application can be built and executed using a single mouse-click, much like Microsoft Visual Studio. A second button option lets you build for debugging targets; the debugger is just as you’d expect, supporting source-level debugging with stepwise execution, breakpoints, and watchpoints.
Selecting the Right Version for the Job
Carbide.c++ is available in three versions: Carbide.c++ Express is free, while Nokia charges for Carbide.c++ Developer and Carbide.c++ Professional. The first is intended for casual Symbian developers, and has everything you need to create and package an application. If you’re looking for a GUI designer, on-device debugging, or the ability to target specific CPUs, you need to purchase Carbide.c++ Developer. If you’re looking to support unreleased devices, or are actually building Symbian-based devices, it’s wise to invest in Carbide.c++ Professional, which includes support for R&D devices, system-level on-device debugging, and a performance investigator to examine resource use on-handset.
A Much-needed Overhaul
While perhaps not a replacement for Borland or Metrowerks full-blown SDKs for Symbian, Carbide.c++ Express is a much-needed overhaul of the previous tool chain offering from Nokia. A bona fide IDE built atop Eclipse, Carbide.c++ brings together the cumbersome command-line tools necessary for Symbian developers on a budget.