各种应用程序,如Firefox,Fring,Skype在各种平台上运行。他们如何管理他们的代码?他们对不同的平台有不同的用户界面吗?如同,Firefox必须在Mac上使用Cocoa,在Windows上使用WinForms或同等产品,在Linux上使用QT。如何通过编译diff目标,相同的源代码如何显示diff UI?
他们确保在所有版本中修复了一个版本中的错误修复(如安全问题),这意味着代码不会在任何地方重复。那么底层架构是如何设计的?
答案 0 :(得分:3)
根据我的经验,帮助我解决跨平台问题的是:
您可能面临的一些设计问题在很大程度上取决于您要实现的目标。如果UI不是一个交易,那么使用像QT这样的库可能是要走的路。您的应用程序的任何方面都是如此。使用开源或付费库有助于缩短开发时间,这可能是一件好事。
如果您的应用程序要发光,那么您应该自己编写该部分。
我不能谈论UI选择,因为我处理的大多数平台都是如此不同,以至于每次都必须重新设计UI层。库和主引擎层在平台之间可移植这一事实有助于使这更容易。
答案 1 :(得分:1)
基本解决方案是将差异集中在应用程序的一小部分中。例如,FireFox在幕后有XulRunner。
您也可以使用现有框架。如果你在Linux上使用Qt,你就不会去WinForms for Windows。你仍然使用Qt,这也适用于Mac。
因此,安全漏洞等问题可能在特定于平台的层中,也可能在通用层中。在第一种情况下,您只需要在受影响的平台上修复它们。在第二种情况下,当您修复错误时,它在任何地方都已修复。