MTK平台10A添加资源方式

    对MTK还不太熟,只是知道添加资源的大概步骤。以前都是在09A上添加的,听说10A变化很大,还好有一份官方文档《10A_MMI_Resource_Training.pdf》写的很详细。就动手做一下吧。

    先回顾一下09A添加资源的方法:

   1、在plutommi/mmi/Inc/MMIDataType.h文件增加资源ID范围。

   2、在MMI目录下新增MyFirstApp文件夹。编写XXXdef.h文件用于定义字符串、屏幕、图片ID。编写XXX_entry.c用于编写菜单高亮函数和入口函数。

   3、把res_XXX.c放到plutommi\Customer\CustResource\PLUTO_MMI\Res_MMI目录下,在该文件编写population_XXX()函数用于添加菜单、字符串、图片等资源。大概要用到ADD_APPLICATION_MENUITEM、ADD_APPLICATION_STRING2、ADD_APPLICATION_IMAGE2、ADD_APPLICATION_MENUITEM_HILITE_HANDLER等。

   4、然后找到Populate_Res.c文件,在PopulateResData()函数里面调用刚才编写的函数。会有多个,注意看是哪个宏起作用。

   5、在plutommi\Customer\CustResource\PLUTO_MMI\ref_list.txt增加字符串。

   6、在plutommi\Customer\Images\XXXX对应的目录下增加图片,增加后要重新压缩成image.zip

   7、在GlobalMenuItem.h增加菜单ID。

   8、在Res_MainMenu.c找到相应的菜单,在下面增加子菜单。会有多个PopulateMainMenuRes函数,要看具体的宏开关,__MMI_VERSION_2__代表以列表的方式显示菜单。

要这么多步骤,然后看看《10A_MMI_Resource_Training.pdf》吧。

    文档开头讲了新架构的目的,是为了减少修改文件的次数和操作步骤,当编译出错时有更清晰的LOG并且更容易找到错误,减少编译时间。

    新架构的特点:1、在Build目录下会生成资源编译的LOG。2、自动生成资源ID的定义,并放在CustomerInc目录下。(至于怎么增加资源在下文提到。)3、在ResGenerator目录下会生成Debug目录,如果资源编译出错可以根据命令行到这里查找LOG。还有Temp目录,该目录用于存放编译时的.o文件。4、把添加资源的文件移到你的应用程序目录,可以建一个名为XXX_Res的文件夹,新建资源文件命名为XXX.res,再建一个ref_list_xxx.txt文件存放字符串对应的各国版本。

    再仔细对比下两种架构的区别吧:

    1、增加资源ID范围。老的版本是在MMIDataType.h文件,而新的是在mmi_res_range_def.h完成。而且代码有一点点修改:

    Old:

    Step1:
    RESOURCE_BASE_RANGE(APP_FILEMANAGER, 600),
    Step2:
    #define FILE_MANAGER_BASE ((U16) GET_RESOURCE_BASE(APP_FILEMANAGER))
    #define FILE_MANAGER_BASE_MAX ((U16) GET_RESOURCE_MAX(APP_FILEMANAGER))
    RESOURCE_BASE_TABLE_ITEM(APP_FILEMANAGER)
    New:
    Step1:
    RESOURCE_BASE_RANGE(APP_FILEMANAGER, 600),
    Step2:
    #define FILE_MANAGER_BASE ((U16) GET_RESOURCE_BASE(APP_FILEMANAGER))
    #define FILE_MANAGER_BASE_MAX ((U16) GET_RESOURCE_MAX(APP_FILEMANAGER))
    RESOURCE_BASE_TABLE_ITEM_PATH(APP_FILEMANAGER, ".\\mtkapp\\FileMgr\\fmgr_res\\")

   2、定义资源ID。老版本是用户自己定义在xxxdef.h文件中。新版本会在plutommi\Customer\CustomerInc目录自动生成mmi_rp_app_XXXX_def.h文件。

   3、增加资源。老版本是编写一个Res_XXX.c文件并放到plutommi\Customer\CustResource\PLUTO_MMI\Res_MMI目录下。新版本只要在你的应用文件XXXRes目录下新建一个XXX.res文件,在该文件新增资源就行了。同时你可以看到系统在plutommi\Customer\ResGenerator\debug\res目录下为你生成了一个mmi_rp_app_XXX.c文件。

   4、增加资源的方法。可以参考闹钟的资源添加方法。一个老版本的例子:

void PopulateAlarmRes(void)
{
	ADD_APPLICATION_STRING2(ALARMS_SNOOZE_STRINGID,"Snooze","Snooze alarm button.");
	ADD_APPLICATION_STRING2(ALARM_REPEAT_STRING,"Repeat","Repeat");
        ADD_APPLICATION_MENUITEM((MENU_ID_ALM_AUDIO_OPT_FMRADIO,0,2,MENU_ID_ALM_FMRADIO_CHANNEL_LIST, 
		MENU_ID_ALM_FMRADIO_MANUAL_INPUT,SHOW,NONMOVEABLE,DISP_LIST,STR_GLOBAL_OPTIONS,0));
        ADD_APPLICATION_MENUITEM_HILITE_HANDLER(ORGANIZER_ALARM_MENU, HighlightAlmMenu);
}


新版本:

<APP id="APP_ALARM">
    /* When you use any ID of other module, you need to add
       that header file here, so that Resgen can find the ID */
    <!--Include Area-->
    <INCLUDE file="GlobalResDef.h"/>
    <INCLUDE file="GlobalMenuItems.h"/>
    <INCLUDE file = "mmi_rp_app_mainmenu_def.h"/>
    <!-----------------------------------------------------String Resource Area----------------------------------------------------->
    /* String ID of you Application, we will get string from ref_list.txt for all languages */
    <STRING id="STR_ID_ALM_STRINGID"/>
    <STRING id="ALARMS_SNOOZE_STRINGID"/>
    <MENU id="ORGANIZER_ALARM_MENU" 
    	  type="APP_MAIN" 
    	  parent="MAIN_MENU_EXTRA_MENUID"
    	  str="STR_GLOBAL_ALARM"
    	  img="ORGANIZER_MENU_ALARMS_IMAGEID"
    	  highlight="HighlightAlmMenu"
    	  shortcut="ON" shortcut_img="ORGANIZER_MENU_ALARMS_IMAGEID" launch="EntryAlmMenu">

</APP>
   5、插入菜单。相应地主菜单的文件也变化了,老版本是在Res_MainMenu.c中,而新版本是在MainMenu.res中修改了。

到这里已经可以完成菜单的添加了。如果把文档看下去就是每个XML标签的细节。现在没什么时间了,后面再续写。

还有一点编译查LOG得小经验记录下:

   1、查看option.mak的宏有没有起作用、库有没有被编译到,可以在build\工程名\log\infomake.log查得到。

   2、查看菜单有没有添加上,可以找plutommi\Customer\CustResource\CustMenuTree_Out.c文件,里面有所有菜单的目录树。

   3、要查看MMI_Features.h的宏有没有被编译到,可以查看所有build\工程名\MMI_Features.h文件。

   4、如果是使用ADD_APPLICATION_MENUITEM_HILITE_HANDLER绑定高亮菜单的时间,资源编译完成后可以在Mmi_menu_handlers.h检查是否有对应上。

阅读更多
个人分类: MTK编程指南
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭