移动开发 - Native VS Cross Platform VS JavaScript

时间:2012-01-14 20:53:07

标签: android iphone ios blackberry cross-platform

我们公司很快将开始为移动平台开发少量产品,因为CTO我被要求检查可用的不同工具的Pro和Cons,以便获得最佳质量/成本效益的解决方案。

我们将主要针对iOS和Android,Windows-Mobile和BlackBerry的辅助。

候选人:

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

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

  • HTML5,CSS和JavaScript - 可以是在设备的浏览器(网站)上运行的网络服务,也可以是围绕WebKit封装此类代码的应用。

  • Rho mobile - 由谷歌制作,所以它应该是好的 - 然而基于Ruby(我们不习惯)并且确实有一个复杂而且相当脆弱的开发环境。

  • PhoneGap - 看似简单,主要基于Javascript - 它是开源的,但最近被adobe收购 - (不是一个好兆头)

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

  • 更像MoSync,Sencha,Appmobi和Corona(没有亲自测试过。)

一些参考点:

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

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

  • 该公司已经为iOS开发,我们有一个由原生iOS开发人员组成的小团队(Objective-C极客)

  • 我们希望确保我们可以继续开发我们的应用程序,而不会因为新的操作系统或API而导致应用程序被破坏

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

  • 像我们希望的任何公司一样具有成本效益 - 另一方面,我们坚持高品质的产品和顶级的用户体验。

没有比StackOverflow更好的地方提出这个问题,我将非常感谢具有此主题经验的开发人员的任何评论。

3 个答案:

答案 0 :(得分:61)

应用程序市场上有500k +应用程序,竞争非常激烈。拥有出色的用户体验和图形是至关重要的。

跨平台工具与本机开发不相上下。如果是的话,我们都会使用它们。但我们不是。有一个原因 - 你没有完全的控制权。并且需要完全控制才能拥有漂亮的应用程序。

如果您的应用不是消费者应用,而是某个内部部门决定使用的企业应用,那么您可能会通过一般的设计,因为此类应用的价值是它的功能。

但是,如果你认真对待移动应用程序市场 - 那么唯一的办法就是本土化。而且你需要一个UX人员和一个设计师(谁知道移动开发)在团队全职。你将花费超过50%的时间在外观上。我现在所参与的项目花费了80%以上的时间(图形,动画,用户体验,可用性测试)。

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

答案 1 :(得分:9)

虽然我与@Peter Knego完全达成协议,但我会为希望支持多个平台的团队添加一些小问题:

  • 正如Peter所说,用户体验非常庞大,跨平台用户体验是最不常见的用户体验。要把这些东西变成它需要的一切而不用把手绑在背后是很难的。非常棒的网络应用程序可以判断他们是否能够关闭来体验原生体验,而不是相反。

  • 产品的许多部分都不是用户体验。值得仔细考虑您可以在那里重复使用哪种类型。例如,我经常建议那些已经在Android上使用SQL数据库的团队不要试图在iPhone上使用Core Data。没有理由重新发明对象和数据模型。

  • 这并不是您用C ++编写核心的一揽子建议。如果你有一个广泛的,现有的C ++核心,我made suggestions before关于如何重用它。但我通常不会推荐它用于新代码。在大多数情况下,最好使用平台的最佳操作系统级功能。

  • 设计在所有平台上运行良好的网络协议非常简单,应该继续使用。几乎在所有情况下,你最好的选择是REST和JSON。保持简单,特别是对于那些讨厌SOAP和解析复杂XML等问题的iPhone。

  • HTML + CSS中的一些复杂布局问题比使用本机控件更容易。如果您有复杂的多列表(尤其是您需要colspanrowspan),则尤其如此。我已经相当幸运地在其他原生应用程序中嵌入了单个UIWebView件,即使可移植性根本不是考虑因素。这里可以有一些值得重用的东西。请记住,您不想浪费大量精力和性能来尝试使您的HTML浏览器保持中立。在iPhone上,使用WebKit扩展程序可以让用户更好地使用您的应用程序。

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

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

答案 2 :(得分:2)

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

  1. 您的应用不应因使用原生网页浏览器跨平台而被拒绝。 Apple在任何AppMobi提交的应用程序中都没有使用它。

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

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

  4. 对于跨平台应用程序说“不”的人。 Facebook和其他一些主要公司正在转向基于HTML5的移动应用程序。