移动开发 – 原生VS跨平台VS JavaScript

我们公司即将开始为移动平台开发less量产品,因为我要求首席技术官研究可用的不同工具的优缺点,以实现最佳质量/成本效益的解决scheme。

我们将主要针对iOS和Android,Windows-Mobile和BlackBerry的次要目标。

候选人:

在进行了一些背景研究之后,我发现了以下可能的候选人:

  • 原生 – 使用原生工具和语言为每个平台进行简单但费力的开发。

  • HTML5,CSS和JavaScript – 可以是设备浏览器(网站)上运行的Web服务,也可以是围绕WebKit封装代码的应用程序。

  • Rho mobile – 由Google制作,应该是不错的 – 不过基于Ruby(我们不太习惯),并且有一个复杂而又脆弱的开发环境。

  • PhoneGap – 看起来很容易,主要基于Javascript – 它是开源的,但最近被adobe收购 – (不是一个好的标志)

  • Appcelerator – 从Javascript到PHP和Python的任何东西,都有一个很好的API访问范围,但是我们听到许多拒绝(苹果)的故事,以及在不同平台上使用复杂代码时的不兼容问题。

  • 而且更像MoSync,Sencha,Appmobi和Corona(没有亲自testing过)。

一些参考点:

  • 我们不打算开发游戏,我们计划开发的应用程序正处于商业应用程序和信息工具的领域。

  • 应用程序不依赖于设备API的过度使用(但需要一些小的基本访问)

  • 该公司已经开发了iOS,我们有一个本地的iOS开发人员(Objective-C的极客)

  • 我们希望确保能够继续开发我们的应用程序,而不会因为新的操作系统或API而破坏它们

  • 预先确保应用程序不会因为跨平台代码(主要是AppStore)而被拒绝是有益的,

  • 就像任何一家公司一样,我们希望尽可能提高成本效益 – 另一方面,我们坚持高质量的产品和顶级的用户体验。

没有比StackOverflow更好的地方提出这个问题,我将不胜感激开发者在这个主题上的经验。

应用程序市场上有50万个应用程序,竞争非常激烈。 拥有出色的用户体验和graphics是最重要的。

跨平台工具与本地开发并不相同。 如果是的话,我们都会使用它们。 但我们不是。 有一个原因 – 你没有完全控制。 而完全控制是必要的,有很好看的应用程序。

如果你的应用程序不是一个消费者应用程序,而是一个企业应用程序,这个应用程序的使用是由内部部门决定的,那么你可能会devise得很好,因为这样的应用程序的价值在于它的function。

但是,如果你认真对待移动应用程序市场,那么唯一的办法就是去当地。 你需要一个全职的UX用户和一个devise师(谁知道移动开发)。 你会花费50%以上的时间在外观上。 我现在参与的这个项目花费了80%以上的时间(graphics,animation,用户体验,可用性testing)。

一个build议:花费合理的时间(=天)使用你的竞争对手的应用程序。 还要花时间在每个市场上排名前50的应用程序。 你会感觉到酒吧有多高。 然后检查使用跨平台工具制作的应用程序(您可以在其网站上find链接)并进行比较。

虽然我完全同意@Peter Knego,但是我希望为希望支持多个平台的团队添加一些小点:

  • 正如Peter所说,UX是巨大的,而跨平台UX是最不常见的UX。 要把这些东西做成所需要的一切就够困难了,而不用把手放在背后。 真正梦幻般的networking应用程序的判断是靠近本地体验的能力,而不是相反。

  • 产品的许多部分不是UX。 仔细考虑一下你可以在那里得到什么样的重用。 例如,我经常build议有Android数据库的团队不要尝试在iPhone上使用Core Data。 没有理由重新创build对象和数据模型。

  • 这并不是你用C ++写你的核心的全面的build议。 如果你有一个广泛的,现有的C ++核心,我在之前就如何重用它提出了build议 。 但是我通常不推荐它用于新的代码。 在大多数情况下,最好使用平台的最佳操作系统级function。

  • devise在所有平台上都能正常工作的networking协议非常简单,应该被追求。 几乎在所有情况下,您最好的select是REST和JSON。 保持简单,尤其是对于那些讨厌SOAP和parsing复杂XML的iPhone。

  • 在HTML + CSS中,一些复杂的布局问题比原生控件更容易。 如果你有复杂的多列表(尤其是你需要colspanrowspan东西),情况尤其如此。 我已经有相当好的运气embedded单独的UIWebView件在其他本机应用程序,即使可移植性不考虑。 这里可以有一些值得重用的东西。 只要记住,你不想浪费很多努力和性能试图使你的HTML浏览器中立。 在iPhone上,使用WebKit扩展程序可以让用户更好地使用应用程序。

然而,其中最重要的教训之一是,没有一个“正确”的方法来制作适用于所有平台的应用程序。 iPhone应用程序应该像iPhone应用程序一样。 Android应用应该像Android应用一样。

如果你不关心什么是“某些东西”,高度跨平台的方法是获得“某种东西”的一种便宜的方法。 他们是一个非常昂贵的方式来获得伟大的东西。

我在AppMobi工作,我只是做一些评论。

  1. 你的应用程序不应该因为使用本地webview跨平台而被拒绝。 我们还没有苹果使用任何AppMobi提交的应用程序。

  2. Rhombile不是“由google制造”。 事实上,谷歌收购它并不是摩托罗拉的一部分,这是他们的业务部门。 他们正在推进HTML5 / Javascript,但目前的Ruby。

  3. Appcelerator开始支持webview,然后回溯。 他们只是筹集了大量的钱回到webview支持。

至于对跨平台应用程序说“不”的人。 Facebook和其他一些大公司正在向基于HTML5的移动应用程序发展。