说说product ID, platform ID 以及 machine ID Tuesday, August 4, 2009

product ID 和platform ID实际上非常类似,可以认为是同样的东西,只是有不同的语义;platform ID 出现在同一个平台上的所有设备中,以及将来兼容这个平台的所有设备中,本质上是S60 UI platform 的识别ID。product ID 一般只用于当前平台,用来标示当前平台上的产品系列。比如如果某个应用只能运行在某个平台上的某个系列的设备上,就应该在PKG包中用Product ID来限制,而不是platform ID。
machine ID 一个独立机制的部分,这个机制支持component在不同设备上的条件安装(例如,为了避免设备不兼容等)。这个id可以用于PKG文件中条件选择。machine ID 保证是唯一的,在不同的设备上这个值肯定是不同的。而product ID 在不同的设备上可能有相同的值,甚至可以不设置这个值。 注意在同一个设备上,machine ID 和product ID 有可能取同一个值。
每个设备上针对自己兼容的platform ID 和 product ID 包含一些相应的sis文件存根(sis file stub)(存储在z:\system\install,模拟器路径为\epoc32\data\z\system\install),文件名的格式是series60v*.sis。当一个sis安装包被安装的时候,installer 把PKG文件中所有的product/platform ID 和每个sis文件存根一一做比较。如果匹配,则sis包安装的应用程序和当前设备是兼容的,否则不兼容,设备给出提示信息。
Machine ID 用api HAL::Get 获得。
这里提供一个链接,列举了目前最全的ID
http://developer.symbian.com/wiki/display/pub/Device+vs+Product%2C+Platform%2C+HAL+information#DevicevsProduct%2CPlatform%2CHALinformation-platformIds
如果有兴趣的话,在上面的连接中关注一下Nokia N70 和N72, 为什么他们的id都是一样一样的呢? 说明个什么问题?

0 comments: