1.编译
MTK使用命令行编译,基本格式为{make 项目名 gprs [r/u/new] [模块名]};
MTK的编译比较缓慢,原则是能remake尽量remake。当remake的时候能指定模块remake是最快的,全部remake较慢主要是头文件展开需要好几分钟到十几分不等因机器性能而异
对于模拟器编译最好是用分布式这会提高不少效率尤其是做全新编译;
2.代码部分(MMI)
a.当我接触一个新的模块时如何寻找模块代码?
方法:步骤一用模块tilte字符串查找对应title的stringid
步骤二用stringid查找res文件里对应的hightlite函数
步骤三以hightlite函数为源头查看代码里的entry函数
步骤四进入entry后注意setkeyhandler的设置,这是程序流程的走向
其他方法:如果我熟悉模块代码就可以直接定位到entry函数这样就省略了步骤一、二、三
小结:MTK利用了预编译的方法来生成资源文件,了解几个宏(例如ADD_APPLICATION_STRING2,ADD_APPLICATION_MENUITEM)是很有必要的,对应模块预编译文件命名习惯为RES_[功能模块].c;
在相应的功能模块里以entry开头函数是模块代码的主入口函数。多阅读代码熟悉MTK的一些命名规则和编程风格对于理解和掌握代码是很重要的。
b.MTK代码如何组织?
从整体上看MTK的代码组织是网状的,区别于ulc的代码以树状代码组织为主。网状代码的组织有其灵活性和复用性的好处,但是给人的阅读和条理性带来了一定的困惑没有树状组织那样直观。
在MMI层,MTK用网状结构多是组织代码流程,对于公用代码多以分层来细分功能,在流程代码之下是窗口代码层(多以show***调用),再之下是控件层,最下面是GDI层。
小结:MTK代码这种架构很符合其turnkey经营的方针,针对前期功能不多的featherphone其代码结构紧凑而有效率。但是由于MTK没有非常明晰的定义出其framework(不仅是gui还包括网络和其它功能接口)
使得三方功能代码参差不齐很影响维护性。
MTK开发小结
最新推荐文章于 2024-02-04 15:23:59 发布