Top Banner
Symbian 程程程程程程
23

Symbian 程序结构分析

Mar 19, 2016

Download

Documents

mihaly

Symbian 程序结构分析. 主要内容. 程序结构 工程组织 应用图标及启动 资源文件 打包图片 打包文件格式 多视图程序. 程序结构. S60 应用框架 MVC 设计模式. 程序结构. GUI 应用运行分析 代码分析 应用类 文档类 AppUi 类 启动代码 运行分析. 工程组织. bld.inf PRJ_PLATFORMS WINSCW ARMV5 GCCE PRJ_MMPFILES gnumakefile icons_scalable_dc.mk gnumakefile ..\help\build_help.mk - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Symbian 程序结构分析

Symbian程序结构分析

Page 2: Symbian 程序结构分析

主要内容程序结构工程组织应用图标及启动资源文件打包图片打包文件格式多视图程序

Page 3: Symbian 程序结构分析

程序结构S60 应用框架MVC 设计模式

Application Document AppUi View

Model

Page 4: Symbian 程序结构分析

程序结构GUI 应用运行分析

代码分析应用类文档类AppUi 类启动代码

运行分析

Page 5: Symbian 程序结构分析

工程组织bld.inf

PRJ_PLATFORMSWINSCW ARMV5 GCCE

PRJ_MMPFILESgnumakefile icons_scalable_dc.mkgnumakefile ..\help\build_help.mkExam0303NewGui.mmp

Page 6: Symbian 程序结构分析

工程组织工程组织文件 *.mmp

TARGET Exam0303NewGui_0xE2F675DA.exeTARGETTYPE exeUID 0x100039CE 0xE2F675DA

SOURCEPATH ..\srcSOURCE Exam0303NewGui.cppSOURCE Exam0303NewGuiApplication.cpp

Page 7: Symbian 程序结构分析

工程组织SOURCEPATH ..\data

START RESOURCE Exam0303NewGui.rss HEADER TARGET Exam0303NewGui_0xE2F675DA TARGETPATH resource\apps END //RESOURCE START RESOURCE Exam0303NewGui_reg.rss TARGET Exam0303NewGui_0xE2F675DA_reg TARGETPATH \private\10003a3f\apps END //RESOURCE

Page 8: Symbian 程序结构分析

工程组织USERINCLUDE ..\incUSERINCLUDE ..\helpSYSTEMINCLUDE \epoc32\include

LIBRARY euser.libLIBRARY apparc.libLIBRARY cone.lib

LANG SCVENDORID 0SECUREID 0xE2F675DACAPABILITY ReadUserData

Page 9: Symbian 程序结构分析

应用图标及启动 注册表资源文件

1. #include "Exam0303NewGui.hrh"2. #include "Exam0303NewGui.rls"3. #include <appinfo.rh>4. #include <Exam0303NewGui_0xE2F675DA.rsg>5. 6. UID2 KUidAppRegistrationResourceFile7. UID3 _UID38. 9. RESOURCE APP_REGISTRATION_INFO10.{11.app_file="Exam0303NewGui_0xE2F675DA";12.localisable_resource_file = qtn_loc_resource_file_1;13.localisable_resource_id = R_LOCALISABLE_APP_INFO;14.15.embeddability=KAppNotEmbeddable;16.newfile=KAppDoesNotSupportNewFile;17.}

Page 10: Symbian 程序结构分析

应用图标及启动在程序资源文件中定义下面的资源

RESOURCE LOCALISABLE_APP_INFO r_localisable_app_info{short_caption = qtn_caption_string;caption_and_icon = CAPTION_AND_ICON_INFO{caption = qtn_caption_string;number_of_icons = 1;icon_file = "\\resource\\apps\\Exam0303NewGui_0xE2F675DA.mif";};}

Page 11: Symbian 程序结构分析

打包图片 打包矢量图片

使用 *.mk 文件 例子 Icons_scalable_dc.mk

1. ifeq (WINS,$(findstring WINS, $(PLATFORM)))2. ZDIR=$(EPOCROOT)epoc32\release\$(PLATFORM)\$(CFG)\Z3. else4. ZDIR=$(EPOCROOT)epoc32\data\z5. endif6. 7. TARGETDIR=$(ZDIR)\resource\apps8. ICONTARGETFILENAME=$(TARGETDIR)\ImiChatApp.mif9. 11. ICONDIR=..\gfx12. ... ...13. RESOURCE : $(ICONTARGETFILENAME)14. 15. $(ICONTARGETFILENAME) : $(ICONDIR)\qgn_menu_ImiChat.

svg16. mifconv $(ICONTARGETFILENAME) \17. /c32 $(ICONDIR)\qgn_menu_ImiChat.svg18. ... ...

Page 12: Symbian 程序结构分析

资源文件程序资源文件格式

资源文件头资源文件体

Page 13: Symbian 程序结构分析

资源文件 资源文件头

// 代码块 1 资源标识符NAME EXAM // 4 letter ID// 代码块 2 INCLUDES#include <eikon.rh>#include <avkon.rsg>

// 代码块 3 定义资源文件签名 , 这个资源应该是空的RESOURCE RSS_SIGNATURE

{}

// 代码块 4 缺省的文档名称RESOURCE TBUF r_default_document_name

{buf="EXAM";}

// 代码块 5 定义应用默认的菜单和 CBA 栏按钮RESOURCE EIK_APP_INFO

{menubar = r_menubar;cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT;}

Page 14: Symbian 程序结构分析

资源文件资源文件体

RESOURCE STRUCTNAME res_name{

resource-initializer-list}

Page 15: Symbian 程序结构分析

资源文件编译资源文件

Page 16: Symbian 程序结构分析

资源文件定义菜单

1. RESOURCE MENU_BAR r_menubar2. {3. titles =4. {5. MENU_TITLE { menu_pane = r_menu;

}6. };8. }9.

Page 17: Symbian 程序结构分析

资源文件 定义菜单

10. // r_menu11. // Menu for "Options"12. RESOURCE MENU_PANE r_menu13. {14. items =15. {16. // added the new Options menu command here17. MENU_ITEM18. {19. command = ECommand1;20. txt = “Message”;21. },22. MENU_ITEM23. {24. command = ECommand2;25. txt = qtn_command2;26. },27 . … …28. };29. }

Page 18: Symbian 程序结构分析

资源文件 处理菜单命令

void CExam0303NewGuiAppUi::HandleCommandL(TInt aCommand){switch (aCommand)

{case EEikCmdExit:case EAknSoftkeyExit:

Exit();break;

case ECommand1://break;

default:Panic(EExam0303NewGuiUi);break;

}}

Page 19: Symbian 程序结构分析

资源文件 定义 CBA 栏

RESOURCE CBA r_confirmation_softkeys_ok_cancel { buttons = { CBA_BUTTON { id = EAknSoftkeyOk; txt = “ok”; }, CBA_BUTTON { id = EAknSoftkeyCancel; txt = “cancel”; } }; }

Page 20: Symbian 程序结构分析

资源文件定义字符串资源

定义本地化字符串资源#define qtn_caption_string "Exam0303NewGui"

定义资源RESOURCE TBUF32 r_caption_string { buf=qtn_capti

on_string; } 使用字符串定义

HBufC* textResource = StringLoader::LoadLC(R_CAPTION_STRING);

CAknInformationNote* informationNote;informationNote = new ( ELeave ) CAknInformationNot

e;informationNote->ExecuteLD( *textResource);CleanupStack::PopAndDestroy(textResource);

Page 21: Symbian 程序结构分析

BMP图片打包在 mmp 文件中打包位图

START BITMAP vas.mbmHEADER

TARGETPATH \resource\appsSOURCEPATH ..\lookandfeel\bmpSOURCE c12 vas_icon.bmpSOURCE c12 vas_icon_mask.bmpSOURCE c12 vas_title.bmpSOURCE c12 vas_title_mask.bmp

END

Page 22: Symbian 程序结构分析

打包文件格式1. ; 程序支持的语言定义2. &EN3. 4. ; 标准 SIS 文件头5. #{"Exam0303NewGui"},(0xE2F675DA),1,0,06. 7. ; 本地开发商名称8. %{"Vendor-EN"}9. 10. ; 开发商名称11. :"Vendor"12. 13. ; 安装程序支持的 S60 版本14. [0x101F7961], 0, 0, 0, {"Series60ProductID"}15. 16. ; 安装的文件17."\Symbian\9.1\S60_3rd_MR\Epoc32\release\gcce\urel\Exam0303NewGui_0xE

2F675DA.exe" -"!:\sys\bin\Exam0303NewGui_0xE2F675DA.exe"

18. … …

Page 23: Symbian 程序结构分析

打包文件格式S60 平台 UID 对照表