我想知道多平台应用程序是如何开发的。Microsoft Office for MAC/Windows,FireFox for MAC/Windows/Linux等应用程序。
如果他们必须为不同的平台编写代码,那么就很难管理,而且还涉及到许多其他的复杂性。
问:开发团队如何管理为多个平台进行开发的复杂性?
发布于 2010-11-19 07:05:11
Microsoft office不是多平台应用程序。如果你曾经使用过Mac版本,你就会知道。Office的上一个多平台版本是1998年声名狼藉的Office6.0。发生的事情是,用户抱怨外观和感觉,并谴责“移植”的心态。
Mac版的Office不仅是由一个不同的团队编写的,而且是由一个完全不同的部门编写的: Mac业务部门,也被称为MacBU。不同的部门主管,不同的经理,我相信也有不同的销售和营销人员。
这是一种方法。在Mac用户中也被称为“正确的方式”。
当然,并不是每个人都有微软那么大的规模,他们有能力创建一个完全不同的子公司来支持Mac用户(更不用说Linux用户)。更明智的做法是为图形用户界面使用跨平台库,比如wxWidgets、QT或GTK。毕竟,你的大部分核心C代码不会在平台上改变太多,只是像GUI和文件管理这样的专有东西。见鬼,您甚至可以坚持使用POSIX函数调用来实现跨平台的文件管理和联网。但请注意,Mac用户很有可能会讨厌最终的结果(就像发生在MS Office6.0上的事情一样)。
第三条路是中道。将通用的核心应用程序代码与专有的GUI内容分开(就可维护性而言,这无论如何都是一个好主意)。MVC设计模式是实现这一点的好方法。有一种方法(使用#define或不同的构建脚本/makefile)来切换MVC框架的View和Controller组件。这就是谷歌对Chrome所做的事情。Mac版本使用原生Mac图形,Windows/Linux版本使用一个名为Skia的图形引擎。Chrome的核心是WebKit和V8,两者都是跨平台的。
发布于 2010-11-19 06:34:34
解决这个问题的方法可能和多平台应用程序一样多。一般来说,它们可以归结为几种不同的策略:
发布于 2010-11-19 06:35:55
如果您谈论的是已编译的C++,那么您最终会得到一些条件定义,比如代码中一些地方的#IFDEF WIN32。当你编写跨平台代码时,你必须测试跨平台。像Hudson这样的构建系统可以在你签入时在所有平台上构建你的代码。
对于GUI的东西,使用像QT这样的好的跨平台库是非常有帮助的。它允许您以大致相同的方式编写gui代码,但在为其编译的任何系统上都保持原生感觉。
希望这能有所帮助!
https://stackoverflow.com/questions/4220272
复制相似问题