iOS / Android跨平台开发

我一直在玩Java开发Android应用程序一段时间,并开始处理它。 但是,如果我想在iOS版本上启动,我需要从头开始对所有代码进行编码 – 这是不可取的。

我想知道哪些跨平台解决scheme可用,以及它们在实践中的工作情况如何。 我一直在考虑web应用程序 – 也许使用jQuery Mobile或Titanium或Adobe Flash / Flex / Air。 我还没有Mac,我可能不得不投资。

所以我的问题:

  1. iOS / Android(和/或其他设备)具有哪些跨平台开发环境?

  2. 你有什么经验与这些工具? (这是我真正想知道的)

免责声明:我为一家公司开发了一个“粒子代码”,它构build了一个跨平台的框架。 这个领域有很多公司。 新的似乎每个星期都会出现。 对你来说好消息:你有很多select。

这些框架采用不同的方法,其中许多是根本上devise来解决不同的问题。 有些专注于游戏,有些专注于应用程序。 我会问以下问题:

你想写什么? 企业应用程序,个人生产力应用程序,益智游戏,第一人称射击游戏?

你喜欢什么样的开发环境? IDE还是纯文本编辑器?

你对编程语言有强烈的感受吗? 在我熟悉的框架中,您可以selectActionScript,C ++,C#,Java,Lua和Ruby。

我的公司更多的是在游戏领域,所以我没有像Titanium,PhoneGap和Sencha那样使用JavaScript + CSS框架。 但是我可以告诉你一些面向游戏的框架。 游戏和丰富的互联网应用程序是跨平台框架可以发光的领域,因为这些应用程序往往更注重视觉独特性,而不是将其融入本地用户界面。 这里有几个框架来寻找:

  • Unity http://www.unity3d.com是一款3D游戏引擎。; 它与我所从事的任何其他开发环境都不相同。您可以使用3D模型构build场景,并通过将脚本附加到对象来定义行为。 您可以使用JavaScript,C#或Boo编写脚本。 如果你想写一个基于3D物理的游戏,可以在iOS,Android,Windows,OS X或游戏机上运行,​​这可能是你的工具。 您还可以使用3D资源编写2D游戏 – 一个很好的例子是独立游戏Max和Magic Marker ,这是一个用Unity编写的基于2D物理的横向卷轴。 如果你不知道,我build议检查一下(特别是如果你家里有小孩的话)。 Max可用于PC,Wii,iOS和Windows Phone 7(尽pipe后者版本是端口,因为Unity不支持WinPhone)。 Unity带有一些带有3D资源和纹理的示例游戏,它们确实有助于加速处理相当复杂的环境。

  • Corona http://www.anscamobile.com/corona是一款使用Lua脚本语言并支持iOS和Android的2D游戏引擎。; Corona的卖点在于能够在几行代码中快速编写基于物理的游戏,iOS应用程序商店中大量基于Corona的游戏就是其成功的certificate。 环境非常贫乏,会吸引一些人。 它带有一个模拟器和debugging器。 你添加你select的文本编辑器,并且你有一个开发环境。 基础SDK不包含任何UI组件,如button或列表框,但CoronaUI附加组件可供订户使用。

  • Particle SDK http://www.particlecode.com是一个比较通用的跨平台游戏解决scheme。; 您可以使用MVC应用程序模型来编写Java或ActionScript。 它包含一个带有所见即所得UI编辑器的基于Eclipse的IDE。 我们目前支持Android,iOS,webOS和Windows Phone 7设备的构build。 您也可以为网页输出Flash或HTML5。 该框架最初是为在线多人社交游戏(如扑克和双陆棋)开发的,适合2D游戏和复杂逻辑的应用程序。 该框架支持2Dgraphics,并包括一个2D物理引擎。

注意:

今天我们宣布Particle Code已经被Titanium跨平台框架制造商Appcelerator收购。

截至2012年1月1日,[ Particle Code ]将不再正式支持[ Particle SDK ]平台。

资源

  • Airplay SDK http://www.madewithmarmalade.com是一个C ++框架,可让您在Visual Studio或Xcode中进行开发。 它支持2D和3Dgraphics。 Airplay的目标是iOS,Android,Bada,Symbian,webOS和Windows Mobile 6.他们还有一个附加组件来构buildPSP的AirPlay应用程序。 我的C ++非常生锈,我没有玩过很多,但看起来很酷。

就学习曲线而言,我认为Unity拥有最陡的学习曲线(对我来说),Corona是最简单的,而Particle和Airplay则介于两者之间。

另一个有趣的地方是框架如何处理不同的forms因素。 Corona支持dynamic缩放,这对Flash开发人员来说是很熟悉的。 这是非常容易使用,但意味着当你从像iPhone一样的4:3屏幕转到16:9像新的qHD Android设备时,你最终会浪费屏幕空间。 Particle SDK的UI编辑器允许您devise可缩放的灵活布局,还可以调整各个屏幕大小的布局。 这需要多一点的时间,但让你看起来应该为每个屏幕定制的应用程序。

当然,什么对你有用取决于你的个人品味和工作风格,以及你的目标 – 所以我build议下载一些这些工具,并给他们一枪。 所有这些工具都可以免费试用。

另外,如果我只是提出一个公共服务公告,那么这些工具大部分都在积极发展。 如果你find你喜欢的框架,通过一切手段发送反馈,让他们知道你喜欢什么,你不喜欢什么,以及你想看到的function。 你有一个真正的机会来影响这些工具的下一个版本。

希望这可以帮助。

MonoTouch和MonoDroid,但现在Attachmate的这个部分会发生什么,是任何人的猜测。 当然,即使使用单声道解决scheme,您仍然在创build非跨平台的视图,但这个想法是重用业务逻辑。

请关注http://www.xamarin.com/ ,看看他们想出了什么会很有趣。

我在PhoneGap + jQuery Mobile中做出非常简单的事情的经验很好。 我能够在iOS上快速完成。 但是,它没有做任何改变我的Android手机上没有工作。 该项目是一个非常简单的应用程序,拍照并张贴到网站。 而在一天结束时,与真正的原生应用程序相比,它感觉“笨重”。

我不相信跨平台的发展会很容易。 我认为浏览器是如此接近,你会得到。 通过select类似PhoneGap的东西,我认为你只是为一组不同的痛点交易一组痛点。

如果你不想使用一个完整的跨平台开发框架,可以selectC ++。 iOS完全支持通过Objective-C ++为您的应用程序逻辑使用C ++。 我不清楚Android通过NDK对C ++的支持是否适合在C ++中完成业务逻辑,而不仅仅是一些性能关键的代码片段,但是如果支持好用例,可以尝试一下。

当然,这种方法只有在您的应用程序逻辑构成项目最大的部分时才有意义,因为用户界面必须针对每个平台单独编写。

事实上,C ++是最广泛支持的编程语言(C除外),因此是大多数大型跨平台应用程序的核心语言。

虽然我刚刚开始关注这个领域的发展,但我认为归结到这个基本的区别:有些工具保留原始代码,有些工具保留原生代码。

PhoneGap只是保留你编写的HTML / CSS / JS代码,并将其包装在足够的iOS代码中以作为应用程序,而Appcelerator为您提供了一个XCode项目……所以如果您不熟悉iOS,那么这对PhoneGap来说真的不会给你带来任何好处,但是如果你知道一点,那么在你的更大的编码工作之后,这可能会给你更多的能力来调整本地版本。

我自己并没有使用Appcelerator,但几周前在一个项目上工作,我们的一个团队成员在24小时内制作了一个完整的iPad应用程序。

是的,要真正提交给苹果,你必须得到一个苹果,但如果这不是你的主要工作平台,你可以便宜。

卡布奇诺或PhoneGap 。

有时虽然试图find一个快捷方式并不能节省您的时间,或给您一个可比的最终产品。

如果你曾经使用LUA,你可以尝试Corona SDK可以创build在IOS和Android上运行的应用程序

http://developer.anscamobile.com/

我已经下载了它,并混淆了一些,我发现LUA是一个非常容易学习脚本语言没有通常的脚本语言麻烦/限制….

还有MoSync Mobile SDK

GPL和商业许可。 这里有一个很好的概述他们的方法。

还有我们在过去18个月里使用过的BatteryTech,已经发布了几款游戏。 http://www.batterypoweredgames.com/batterytech

所有C ++,Android和iOS支持,所有用户都可以获得完整的源代码。 新的v2包含lua绑定。