是否有开发iPhone / Android应用程序的多平台框架?

我有兴趣为iPhone和Android平台编写应用程序。 我希望find一个中间件/框架,抽象出API中的一些差异,并允许我在构build时指定目标平台。 有没有这样的框架存在或计划?

Phonegap是一个基于javascript / css / html的框架,面向iPhone,Android和黑莓。 它(至less在iPhone上)也可以作为本地应用程序捆绑在一起。 这些应用程序的UI层通常使用html / javascript构build,并且可能比真正的本机应用程序慢。

PhoneGap的


通过React Native,您可以使用基于JavaScript和React的一致开发人员体验在本地平台上构build世界级的应用程序体验。 React Native的重点在于您关心的所有平台上的开发人员效率 – 学习一次,随时随地编写。 Facebook在多个生产应用程序中使用React Native,并将继续投资于React Native。 React Native应用程序的用户界面是本机控件 – 因此,您的UI通常比用于GUIpipe理的纯HTML / JavaScript方法更快。

反应本机


Unity是由Unity Technologies开发的跨平台游戏引擎,用于开发PC,游戏机,移动设备和网站的video游戏。 Unity能够将游戏定位到多个平台是值得注意的。 支持的平台包括Android,Apple TV,BlackBerry 10,iOS,Linux,任天堂3DS系列,OS X,PlayStation 4,PlayStation Vita,Unity Web Player(包括Facebook),Wii,Wii U,Windows Phone 8,Windows,Xbox 360,和Xbox One。

统一


OpenFL是Flash API到桌面,浏览器,iOs,Android,Flash,HTML5等的开源端口。 对于那些来自Flash世界的人来说是一个可以考虑的select。 它build立到本地的二进制文件和目标浏览器(Flash / HTML5)。

openfl


MonoGame是Microsoft XNA 4.x Framework的开源实现。 XNA开发人员可以轻松创build具有极高代码重用的跨平台游戏。 它目前支持iOS,Android,Windows(包括OpenGL和DirectX),Mac OS X,Linux,Windows 8商店,Windows Phone 8,PlayStation Mobile和OUYA控制台。

monogame


Adobe Flash不pipe信不信,Adobe Flash都可以将本机二进制文件发布到ios,android,desktop,当然还有web。 表演是合理的,但不是不可思议。 如果你有一个Flash游戏,你可以很容易地把它移动到移动。 这不需要任何插件。 它实际上创build了在每个平台上运行的本机独立二进制文件。

土砖

编辑:由于这个问题被问到一些可行的解决scheme已经开发。 虽然这个答案的语气可能仍然是准确的(要从HW / OS 100%获益,本地应用程序可能是必要的),你可以在这个问题下find一些可能的答案。

Android和iPhone都有非常强大的用户界面。 即使你find了一个框架,弥合了最低层面上的巨大差异(Android是用Java编程的,在自定义虚拟机之上,iPhone是在Objective-C中编程的本地代码),在更高层次上(iPhone应用程序是完全的沙盒和孤立的,Android对象模型是分布式的,而类是在应用程序和库之间自由地调用的),你最终的应用程序会觉得外星人和其中任何一个都不合适。 想想Android中缺乏多点触控,或是iPhone中缺乏专门的硬件button。

最好的办法是开发一个特定于平台的用户界面,并以某种脚本语言为应用程序提供模型和核心逻辑。 然后find一个简单的C(为iPhone)和一个在Java(Android)解释器。计划,Lisp和Javascript可以符合法案。 只要确保翻译不暴露给最终用户,否则你将违反iPhone NDA …

如果您的应用程序数据量大,则可以遵循许多iPhone应用程序的模型,并为iPhone和Android开发本机用户界面,并在远程服务器中拥有所有应用程序逻辑。 您的用户界面成为应用程序的唯一已安装部分,其他所有内容都将保存在networking上。 这具有提供在不同设备和web界面之间提供漫游configuration文件的可能性的附加优点。

在这里添加另一项服务: Rhomobile正在创造这个。 它的确看起来很虚伪 – 在90年代初回到networking。 但它可能是将您最喜爱的应用程序移植到每个主要移动平台的最简单方法。

更多细节: Rhomobile承诺:构build一次,部署到任何智能手机

(注:我不为Rhomobile工作,今天刚刚遇到了这个故事。)

我没有iPhone或Android的直接经验,但我只是读了一篇关于“titanium”的文章,然后当我访问他们的网站时,发现这个:

http://www.appcelerator.com/products/titanium-mobile/

我用“原生”解决schemeObj-C和Java(4 Android)工作(编辑)很多。 我也用iPhone和Android的Appceleratorbuild立一个应用程序,工作得很好。 Appcelerator API相当广泛。 Appcelerator Kitchen Sink App显示了许多可以包含在应用程序中的元素和function( https://github.com/appcelerator/KitchenSink )。 但是,因为我的Appcelerator应用程序不是太复杂,所以一般不推荐使用它。 一位同事告诉我,他们的开发团队试了一下,他们并不满意。 他不能说出一个真正的理由。 不过,我会继续进行testing,看看局限性在哪里。 一个很大的限制是平台支持(目前只有iOS和Android)。

至于Rhodes,这个解决scheme看起来相当不错,特别是在支持的平台方面。 虽然我看到了一些问题。 首先,演示应用程序和厨房水槽应用程序需要大量的磁盘空间,运行有点波动,有时看起来很时髦(至less在Android上)。 其次,有很less的“现实世界”的应用程序find。 我的意思是下载的应用程序数量至less超过1000次,服务于真实世界的需求,而不仅仅是演示的目的。 对我来说可用性在移动(消费者)应用程序中是最重要的!

我在HTML / CSS / JavaScript / PhoneGap应用程序中看到了巨大的潜力。 最近我读了一些关于大公司使用HTML(5)来构build他们的应用的文章(例如,Netflix http://mashable.com/2010/12/03/netflix-html5/,Zynga http://www.spielsucht24。 2010/12/21 / zynga-launches-html5-mafia-wars-atlantic-city-for-mobile-web / )当使用networking技术构build移动应用程序时,仍然存在一些需要解决的可用性和快速问题。 另一个问题可能是企业级HTML应用程序的testing,debugging和维护。

Rhomobile的Rhodes框架可以做到这一点。 Rhodes应用程序是每个单独的智能手机原生

Mytopia有一个叫做RUGS的未发布的框架。 他们最近在TechCrunch 50会议上介绍了他们的技术,看起来非常有趣。 他们能够编译在所有智能手机平台上运行的应用程序(并且能够利用iPhone上每个加速计的function)。 不幸的是,他们的网站说,如果你想获得更多信息,你需要给他们发电子邮 如果您真的想在跨平台智能手机目标系统上开发,可能值得给他们发一封电子邮件。

我通过TC50networking直播观看了他们的演示,但不幸的是我们现在无法为您find一个video。

请回到这里,总结一下你决定使用哪个框架,以及为什么select它。

QuickConnectPhone允许您使用JavaScript编写应用程序,但仍然可以安装。 Android版本在这一点上是未发布的Alpha版本。

如果两者都允许您使用JavaScript,CSS和HTML创build应用程序,则可以调用iPhone或Android手机的设备行为,例如振动,GPS位置等。

iPhone的版本可以从https://sourceforge.net/projects/quickconnect/下载,如果你联系我,我可以给你发送Android版本。;

即使你真的想这样做,制作自己的多平台框架也不现实 – iPhone是本地代码,Android是Java。

当然,没有任何东西可以阻止你,例如,在iPhone上与桌面应用程序共享核心C / C ++逻辑。

看看这个:

http://www.xmlvm.org/overview/

这是一个试图将各种源语言编写的程序交叉编译成各种目标语言的项目。 最初的testing案例之一是用Java编写程序,并在iPhone上运行它们。 在网站上观看video是值得的。 他们已经讨论了能够瞄准Android的可能性。

就这样说,我没有尝试过。 该项目看起来相当不错,而且在SourceForge网站上没有太多活动。

您可以使用iSpectrum为iPhone开发Java应用程序。 通过这种方式,您可以在Android和iPhone之间重复使用一致的应用程序代码(也可能是桌面小程序或J2ME MIDlet,具体取决于您的操作:))

更多信息在http://www.flexycore.com

您的最佳select将是AirPlay,请访问AirPlay网站

点击一下,你就可以部署Android,Iphone,三星Bada,Symbian,Windows Mobile,BREW,WebOS和Maemo。

我的书籍适用于iOS和Android的HTML5使您能够以HTML,JavaScript和CSS创buildWeb应用程序,并将其转换为独立的应用程序,您可以上传到应用程序商店(免费或销售) – http://html5formobile.com – 在iOS和Android SDK上使用的包装可以在网站上免费获得,如果您按照本书中的说明进行操作,则无需任何编程语言方面的知识。

我意识到这个问题是相当古老的,但它出现在谷歌search,所以我认为这是一个好主意,更新它。

我认为现在有一个很好的框架,既针对这两个平台,也实际运行本地,允许编写出色的游戏是Corona。

链接: http : //www.anscamobile.com/corona/

我们使用Ice-Touch中间件取得了成功,让iPhone和Android设备与同一台服务器通话。 为networking对象和方法生成相当不错的代码。 但是本地的逻辑还是要用手机的语言编写的。 这样我们就可以利用每个UI的优势,而我们的模型生活在同一台服务器上,我们的控制器是自动生成的。

链接文本

我只想提一下,使用Gears插件的Web应用程序可以使用地理定位不再可用)(GPS和Wifi定位服务),这可以在Android上运行(G1上的浏览器带有内置的Gears支持)。

我不确定是否有希望在iPhone上获得齿轮支持,但这是另一个有用的方法来构build具有额外function的webapps,同时仍然具有广泛的设备范围。

这种框架本质上不能利用像加速度计或多指手势这样的iPhone特有的function。 这也可能使苹果的SDK条款无效。

正如andyuk所build议的,考虑编写一个Web应用程序。 基本function,如打电话给某人可以这样访问。

没有任何东西存在(值得依赖,如果有的话),我怀疑是否有任何官方计划。