其实我也觉得这个题目很怪,可是这个MMP的确是我没有注意的地方,今天我重新学习了下这个文件。
. mmp 文件为 S60 工程定义文件。一个 S60 工程通常包含很多文件, . mmp 文件定义了工程内的文件及其组织。这是一个非常重要的文件
由于以前的疏忽,让我在现在的应用中饱受煎熬。
l 例子 .mmp 文件
l .mmp 文件中字段说明
例子.mmp 文件
下面是S60 中Helo World Basic 例子工程.mmp 文件, 本文件显示了.mmp 文件的基本内容:
/* Copyright (c) 2005-2006, Nokia. */
TARGET HelloWorldBasic.exe
TARGETTYPE exe
UID 0x102032BE
SECUREID 0xA000017F
EPOCSTACKSIZE 0x5000
//以上应该都是比较简单的标识,我们在应用中除了程序需求大要改 EPOCSTACKSIZE(堆)大小,这个
//几乎很难用到,倒是栈的大小可以改,但是要注意手机的能力
SOURCEPATH ../src
SOURCE HelloWorldBasic.cpp
SOURCE HelloWorldBasicApplication.cpp
SOURCE HelloWorldBasicAppView.cpp
SOURCE HelloWorldBasicAppUi.cpp
SOURCE HelloWorldBasicDocument.cpp
SOURCEPATH ../data
START RESOURCE HelloWorldBasic.rss
HEADER
TARGETPATH resource/apps 这个我没有看懂是什么
END //RESOURCE
START RESOURCE HelloWorldBasic_reg.rss
#ifdef WINSCW
TARGETPATH /private/10003a3f/apps
#else
TARGETPATH /private/10003a3f/import/apps
#endif
END //RESOURCE
USERINCLUDE ../inc
SYSTEMINCLUDE /epoc32/include
//上面这2个路径很重要,在导入静态库,系统其他库的时候要修改,添加
LIBRARY euser.lib
LIBRARY apparc.lib
LIBRARY cone.lib
LIBRARY eikcore.lib
LIBRARY avkon.lib
LIBRARY commonengine.lib
LIBRARY efsrv.lib
LIBRARY estor.lib
LANG SC
VENDORID 0
CAPABILITY NONE
// End of File
.mmp 文件 中字段说明
一个 .mmp 文件中包含了很多字段。现在我们列出非常重要的一些字段如下:
l TARGET
输出文件名,既创建应用程序可执行文件的文件名
l TARGETTYPE
应用程序类型。在S60 3rd 中应用程序类型永远为.exe
l UID
应用程序的UID 。UID 指定了安装包文件(.pkg) 所需要的东西。更多关于UID 的说明请参见S60 3rd SDK平台UID
l SECUREID
本地(应用程序所安装手机)唯一安全标识(SID )。每一个可执行的应用程序都包含一个安全标识(SID )。SID 用途如下:
n 标识哪些私有目录可被访问
n 定义了调用都应用程序
SID 可在工程定义文件(.mmp 文件) 中的SECUREID 字段里定义。假设没有给出SEUREID ,则.mmp 文件里的UID3 被使用。如果UID3 也没有定义则KNullUID 则被使用。
l EPOCSTACKSIZE
最大堆栈大小(这么讲我觉得有点问题)
l SOURCEPATH
源文件(.cpp 文件)所在目录
l SOURCE
应用程序中所使用源文件, 如上例中的SOURCE HelloWorldBasic.cpp
l RESOURCE
应用程序中所使用之资源文件
l USERINCLUDE
用户包含头文件所在目录
l SYSTEMINCLUDE
系统头文件所在目录
l LIBRARY
应用程序需要哪些库文件(.lib 文件) ,如上例中的LIBRARY euser.lib
l LANG
列出应用程序所支持的语言,如上例中的LANG SC
l VENDORID
供应方标识(Vendro Identifer--VID) 。VID 唯一的标识了一个应用程序。
n 未签名的应用程序有一个未定义的VID (0 )
n 所已签名的来自同一供应言方的应用程序使用相同VID
n 编译应用程序后VID 不可更改
l CAPABILITY
本字段定义了应用程序的适应性,假如.mmp 文件里没有给出CAPABILITY 声明,则使用默认值CAPABILITY NONE 。
本字段只针对已签名应用程序;在S60 中未签名的应用程序是不能被安装到设备上的。
感谢前人