【问题标题】:Building Cross Platform app - recommendation构建跨平台应用 - 推荐
【发布时间】:2011-01-22 03:17:43
【问题描述】:

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

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

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

我遇到了Shu Player 作为一个选项,因为它似乎能够将 AIR 运行时与应用程序打包并进行(静默?)安装。
然而,这似乎违反了 Adob​​e (as outlined here) 的 T&C,所以我不确定其合法性。

另一种选择可能是锌,但我尚未对其进行测试,因此我不确定它是否符合要求。

你会推荐或建议我检查什么?

非常感谢任何建议

编辑: 还有一些关于单声道用法的讨论(尽管没有真正的结论): HereHere

EDIT2Titanium 也可能符合要求,会检查一下。

还有来自任何人的 cmets 吗?

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

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

我确实尝试了 Titanium 一段时间,但虽然第一印象还不错,但它们确实比任何东西都在推动移动平台,而且恕我直言,桌面实现有点缺乏关注。还有一些关于某些操作系统上的一些 Visual Studio 运行时问题的报告(现在不记得细节了)。所以也丢弃了。

我最终选择了XULRunner。两大诉求是:

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

不利的一面:

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

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

【问题讨论】:

  • 关于使用 Mono 的答案在哪里消失了?我再也看不到了...
  • 投反对票?真的吗?过了这么久?
  • 感谢 Ben 提供如此详细的帖子。直到今天,XULRunner 对您的效果如何?它仍然适用吗?
  • @yatg 这是 5 年前的事了,对于一个技术项目来说,那是一段很长的时间。我不久前完成了那个项目,并在很久以前就移交了。我会重新开始,肯定会调查任何新选项——我什至不确定它是否仍然由 Mozilla 积极维护,或者他们是否已经继续前进。
  • @yatg 您可能想在 Raymond Camden 的博客上阅读这篇关于使用 Electron raymondcamden.com/2015/07/23/… 构建的应用程序的最新帖子 - 它非常有见地,而且更及时

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


【解决方案1】:

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

许多人嘲笑 Tk 是“旧的”或“不成熟的”,但它是最古老、最稳定的工具包之一。当存在此类小部件时,它使用本机小部件。

然而,Tcl/Tk 的一个显着缺点是它缺乏任何类型的打印支持。如果您的应用程序需要打印,您将不得不有点创意。有特定于平台的解决方案,以及生成 postscript 文档的能力,以及创建 pdf 的库,但需要一些额外的努力。

【讨论】:

  • 那不是需要先安装 tcl/tk 吗?
  • @Ben:不。您将整个 tcl/tk 运行时包装到一个文件中。它总共不到 4 兆字节。这就是它的美妙之处。您最终会得到一个文件,只需将其拖到文件夹中即可安装。没有额外的运行时或任何东西(除非您选择将运行时和应用程序分开)
  • @Bryan:感谢您的建议(以及您的热情!)。它符合要求。我唯一担心的是我从来没有做过 tcl/tk,所以我会在一些疯狂的截止日期之前有这样的学习曲线..
  • 有关介绍可能会让您了解入门的难易程度,请查看 tcl.tk/about/language.html 用于 Tcl 和 tkdocs.com/tutorial/index.html 用于 Tk
【解决方案2】:

Java 可能是您最好的选择,尽管并非所有 Windows PC 都必须安装 Java(大多数应该)。 JavaFX 足够新,你不能指望它——你可能会发现很多机器运行 Java 1.5 或(不寒而栗)1.4。我相信最近的 Mac OS 仍然附带 1.5(最新版本可能已更改为 1.6)。

【讨论】:

  • 感谢您的提示。 PC 没有预装 Java 的 afaik(我一直都必须安装它)。这太依赖了,我还不如选择 Air。如果可能的话,我个人更愿意远离 java
【解决方案3】:

考虑 JavaFX 它可以使用现代 JRE 到处运行 ..!

【讨论】:

  • 谢谢。与@Michael E 的回答一样。 Java 太依赖了
【解决方案4】:

AIR 可能是一种选择,但前提是您不介意分发两个不同的文件(离线运行时安装程序和您的应用程序),并期望用户运行一个然后另一个。您必须在 Adob​​e 的网站上提交一份在线表格,表明您同意按原样分发离线安装程序,而不是在他们为您提供安装程序之前挖掘单独的 DLL 或其他任何东西。

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

【讨论】:

  • 感谢您的提示。正如我的问题中提到的,仅靠 AIR 是行不通的。我确实看过 shu,但它需要 adobe 的空气分配。我们向 adobe 申请了航空许可证,但从未收到他们的任何消息。如果你不关心 adobe 也可以。
  • 我们去 xulrunner,一开始有点困难,但一旦你开始了解它就非常棒了。
【解决方案5】:

我会推荐 zink。它具有桌面所需的所有功能。但是,我上次使用它时有点小故障。

我试图将一个 6M 的文件写入磁盘而被挂断。认为它低谷并更改代码一次写入 512K 块(3 分钟工作,快速)。

可能它仍然有一些令人讨厌的小故障,比如让你在 root lvl 上思考,但易用性和功能实在是太甜了,不容忽视。

【讨论】:

  • 你是说锌?听起来你既推荐它又同时拒绝它:) 当我审查它时并没有给它留下太深刻的印象。最后使用了 mozilla 的 XULRunner,这是一个非常有趣的平台——尽管有点挑战性。调查一下。
  • 感谢有关 XULRunner 的提示。是的,我的意思是锌。我没有广泛使用它,实际上它仅供个人使用。用它开发了一些专门的工具(差不多是 2 年前)。而且我并不是说我非法下载了 :) 如果我有大量的离线应用程序工作,我肯定会购买它。情况可能并非如此,因为大多数系统都连接到网络。
  • 感谢您对锌的意见。如果您有兴趣了解我最后选择 XULRunner 的原因,我已在原始问题中添加了 Edit 3。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-08
相关资源
最近更新 更多