Maemo for mobile developers

beta- version

Getting started

Introduction

n810

Maemo is an open source development platform for Linux-based handheld devices such as Internet Tablets. It is built from widely-used open source components with additional tweaks to integrate well in handheld devices.

An Internet Tablet is a handheld device which provides desktop PC-level support for Internet services (such as Web pages and e-mail). Nokia has released three Internet Tablets running on the maemo platform: the Nokia 770, the Nokia N800, and the Nokia N810. The devices have a high-resolution, 800 x 480 pixel touch-sensitive display.

Maemo uses Hildon Application Framework, based on the open source GTK+ toolkit, as the user interface manager. Although the Hildon/GTK+ libraries are coded in C, bindings for other languages, including C++ and Python, are also available.

The native programming language for Symbian OS devices is C++. So, any S60 developer can take advantage of the Hildon/GTK+ C++ bindings and easily start developing GUI applications for maemo devices. On the other hand, Windows Mobile extensively uses .NET Compact Framework. Writing managed code with .NET CF is quite different from programming with C++, which offers a more direct approach of handling available resources and gaining all the benefits the platform can give. This document demonstrates how a Symbian C++ or Windows Mobile .NET CF developer can get started with developing C++ applications for maemo.

Before you start to write your own C++ applications for maemo, learn more about the maemo platform and the Hildon Application Framework. For more information, see the Overview of the maemo platform section in the maemo tutorial.

Who should read this document?

This document is intended for developers with Symbian C++ or Windows Mobile .NET Compact Framework programming experience who want to develop applications for the maemo platform. Additionally, developers with C++ background can use this document.

It is assumed that the reader has at least some basic knowledge about C++.

For a higher-level description of the maemo platform, read the maemo platform Web page available at Forum Nokia.

About this document

This document often refers to the phrase GNU/Linux workstation. This phrase also refers to the maemo SDK VMWare image run inside a Microsoft Windows workstation.

It is also assumed that the processor architecture for the GNU/Linux workstation is x86 or compatible.

Platform versions used

Syntax used

Commands run inside a GNU/Linux text console:

Lists the directory contents. The current directory is ~/src/myprogram. The symbol '~' means the user's home directory, and the symbol '$' indicates the end of command prompt*.

~/src/myprogram$ ls

Output of the command 'ls':

myprogram.h
myprogram.cpp
Makefile
* "A command prompt (or just prompt) is a sequence of (one or more) characters used in a command line interface to indicate readiness to accept commands". "A prompt usually ends with one of the characters $, %, #, :, > and often includes other information, such as the path of the current working directory". Source: wikipedia.

Summary (table of contents)

  1. Introduction
  2. Comparing maemo and Symbian OS, S60, and UIQ platforms at the architectural level
  3. Comparing maemo and Windows Mobile platforms at the architectural level
  4. The maemo platform and Windows Mobile concepts
  5. The maemo platform and Symbian OS concepts
  6. Maemo SDK concepts
  7. Preparing your development environment
  8. Creating, building, and running a "Hello World" application
  9. Compiling and moving an application to a device
  10. Advanced building and packaging
  11. Resources and localization
  12. Adding more widgets to the Hello World application
  13. Using Eclipse with ESbox
  14. Drawing with GDK/Cairo
  15. Managing application information with GConf
  16. Network programming using sockets
  17. Links