複製鏈接
請複製以下鏈接發送給好友

AIF

(程序信息文件)

鎖定
AIF,程序信息文件。
中文名
AIF
類    型
程序信息文件
生成方式
GUI工具
作    用
嵌入, 隱藏等

AIF簡介

應用程序信息文件,其擴展名為.aif文件,用來存儲與應用程序相關的數據,這裏的信息包括應用程序的:
各種尺寸的icon
所支持語言的標題
拓展性,如嵌入, 隱藏等
MIME-type支持屬性
aif文件可以用如下幾種方法來生成:
通過GUI工具AIF Builder
通過手寫一個Aiftool資源文件。
如果你要手寫一個Aiftool資源文件:
如果你使用的是C++,你應該指明在abld處理Aiftool的處理,我們可以將AIF關鍵字安插在你的.mmp文件中,如下:
AIF DDBouncingBall.aif ..\Aif DDBouncingBallAif.rss \
c12 DDBouncingBallIcon.bmp DDBouncingBallIcon_mask.bmp DDBouncingBallIcon_42x22.bmp DDBouncingBallIcon_42x22_mask.bmp

AIF執行命令行Aiftool工具

我們使用C++reader和writer類來管理存儲在aif文件中的數據(其中wirter類是很少使用的)。程序可以在沒有aif文件的狀況下運行,在這種情況,一個缺省的圖標被使用——一般是一個問號(依小糊塗看不然,缺省的在s60至少不是問號,而是個拼圖狀的東東:);不支持MIMI類型;不支持embedding;不支持新文件的產生;缺省的標題就是它可執行文件的名字,不過沒有擴展名。

AIF構建方式

概述下面的列子演示了怎麼去生成一個應用程序信息文件,你必須:
生成一個資源定義文件(rss文件)這個文件中包含了一個結構,裏面定義了應用程序的UID,標題,圖標的數目,capabilities,以及MIME類型支持級別。
生成一個image和mask bitmap以便在shell中標識該程序。

AIF生成資源定義文件

最容易的方法就是拷貝一個現成的資源文件來修改修改,主要是標題,UID,以及圖標的數目。大家可以看下面的列子:
#include <aiftool.rh>
RESOURCE AIF_DATA
{
// uid
app_uid=0x10004299;
// captions
caption_list=
{
CAPTION { code=ELangEnglish; caption="Hello"; },
CAPTION { code=ELangFrench; caption="Bonjour"; }
};
// icons
num_icons=2;
// capabilities
embeddability= KAppEmbeddable;
hidden=KAppNotHidden;
newfile= KAppSupportsNewFile;
// MIME types
datatype_list=
{
DATATYPE { priority=EDataTypePriorityNormal; type="text/html"; },
DATATYPE { priority=EDataTypePriorityLow; type="text/plain"; }
}
the include file 這裏aiftool.rh資源頭文件應該放置在每個資源定義文件的頂部,這個文件定義了aif文件的結構,包括所有支持的語言以及默認的aif文件
capabilites。
include <aiftool.rh>
這個aiftool資源頭文件存放在標準的c++包含目錄:\Epoc32\Include\
UID 這裏的UID(0x10004299)是用來標識程序的唯一性數字,同樣的UID也定義在工程文件中(mmp)。開發者可以從symbian developer network website獲得未使用的UIDs
Captions 標題是和圖標一起顯示在shell中的,下面標識標題為英文和法文都準備了:
caption_list=
{
CAPTION { code=ELangEnglish; caption="Hello"; },
CAPTION { code=ELangFrench; caption="Bonjour"; }
};Icons 資源定義文件還指明瞭本程序所使用的圖標數目,每個圖標都是由一個icon bitmap和一個mask所組成的,在這個列子裏,有2個圖標,因此圖標文件將包含4個bitmaps(關於mask,前面已經講的很清楚了:) num_icons=2;
Capabilities Capabilities用來表示應用程序是embeddable,not hidden, 以及是否允許從system shell中產生新的文檔。
MIME Types datatype_list語句塊表明該應用程序是和HTML以及plain text files相聯的。

AIF編譯方式

概述當你已經產生了一個適當的資源文件和位圖後,你必須將這些都編譯在一個單獨的二進制aif文件中,你可以用如下兩個方法:

AIF使用abld來編譯

使用命令行工具aiftool和bmconv .

AIF使用abld進行編譯

使用abld工具編譯時,我們需要在mmp工程文件中使用aif語句塊,它應該列出目標文件和源文件的路徑名,以及bitmaps文件,如
aif hello.aif helloaif.rss icon1.bmp iconmask1.bmp icon2.bmp iconmask2.bmp
指明要在應用程序目錄中編譯成hello.aif,它是從源文件helloaif.rss中,以及icon1.bmp已經icon2.bmp和他們的相關的mask。注意這裏mask bitmap必須緊跟在相關的icon後面。
在工程進行abld操作時才進行aif文件的編譯,abld會調用低層的aiftool和bmconv來編譯aif文件。這些工具也可以直接使用。

AIF使用aiftool及bmconv編譯

位圖必須要轉化為一個單獨的multi-bitmap(.mbm)文件,這使用的是bitmap轉換工具bmconv,你需要提供一個bitmap列表給bmconv,注意mask也是必須的。

AIF生成aif文件

Aiftool將編譯資源定義文件,這要和mbm文件一起,在aif文件中,如:
aiftool hello hello.mbm
這裏使用hello.rss和hello.mbm,然後產生hello.aif。