Icons, .AIFs, and .SIS files in Series 60
10 oct. 2003 - 13:55
Keywords :

Turning your program into a nicely packaged application with its own icon and name is not too difficult. However, Symbian and Nokia have succeeded in creating a fair amount of confusion by throwing far more tools into the SDK than is strictly required, with documentation that spans countless dozens of pages.

This document, then, exists for the normal Symbian programmer in the street who wishes to take a simple program with no dependencies and no special language requirements, and package it ready for the real world. However, the subject is lengthy and complex, so expect to refer to the official documentation at least a few times before being able to do this successfully.

1. Things You Will Need

-  Some icons in .bmp format, thus:

  • 44x44 colour bitmap icon
  • 44x44 one-bit mask
  • 42x29 colour bitmap icon
  • 42x29 one-bit mask

-  An application information file with an .aif extension. This is described in section 3.
-  A package file with a .pkg extension. This is described in section 4.

We will not be using AIF Builder or Sisar in this tutorial. It's possible to survive without ever using them.

2. Preparing the Bitmaps

You will need to convert the four bitmaps into a single .mbm (multi bitmap) file using bmconv. Let us assume for the rest of this tutorial that our program is named Myapp. In the directory containing the bitmaps, type bmconv Myapp.mbm icon-44x44-colour.bmp icon-44x44-mask.bmp icon-42x29-colour.bmp icon-42x29-mask.bmp

3. Preparing the .aif File

The .aif file is not a text file! It is generated from a special resource (.rss) file that you must write. Let us name it MyappAif.rss (there will most likely already be a file called Myapp.rss that contains the resources for the program's internal workings). For most simple cases the following template should work:

// MyappAif.rss
#include <aiftool.rh>

RESOURCE AIF_DATA
{
caption_list=
        {
        CAPTION { code=ELangEnglish; caption="My App"; },
        CAPTION { code=ELangFrench; caption="Mon App";}
        };

// Replace the following app_uid with your program's UID.
app_uid=0x12345678;

// The number of icons (not including masks)
num_icons=2;
}

It is vitally important that the UID is the same as your application's UID as listed in the project specification file. If it is not, the icons will not display. If you are uncertain about your UID or UIDs in general, consult the documentation accompanying the Series 60 SDK.

To create the .aif itself, run aiftool MyappAif Myapp.mbm from the directory containing your .rss file and the .mbm file from section 2. Note that the .rss extension is dropped from the first argument to aiftool - you will get a "The system cannot find the file specified" error if you forget to remove it [1].

4. Creating the .sis

The .sis file is the 'installer' file that you'll eventually be sending to your phone. Its construction is determined by a .pkg file, which looks something a little like this:

;Myapp.pkg

;Language - standard language definitions
&EN

#{"Myapp"},(0x12345678),1,0,5

;Supports Series 60 v 0.9
(0x101F6F88), 0, 0, 0, {"Series60ProductID"}

"\Symbian\6.1\Series60\epoc32\release\armi\urel\myapp.app"
   -"!:\system\apps\myapp\myapp.app"
"\Symbian\6.1\Series60\epoc32\release\armi\urel\myapp.rsc"
   -"!:\system\apps\myapp\myapp.rsc"
"\Symbian\6.1\Series60\epoc32\release\armi\urel\myapp.aif"
   -"!:\system\apps\myapp\myapp.aif"

Let's briefly dissect this file, because you'll need to make a few substitutions.

"Myapp" is the name of your application as you want it to appear. (0x12345678) is your application's UID, as discussed in the previous section. The numbers following it are the version number (in this instance we have version 1.0, build 5).

A few lines later, (0x101F6F88) is the Product UID for the type of device your code is designed for. The example given here is for Series 60 version 0.9 and shall be used whenever it is possible. If you use product or platform specific APIs, you shall use the corresponding UID. Here is a list of Common products UIDs.

The lines following this are the files we want to copy, and the paths to copy them to. You will need to replace these with the path and filenames of your compiled code. If you have any other files such as bitmap (.mbm) or sound files, you'll also need to add them. The !: let the user choose the target drive. You can specify C: or E: instead if you want the files to be installed on those drive.

Once this is all in place, do your final compile with abld build armi urel and make a .sis file using makesis myapp.pkg Then all that remains is to send it to your phone! Consult your device's manual for more on this, because it does vary. Most bluetooth devices let you right-click the .sis file in Windows Explorer and use 'Send to -> Bluetooth -> (devicename)', but your mileage may vary.

Happy packaging!

[1] Note that you can also automate the creation of the MBM and AIF files by adding the following line to the application MMP file:

You can check this page if you still need more details.

Tutorial posted octobre 10th, 2003 by gpoulton

Soumis par naive (non vérifié) le mar, 2003-12-30 02:21.

where am i to write the myappaif.rss if i cant use text files?should i add it on the .rss itself of the projects?

i tried using notepad and saving it as .rss but it didnt worked. can you give me a clearer instruction..

i was getting problems using the aifbuider and the sisar.. thank you very much


Soumis par DrRuud (non vérifié) le mer, 2006-09-27 09:03.

The .rss is a text file. Now read the instructions again.

Soumis par Anonymous le mar, 2004-06-01 06:08.

Shoudn't 42x39 really be 42x29?

Soumis par sbwoodside (non vérifié) le dim, 2005-06-05 06:32.

Yes.

Soumis par Anonymous (non vérifié) le jeu, 2005-11-03 16:12.

Hello guys, I'm facing problem while craeting AIF file for my application. I am using NOKIA ADK--AIF Builder to create the aif file, but one thing strange is, while I compile the *.aif file with my *.app and *.rsc file into a *.SIS file, after installed into the phone my whole application can't run as ordinary, after removing the *.aif file only fix this problem, any idea how to solve my problem?

Soumis par DrRuud (non vérifié) le mer, 2006-09-27 09:01.

s/rsc/rss/

Soumis par Rick (non vérifié) le jeu, 2004-07-08 19:22.

A little clarification:

the aif rss file should be saved into the aif folder. And should be named MyApp.rss.

Then the AIF tool command should be; aiftool MyApp MyApp.mbm

this results in a file called; MyApp.aif

this should then be placed into the pakage as described. Something like this

"..\..\..\epoc32\data\z\system\apps\MyApp\MyApp.aif" -"!:\system\apps\MyApp\MyApp.aif"


Soumis par david (non vérifié) le mar, 2004-11-09 04:10.

can i convert windows media player into a sis file?????

Soumis par Gareth Poulton (non vérifié) le mar, 2004-11-09 16:09.

Short answer: no. Long answer: maybe, but you won't be able to install it. It's for Windows, you see. There is a Series 60 version of RealPlayer, though, if you need to play video files.


copyright 2003-2009 NewLC SARL