multiplatform - 多平台应用程序是如何开发的?

标签 multiplatform

我想知道多平台应用程序是如何开发的。适用于 MAC/Windows 的 Microsoft Office、适用于 MAC/Windows/Linux 的 FireFox 等应用程序。

如果他们必须为不同的平台编写代码,那么就很难管理,并且涉及许多其他复杂性。

问:开发团队如何管理多平台开发的复杂性?

最佳答案

Microsoft Office 不是一个多平台应用程序。如果您曾经使用过 Mac 版本,您就会知道。 Office 的最后一个多平台版本是 1998 年臭名昭著的 Office 6.0。用户提示外观和感觉并谴责“移植”心态。

Office 的 Mac 版不仅由不同的团队编写,而且由完全不同的部门编写:Mac 业务部门,也称为 MacBU。不同的部门主管、不同的经理,我相信还有不同的销售和营销人员。

这是一种方法。在 Mac 用户中也被称为“正确的方式”。

当然,并不是每个人都像微软这样的规模,并且有能力创建一个完全不同的子公司来支持 Mac 用户(更不用说 Linux 用户了)。稍微更明智的做法是使用跨平台库来处理 GUI 内容,例如 wxWidgets或 QT 或 GTK。毕竟,您的大部分核心 C 代码不会跨平台发生太大变化,只是专有的东西,如 GUI 和文件管理。哎呀,您甚至可以坚持使用 POSIX 函数调用来进行文件管理和联网以实现跨平台性。但请注意,Mac 用户很可能讨厌最终结果(就像发生在 MS Office 6.0 上的那样)。

第三条道路是中间道路。将通用的核心应用程序代码与专有的 GUI 内容分开(就可维护性而言,这无论如何都是一个好主意)。 MVC 设计模式是执行此操作的好方法。有办法(使用#define 或不同的构建脚本/生成文件)来切换 MVC 框架的 View 和 Controller 组件。这就是谷歌对 Chrome 所做的。 Mac 版本使用原生 Mac 图形,Windows/Linux 版本使用名为 Skia 的图形引擎。 . Chrome的核心是WebKit和V8,两者都是跨平台的。

关于multiplatform - 多平台应用程序是如何开发的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4220272/

相关文章:

OS X 和 Linux 上的 C#?

python - 在 Linux 上运行的 Python 脚本如何调用在 Wine 下运行的 Python 脚本中的例程?

linux - 在 Linux 上使用 Cocos2dx 制作游戏

firefox - Mozilla Firefox 的制作涉及哪些技术?

java - 如何一致地访问文件?

android - 多平台应用程序开发与操作系统开发

java - 为 SWT 应用程序构建多平台可执行文件 (Eclipse)

android - Xamarin Forms Ui 项目(多平台)

c++ - 用于 C++ 多平台项目的工具

c++ - 按平台划分的 CMake 输出目录