移动开发 - Native VS Cross Platform VS JavaScript

Oli*_*int 43 iphone android cross-platform blackberry ios

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

我们将主要针对iOS和Android,适用于Windows-Mobile和BlackBerry.

候选人:

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

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

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

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

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

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

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

一些参考点:

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

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

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

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

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

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

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

Pet*_*ego 61

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

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

如果您的应用程序不是消费者应用程序,而是由某个内部部门决定使用的企业应用程序,那么您可能会使用一般的设计,因为此类应用程序的价值在于其功能.

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

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


Rob*_*ier 9

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

  • 正如彼得指出的那样,用户体验非常庞大,跨平台用户体验是最不常见的用户体验.要把这些东西变成它需要的一切而不用把手绑在背后是很难的.非常棒的网络应用程序是根据他们接近本机体验的能力来判断的,而不是相反.

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

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

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

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

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

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

  • +1精彩帖子.我喜欢关于没有正确方法的评论.精益求精,把它放在人们身上,然后迭代. (2认同)