使用哪种基于Ruby的移动跨平台解决方案?

16

我正在寻找使用Ruby进行移动跨平台开发的方法。我们需要至少支持Android和iOS,如果支持Windows Phone和Blackberry就更好了。这将是一款最终会进入应用商店供普通公众使用的应用程序,因此不仅仅是企业内部使用的东西。到目前为止,我找到了以下几个选项:

  • Rhodes,覆盖了所有提到的平台并且是开源的。我们现在不需要来自RhoMobile的额外(付费)功能。
  • RubyMotion;仅支持iOS,价格为199美元,不幸的是没有试用版。
  • Ruboto,仅支持Android并且是开源的。
  • MobiRuby,仅支持iOS,计划支持Android,是开源的,但在撰写本文时看起来还不够成熟,不符合我们的需求。

我们还有一个必须满足的用例,需要同时访问相机和加速度计,并在屏幕上绘制加速度计数据。由于这很特定,在我查看的所有跨平台框架中(包括Phonegap、Titanium等),都不支持这个用例,看起来我需要为每个平台编写本地代码才能使其工作。

到目前为止,我倾向于选择Rhodes。它是一个经过验证的框架,似乎可以做到我需要的一切,包括针对上述用例的“本地化”。另一个选择是同时使用RubyMotion和Ruboto,它们都是使用Ruby而不是Objective-C或Java的解决方案。理论上,我应该能够在平台之间共享通用代码(如连接性和存储),尽管我没有找到任何成功使用这两个框架编写适用于Android和iOS的应用程序的示例。

我想知道是否有人能够确认我的思路或者我有所忽略。当然,任何额外的见解都是受欢迎的。


1
你也可以看一下 QT,它是一个支持大量不同平台的框架。同时也有一个名为 qtbindings 的 rubygem,为 Ruby 提供了绑定。 - Josh Voigts
1
从他们的教程中我了解到,Rhodes似乎只用于开发Web应用程序。 - Shmidt
据我所知,@Flink 是正确的,Rhodes 只能用于 Web 应用程序。 - Jamon Holmgren
@Flink,你说的“仅限Web应用”是什么意思?Rhodes在设备上运行一个小型Web服务器,用于Ruby代码和HTML视图(类似于Phonegap中呈现在设备浏览器引擎中),所以我可以理解它可能看起来有点像Rails克隆版。但它是为应用程序开发而设计的。顺便说一下,他们的本地扩展文档可以在这里找到:http://docs.rhomobile.com/rhodes/extensions#native-extensions。 - Rafe
我是一名Rhodes开发者,正在制作一个移动应用程序,并且拥有丰富的框架经验。有一段时间我自己也对许多事情感到困惑,因为摩托罗拉根本没有很好地记录这个软件。@Rafe,你似乎真的是最懂它的人 - 的确,它是Rails的克隆版,这很奇怪,因为在这种情况下,这是一个很好的想法,但实现却很糟糕。无论如何,你可以创建和测试UI-heavy的应用程序,就像没有其他的一样。请查看我正在制作的应用程序http://www.mydentalcompanion.com/(观看视频),以了解Rhodes的功能。 - Steve Benner
3个回答

4
如果您选择Ruboto,则可以直接使用独立于UI的Ruby代码。UI代码很可能会与平台相关。Ruboto还很年轻,但是越来越多的项目开始使用它。一个例子是:

https://play.google.com/store/apps/details?id=com.jonsoft.globalchat

它可以跨平台共享Ruby通信代码。
作为Ruboto项目的开发人员之一,我可以向您保证良好的支持和完整的Ruby体验。
对于iOS来说,RubyMotion看起来不错,但我没有使用过。您应该能够使用共享的代码库来处理常见逻辑,但需要分别编写UI和访问传感器的代码库。

2

我建议在Android上使用本地Java,在iOS上使用RubyMotion,这样需要两个代码库。RubyMotion是你提到的选项中最稳定的,值得用于iOS开发,但在Android平台上没有一个好的替代品。


作为一条注释,Rubymotion现在支持Android(以及OS X,但不支持Windows)。 - rogerdpack

0
Rhodes与Web应用程序无关。Rhodes允许您使用Ruby构建本机应用程序,并且比那些替代方案成熟了多年。它还支持每个主要的智能手机操作系统。

1
Rhodes实际上与Web应用程序有很多关系,因为整个架构是基于Rails建模的,并且与RESTful Web应用程序接口兼容。本地应用程序概念只是部分准确的,因为存在非本地组件可能会导致性能问题。此外,您对成熟度的看法是不正确的;代码库存在严重缺陷,支持和文档非常糟糕。 - Steve Benner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接