iOS/Android跨平台开发

114

我已经玩了一段时间的Java开发Android应用程序,并且开始掌握它。但是,如果我想在iOS上启动版本,就需要从头开始编写所有内容-这是不可取的。

我想知道有哪些跨平台解决方案可用,以及它们的实际效果如何。我一直在考虑Web应用程序-可能使用jQuery MobileTitanium,或Adobe Flash/Flex/Air。我还没有Mac电脑,我可能需要投资购买。

所以我的问题:

  1. 有哪些适用于iOS/Android(或其他设备)的跨平台开发环境?

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


1
Alister,你肯定不是第一个问这种问题的人,也不是第一个想要答案的人! :) 不要忘记 PhoneGap,我听说过一些好评和差评,还有 Red Foundry,它更像是模板,但看起来很不错 - 还没有跨平台。 - makdad
1
你也可以选择 PhoneGap。我曾经用过它,并建议你选择它。在 Android 上使用 PhoneGap 开发的应用程序有一个生成 exe 文件(iOS 的 IPA)的功能。 - Jayprakash Dubey
我想更新一下这个问题,因为现在已经是2016年底了,跨平台工具的情况已经发生了变化。 我认为这取决于您选择的编程语言以及您的团队在哪个方面拥有最多的经验:
  1. JavaScript:Phonegap在移动设备上的性能很差,因此建议使用具有本地组件但应用逻辑使用JS的工具。选项包括V-Play(http://v-play.net/apps)或React(http://reactnative.com)。
  2. C#:Xamarin是您的好朋友。
  3. C ++:使用C ++框架,如Qt(http://qt.io)
免责声明:我是V-Play背后的人之一,它基于Qt。
- Christian Feldbacher
答案:Flutter,它是谷歌的新移动UI框架,可以在iOS和Android上快速创建本地界面。 - naXa stands with Ukraine
还有一个很有前途的活跃项目 https://haxe.org/。 - Eugene Gr. Philippov
9个回答

104
免责声明:我在一家名为Particle Code的公司工作,该公司制作跨平台框架。在这个领域有很多公司,每周似乎都会出现新的公司。对你来说是好消息:你有很多选择。
这些框架采用不同的方法,许多框架的基本设计目的是解决不同的问题。有些专注于游戏,有些专注于应用程序。我会问以下问题:
你想写什么?企业应用程序、个人生产力应用程序、益智游戏、第一人称射击游戏?
你喜欢哪种开发环境?IDE还是普通文本编辑器?
你对编程语言有强烈的感觉吗?在我熟悉的框架中,你可以选择ActionScript、C++、C#、Java、Lua和Ruby。
我的公司更多地关注游戏领域,所以我没有太多使用像Titanium、PhoneGap和Sencha这样的JavaScript+CSS框架。但我可以告诉你一些面向游戏的框架。跨平台框架在游戏和富互联网应用程序领域可以发挥优势,因为这些应用程序往往更注重视觉上的独特性,而不是与本机用户界面融合。以下是一些值得关注的框架:
  • Unity www.unity3d.com 是一款3D游戏引擎。它与我曾经使用过的其他开发环境非常不同。您可以使用3D模型构建场景,并通过将脚本附加到对象来定义行为。您可以使用JavaScript、C#或Boo进行脚本编写。如果您想编写一个基于3D物理的游戏,该游戏可以在iOS、Android、Windows、OS X或游戏机上运行,则这可能是适合您的工具。您还可以使用3D资产编写2D游戏——其中一个很好的例子是独立游戏Max and the Magic Marker,它是一个使用Unity编写的2D物理侧卷游戏。如果您不了解它,我建议您去看看(特别是如果家里有孩子的话)。Max可用于PC、Wii、iOS和Windows Phone 7(尽管后者是一个移植版本,因为Unity不支持WinPhone)。Unity带有一些带有3D资产和纹理的示例游戏,这确实有助于快速掌握这个可能相当复杂的环境。

  • Corona www.anscamobile.com/corona 是一款使用Lua脚本语言的2D游戏引擎,支持iOS和Android。Corona的卖点是能够用很少的代码快速编写基于物理的游戏,iOS应用商店中基于Corona的游戏数量众多,这证明了它的成功。该环境非常简洁,这将吸引一些人。它带有模拟器和调试器。您可以添加所选的文本编辑器,然后就有了一个开发环境。基本SDK不包括任何UI组件,如按钮或列表框,但是订阅者可以使用CoronaUI附加组件。

  • Particle SDK www.particlecode.com 是一种稍微通用一些的跨平台解决方案,其背景是游戏领域。您可以使用Java或ActionScript编写,使用MVC应用程序模型。它包括一个基于Eclipse的IDE和一个所见即所得的UI编辑器。我们目前支持为Android、iOS、webOS和Windows Phone 7设备构建。您还可以输出Flash或HTML5以供Web使用。该框架最初是为在线多人社交游戏(例如扑克和双陆棋)开发的,适用于具有复杂逻辑的2D游戏和应用程序。该框架支持2D图形并包含2D物理引擎。

NB:

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

...

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

来源

  • Airplay SDKwww.madewithmarmalade.com是一个C ++框架,它可以让您在Visual Studio或Xcode中进行开发。它支持2D和3D图形。Airplay面向iOS、Android、Bada、Symbian、webOS和Windows Mobile 6。他们还有一个附加组件来构建PSP的AirPlay应用程序。我的C ++很生疏,所以我没有玩过它,但它看起来很酷。

就学习曲线而言,我会说Unity的学习曲线最陡峭(对我来说),Corona最简单,而Particle和Airplay则处于中间。

另一个有趣的点是框架如何处理不同的表单因素。Corona支持动态缩放,这对Flash开发人员来说很熟悉。这很容易使用,但意味着当从像iPhone这样的4:3屏幕转移到像新的qHD Android设备这样的16:9屏幕时,您会浪费屏幕空间。Particle SDK的UI编辑器可让您设计可伸缩的灵活布局,但也可以让您调整各个屏幕大小的布局。这需要更多时间,但可以让您使应用程序看起来为每个屏幕定制。
当然,适合您的取决于您个人的口味和工作风格以及您的目标,因此我建议下载几个这些工具并尝试一下。所有这些工具都可以免费尝试。
此外,如果我可以发布公共服务公告 - 大多数这些工具都在积极开发中。如果您找到了喜欢的框架,请务必发送反馈并让他们知道您喜欢什么,不喜欢什么以及您想要看到的功能。您真正有机会影响这些工具的下一个版本中的内容。

我本来想着做更多的企业级开发,但是你可能激发了我对这些SDK中的一个进行研究,以求一些乐趣。 - Alister
每个框架的链接将非常有用。 - Petrus Theron
2
更新:Particle Code被Titanium制造商Appcelerator收购,因此Particle SDK的命运不确定。Airplay以相当费解的方式更名为“Marmalade”。 - DocDude

15
和部分现在将会发生什么,任何人都无法预测。当然,即使使用了Mono解决方案,您仍然会创建非跨平台视图,但意图是重用业务逻辑。

请关注http://www.xamarin.com/,看看他们会推出什么有趣的产品。


12

使用PhoneGap + jQuery Mobile创建简单东西的经验还不错。在iOS上我能快速完成。但是,在没有做出一些更改的情况下,它在我的Android手机上无法工作。该项目是一个非常简单的应用程序,用于拍照并将其发布到网站上。最终,与真正的本地应用程序相比,感觉“笨重”。

我不认为会有易于跨平台开发的方法。我认为浏览器就是你可以得到的最接近的东西。通过选择像PhoneGap这样的东西,我认为你只是在不同的痛点之间进行交换。


7
如果您不想使用全功能框架进行跨平台开发,可以考虑使用C++作为选择。iOS通过Objective-C++完全支持在应用程序逻辑中使用C++。我不知道Android通过NDK对C++的支持在将业务逻辑放在C++中而不仅仅是某些性能关键代码片段方面是否得到了很好的支持,但如果您的情况得到良好支持,可以尝试一下。
当然,如果您的应用程序逻辑构成项目的主要部分,则采用这种方法才有意义,因为用户界面必须针对每个平台分别编写。
事实上,C++是除C以外支持最广泛的编程语言,因此是大多数大型跨平台应用程序的核心语言。

3
顺便提一下,Android似乎实际上直接支持只用C++编写的活动:http://developer.android.com/reference/android/app/NativeActivity.html - yeoman
4
有一个限制条件——NativeActivity无法访问Java(因此无法进行第三方库集成或SDK访问),这使得它对许多用途不太适合。 - rbgrn

6
虽然我刚开始接触这个开发领域,但我认为归结于这个基本区别:有些工具保留原始代码,而有些则移植到本地... 例如,PhoneGap只保留您编写的HTML/CSS/JS代码,并将其包装在足够的iOS代码中,以符合应用程序的要求,而Appcelerator则提供一个XCode项目...因此,如果您不熟悉iOS,则与PhoneGap相比,它并不会为您提供任何好处,但如果您知道一些,那么在更大的编码工作后,它可能会给您更多调整本机版本的能力。我自己没有使用过Appcelerator,但几周前我曾参与一个项目,其中我们的团队成员使用它在大约24小时内制作了一个完整的iPad应用程序。是的,要实际提交到Apple,您需要使用Mac,但如果那不是您的主要工作平台,您可以选择便宜的Mac。

3
如果您曾经使用过 LUA,您可以尝试使用Corona SDK创建可以在IOS和Android上运行的应用程序。

https://coronalabs.com/

我已经下载了它并进行了一些操作,我发现LUA是一种非常易于学习的脚本语言,没有通常的脚本语言困扰/限制...

3

CappuccinoPhoneGap

然而,有时试图寻找捷径并不能节省时间或提供可比较的最终产品。


3

还有MoSync移动SDK

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


2

我们还使用了BatteryTech技术,过去18个月以来已经发布了几款游戏。 http://www.batterypoweredgames.com/batterytech

支持所有C ++、Android和iOS平台,并且所有用户都可以获得完整的源代码。新的v2版本包括lua绑定。


3
截至2012年5月30日:5个或更少的开发人员需要支付200美元的许可证费用。超过5个开发人员需要支付800美元的费用。不得用于开源项目。 - Roger Dahl

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