如今(2013年),跨平台移动开发是如何实现的?

5
我是一名.NET开发人员(已经有6年多了),现在刚开始学习移动/智能手机/平板电脑开发。逻辑上,我(以及可能所有其他人)希望我们创建的应用程序可以在所有智能手机平台上运行。从普通用户(外行)的角度来看,如果是“移动应用程序”,它应该在移动设备上运行,这感觉很自然。请注意:我谈论的是本机平台开发,而不是可以从浏览器中使用的HTML / Web应用程序。
因此,这只是一个高层次概述问题... 2013年处理此问题的当前策略是什么?我想象中跨移动平台开发的方式是,可能有一个单一的通用代码库实现了应用程序的业务逻辑,然后对于每个目标平台,我们需要分别开发GUI部分。这与实践有多远?
以流行游戏“愤怒的小鸟”为例。我在iPhone、Android上玩过它,甚至在Windows桌面的Chrome浏览器上(可能作为Flash或HTML5游戏),每个版本玩起来感觉几乎相同。他们是怎么做到的?我想象他们有游戏引擎作为通用代码,但它可能是用什么语言编写的?据我所知,没有通用的编程语言,可以将给定的单个源代码文件编译为iOS / Android / Win8 Phone的本机二进制文件。
3个回答

6
很遗憾,没有办法开发一个跨平台的应用程序,它具有真正本地的外观和感觉,并且为所有平台共享相同的代码。虽然在某些平台上可以共享一些代码(例如,您可以在iOS和Android上使用C/C++),但仅适用于应用程序的逻辑部分。要获得本地UI,您将被迫使用本地API。如果您的应用程序不涉及一些复杂的数据处理,那么这种方法可能会比真正帮助您更具缺点。

您可以通过混合应用程序平台(如PhoneGap或Titanium)获得相当好的平台独立性,但这涉及到HTML/Javascript开发,这可能需要大量的时间和精力,以使用户体验与本机应用程序相似。

同意上述观点。我认为在iOS开发的早期,PhoneGap更有意义,因为除了苹果公司以外,很少有人精通Objective C,但有很多人熟悉Web技术。现在,Obj-C是十大编程语言之一,有很多才华横溢的本地开发人员。我曾经研究过使用它来扩展我的Android能力,但得出结论,学习该SDK或分包更有意义。 - Reid
我不会因为列出的原因而否定PhoneGap。实际上,你可以通过为每个设备使用不同的CSS文件或者减少对100%本地外观的关注来实现大部分UI的改变。按钮看起来会像浏览器中出现的默认按钮...其他元素也是如此。我的回答中所列出的两种选项都可以轻松适应任何受支持平台,只需更改UI层(为PhoneGap更改CSS,为Xamarin创建UI项目)。我跳过PhoneGap的原因是性能问题,而不是外观。 - Jared
我并没有说他们应该避免使用PhoneGap或类似的工具。实际上,这可能是一个快速推出适用于所有主要平台的应用程序的好方法,然后(如果需要)逐步迁移到本地UI。我的回答重点是没有银弹。有一些可行的方法,但都有其缺点。 - Const
注意,还有一点FYI,Xamarin在我看来非常接近于银弹。它可以编译并且UI仍然是通过他们的API完成的,而不是本地的。 - Jared
钛现在编译成本地UI,参见第18张幻灯片。然而,与Titanium不同的是,Xamarin非常直接,每个平台必须制作一个UI,而Titanium将相同的UI代码编译为多个平台表示。另一种说法是:“您正在使用平台的后端UI控制器、行为和动画,这提供了大多数用户期望的本机体验。”可以在这里找到。 - David Karlsson

3
由于你是一名.NET开发人员,一个合理的解决方案是使用Xamarin的产品。(http://xamarin.com/) 它们可以让你将后端逻辑开发一次,然后编译成所有主要移动平台(iPhone / Android / WP)。 然后,您可以使用此后端逻辑项目为每个特定平台编写UI层。
开发人员拥有的另一种选择是使用类似于PhoneGap的javascript / html路线。 虽然我最近没有看过这个,但在使用JS / HTML路线时可能会存在一些性能损失和硬件可用性差距。这可能已经得到改善。
编辑: 由于您特别提到了像愤怒的小鸟这样的游戏。如果需要3D,则Unity平台提供非常好的支持。
对于Angry Birds,它们使用Box2D进行物理计算,而绘制元素则使用Cocos2d,但我不确定是否100%。
如果您想构建游戏并喜欢Xamarin的想法,请查看MonoGame,它基本上看起来像是将XNA移植到Mono Framework。

2
除了Jared的回答之外,今天下午我测试了Xamarin。
如果你是一名.Net开发者,并且已经在使用Visual Studio,那么你非常幸运。因为Xamarin有一个适用于Visual Studio的扩展。
我只想给Xamarin留下一个不好的印象,你可以通过时间来测试好的印象,用户界面是在基于xml的文件中创建的,没有自动完成,所以你必须编写整个代码或使用属性窗口。但我认为随着时间的推移它会变得更好。愉快的编码。

实际上,所有平台都有免费的UI可视化编辑器。您可能需要微调XML,但没有一个平台(Xamarin支持的)需要您触碰XML。Windows Phone = Expression Blend(Expression在某个时候会消失)/Android有几个选项,但其中一个是DroidDraw/iPhone这是XCode的一部分?(不记得确切的名称,但您可以在iOS许可证/开发工具包的一部分中下载它) - Jared
1
我认为这里有一个误解。我只是想说,对于拥有Visual Studio的Xamarin来说,这是一个加分项。然后,如果您检查组件源页面,那里有一种基于XML的语法,我没有访问自动完成。我不是在谈论单独的XML文件。 - nadir.shpz

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