5

我是一名 .NET 开发人员(现在已经 6 年多了),并且刚刚开始学习移动/智能手机/平板电脑开发。从逻辑上讲,我(可能还有其他所有人)希望我们创建的应用程序能够在所有智能手机平台上运行。从普通用户(外行)的角度来看,如果它是一个“移动应用程序”,它应该在移动设备上运行,这感觉很自然。如果我拥有 iPhone 或 Android 并不重要,移动应用程序就是移动应用程序。注意:我说的是原生平台开发,而不是可以从浏览器中使用的 HTML/Web 应用程序。

所以这只是一个高层次的概述问题......目前(2013 年)处理这个问题的策略是什么?我想象的移动跨平台开发工作方式可能是有一个通用代码库来实现应用程序的业务逻辑,然后对于每个目标平台,我们需要分别开发 GUI 部分。这在实践中与事实相去甚远?

以流行游戏“愤怒的小鸟”为例。我在 iPhone、Android 甚至 Windows 桌面上的 Chrome 浏览器上玩过它(可能是 Flash 或 HTML5 游戏),每个版本在玩时都有几乎相同的感觉。他们是怎么做到的?我想他们将游戏引擎作为通用代码,但可以用什么语言编写?据我所知,没有一种通用的编程语言可以提供单一的源代码文件,它可以编译成适用于 ios/android/win8 手机的本机二进制文件。

4

3 回答 3

6

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

您可以使用 PhoneGap 或 Titanium 等混合应用程序平台获得相当好的平台独立性,但这涉及 HTML/Javascript 开发,这可能需要花费大量时间和精力才能使用户体验与原生应用程序的体验有些相似。

于 2013-04-12T23:45:17.387 回答
3

由于您是 .NET 开发人员,因此一个合乎逻辑的解决方案是使用 Xamarin 的产品。( http://xamarin.com/ ) 它们允许您开发一次后端逻辑,然后将其编译到所有三个主要移动平台 (iPhone/Android/WP) 中。然后,您可以使用此后端逻辑项目为每个特定平台编写 UI 层。

开发人员的另一个选择是使用类似于PhoneGap的 javascript/html 路由。虽然我最近没有看过这个,但在使用 JS/HTML 路线时,曾经有一些性能下降和硬件可用性差距。现在这可能已经得到改善。

编辑:因为你特别提到了像愤怒的小鸟这样的游戏。如果您需要 3D ,Unity平台为与大多数设备兼容的开发提供了非常好的支持。

特别是对于愤怒的小鸟......他们使用Box2D进行物理,我不是 100%,但它看起来像 Cocos2d 来绘制元素。

如果您正在寻找构建游戏并喜欢 Xamarin 的想法,那么请看一看MonoGame,它基本上看起来像是 Mono 框架的 XNA 端口。

于 2013-04-12T23:33:47.180 回答
2

除了 Jared 的回答,今天下午我测试了 Xamarin。

您是 .Net 开发人员,如果您已经在使用 Visual Studio,那么您真是太幸运了。因为 Xamarin 有一个extension for Visual Studio

我只是想给xamarin一个不好的印象,到时候你可以测试好的,用户界面是在基于xml的文件中创建的并且没有自动完成,所以你必须编写整个代码或使用属性窗口。但我认为到时候它会更好。不错的编码

于 2013-04-12T23:52:03.460 回答