构建跨平台应用程序 - 建议

时间:2010-03-01 00:52:37

标签: cross-platform air desktop-application packaging xulrunner

我需要构建一个相当简单的应用程序,但它需要在PC和Mac上运行。

它还需要作为独立的桌面应用程序在光盘或USB驱动器上重新分发。

最初我认为AIR对此非常适合(它符合所有API要求),但难度在于它可以分发,因为应用程序需要安装AIR运行时才能运行。

我选择Shu Player作为选项,因为它似乎能够将AIR运行时与应用程序打包在一起并进行(无声?)安装。
然而,这似乎打破了Adobe(as outlined here)的T& C,所以我不确定合法性。

另一种选择可能是锌,但我没有测试过,所以我不确定它是否适合该法案。

你会推荐或建议我退房?

任何建议都非常感谢

修改: 还有一些关于单声道使用的讨论(虽然没有真正的结论): HereHere

EDIT2 Titanium也可能适合该法案,将检查出来。

还有其他人的评论吗?

EDIT3(一年后):实际上差不多已经过了一年,我发布了这个问题,但似乎有些人时不时会遇到它,甚至提供答案,甚至是一年后。

我想我会稍微更新一下这个问题。我没有到处尝试tcl / tk选项,时间限制和不同操作系统版本兼容性的不确定性导致我放弃了这个选项。

我确实尝试过Titanium但是虽然第一印象还不错,但他们确实在推动移动平台比什么都重要,而imho,桌面实现会因缺乏关注而受到一些影响。在一些操作系统上也有一些Visual Studio运行时出现问题的报告(现在不能记住细节)。所以也放弃了。

我最终选择了XULRunner。两个主要的呼吁是:

  • Firefox似乎在大多数操作系统版本上开箱即用,所以我认为XULRunner应用程序很可能与大多数系统兼容。保存了很多测试,结果发现 在所有平台上都运行良好,没有一个报告无法启动应用程序
  • 这是Javascript宝贝!语言学习曲线很小。要解决的主要问题是附加的xpcom接口以及如何查询它们。

在不利方面:

  • 我认为排除故障是一项有时很困难的任务,因此venkman调试器有点笨拙,最终使用控制台比什么都重要。
  • sqlite界面对桌面应用程序来说是一个很好的资产,但是当一些东西不起作用时,我经常很难找到相关的错误信息 - 也许我做错了。
  • 花了一点时间研究如何将应用程序打包为PC和Mac的独立应用程序。最后的方法是有一个“shell”mac应用程序和一个shell pc应用程序和一些“编译”脚本,它们将复制shell并在正确的位置将自定义源代码添加到它上面。
  • 对于某些人来说,最后一个潜在问题是,由于xulrunner应用程序的性质,您的源代码将与应用程序一起部署,如果您愿意,可以使用混淆,但如果您想要保护您的知识产权,请记住这一点

总而言之,这是一个跨平台应用的绝佳平台。我强烈推荐它。

5 个答案:

答案 0 :(得分:5)

Tcl / Tk拥有最好的包装解决方案之一。您可以使用特定于平台的二进制文件轻松地将跨平台应用程序(在完全可用的虚拟文件系统中实现)打包,以获得几乎任何现代桌面系统的单个文件可执行文件。在谷歌搜索术语starkit,starpack和tclkit。与现在的许多可执行文件相比,这种包装的二进制文件很小。

许多人将Tk称为“老”或“不成熟”,但它是最古老,最稳定的工具包之一。当存在这样的小部件时,它使用本机小部件。

然而,Tcl / Tk的一个重要缺点是它缺乏任何类型的打印支持。如果您的应用需要打印,您必须有点创意。有特定于平台的解决方案,能够生成postscript文档和库来创建pdf,但需要额外的努力。

答案 1 :(得分:2)

Java可能是你最好的选择,尽管不是所有的Windows PC都必然拥有Java(最应该)。 JavaFX是新的,你不能指望它 - 你可能会发现很多机器运行Java 1.5或(颤抖)1.4。我相信最近的Mac OS仍然附带1.5(最新版本可能已经改为1.6)。

答案 2 :(得分:0)

考虑使用JavaFX 它会随着现代JRE一直到处运行..!

答案 3 :(得分:0)

AIR可以是一个选项,但前提是您不介意分发两个不同的文件(脱机运行时安装程序和您的应用程序),并希望用户运行一个然后运行另一个。您必须在Adobe网站上提交一份在线表格,表示您同意按原样分发脱机安装程序,而不是在他们向您提供安装程序之前挖掘出单个DLL或其他任何内容。

不幸的是,目前无法同时从一个文件安装AIR应用程序和运行时。我不确定与Shu的交易是什么,或者它是否正在做任何不是犹太人的事情。

答案 4 :(得分:0)

我会推荐zink。它具有桌面所需的所有功能。然而,我使用它的拉斯时间有点毛病。

通过尝试将6M文件写入磁盘,我被挂断了。认为它是低谷并改变代码一次写入512K块(3分钟工作,快速)。

可能它仍然有一些令人烦恼的小问题,比如让你想到root lvl,但是易用性和功能太过甜蜜而不能忽视。