我是.NET开发人员(已超过6年),刚开始学习移动/智能手机/平板电脑的开发。从逻辑上讲,我(也可能是其他所有人)希望我们创建的应用程序能够在所有智能手机平台上运行。从普通用户(外行人)的角度来看,如果它是一个移动应用程序,它就会感觉很自然。它应该在移动设备上运行。如果我拥有iPhone或Android,那么移动应用程序就是移动应用程序并不重要。注意:我说的是本机平台开发,而不是可以从浏览器中使用的HTML / Web应用程序。
所以这只是一个高级别的概述问题......目前处理这个问题的策略(2013年)是什么?我认为移动跨平台开发工作的方式可能是实现应用程序业务逻辑的单一通用代码库,然后对于每个目标平台,我们需要单独开发GUI部分。这在实践中与真相有多远?
以流行游戏"愤怒的小鸟"为例。我在iPhone,Android甚至是Windows桌面上的Chrome浏览器(可能是Flash或HTML5游戏)上播放它,每个版本在播放时都有相同的感觉。他们是怎么做到的?我想他们将游戏引擎作为通用代码,但用什么语言编写呢?据我所知,没有通用的编程语言可以将单个源代码文件编译成ios / android / win8手机的原生二进制文件。
答案 0 :(得分:6)
不幸的是,没有办法开发一个具有真正本机外观的跨平台应用程序,并为所有平台共享相同的代码。
它可以在某些平台上共享一些代码(例如,您可以使用C / C ++ for iOS和Android),但仅适用于应用程序的逻辑部分。要获得本机UI,您将被迫使用本机API。如果您的应用程序不涉及某些复杂的数据处理,那么这种方法可能会有更多的缺点,而不是真正帮助您解决问题。
您可以通过PhoneGap或Titanium等混合应用程序平台获得相当好的平台独立性,但这涉及HTML / Javascript开发,这可能会导致需要花费大量时间和精力来使用户体验与本机应用程序有些相似。
答案 1 :(得分:3)
由于您是.NET Dev,因此您可以使用Xamarin的产品。 (http://xamarin.com/)它们允许您开发一次后端逻辑,然后将其编译到所有三个主要移动平台(iPhone / Android / WP)。然后,您可以使用此后端逻辑项目为每个特定平台编写UI层。
开发人员的另一个选择是使用类似于PhoneGap的javascript / html路由。虽然我最近没有看过这个,但在使用JS / HTML路线时,曾经存在一些性能命中和硬件可用性差距。现在可能已经改善了。
编辑: 既然你特意提到像愤怒的小鸟这样的游戏如果您需要3D,Unity平台可为与大多数设备兼容的开发提供非常好的支持。
对于愤怒的小鸟特别......他们使用Box2D作为物理学而我不是100%,但它看起来像Cocos2d来绘制元素。
如果您正在构建游戏并喜欢Xamarin的想法,那么请查看MonoGame,它基本上看起来像是Mono Framework的XNA端口。
答案 2 :(得分:2)
除了Jared的回答,今天下午我测试了Xamarin。
您是.Net开发人员,如果您已经在使用Visual Studio,那么您很幸运。因为Xamarin有一个extension for Visual Studio
我只是想给xamarin留下不好的印象,你可以在时间上测试好的用户界面,在基于xml的文件中创建用户界面并且没有自动完成,所以你必须编写整个代码或使用属性窗口。但我觉得它会更好。很好的编码