有过Mobile开发经验的朋友或许都知道,早先EVC、EVB时代部署产品时,必须针对目标设备的处理器类型(如ARM、MIPS等)制作不同的安装包。

而如今,即使我们使用了号称“平台无关”的DOTNET平台,面对不同处理器的移动设备,仍然需要生成不同的安装包,这让我非常不理解。既然采用了托管技术,我们的产品应该就是一个由中间语言组成的数据包,甚至可以说就是一个压缩的文本文件,它应该是硬件无关的;通常的理解,只要我们的设备安装了硬件相关的CF,就可以从存储设备上读取出中间语言并正确执行;如果说不同的设备类型其存储格式不同,那么这个转换工作完全应该交由同步工具ActiveSync来做。

然而实际的使用中,这个过程似乎反转了,我们的CF安装包仅有一个,似乎是硬件无关的;而我们的产品包却是很多个(虽然在开发环境中设置了All CPU,不再需要我们人为去选择设备类型,但是背后却是针对目前每一种已知的设备类型生成了一个包;);

另:“平台相关”似乎有着两种含义,一种是大家都认同的操作系统相关,另一种则是有点坏气味的硬件相关,如CPU、显示卡等,相对于DirectX的Reference机制来说,MS对于CPU的相关处理实在是差强人意了。

不知道未来我们是否还要针对UNIX或者LINUX做不同的部署包呢?