我有兴趣为iPhone和Android平台编写应用程序。我希望找到一个中间件/框架,它抽象出API中的一些差异,并允许我在构建时指定目标平台。是否存在或计划了这样的框架?
答案 0 :(得分:49)
Phonegap 是一个基于javascript / css / html的框架,面向iPhone,Android和Blackberry。它(至少在iPhone上)也可以捆绑为本机应用程序。这些应用程序的UI层通常使用html / javascript构建,并且可能比真正的原生应用程序慢。
React Native 使您能够使用基于JavaScript和React的一致开发人员体验在本机平台上构建世界级的应用程序体验。 React Native的重点是在您关注的所有平台上实现开发人员效率 - 学习一次,随处写作。 Facebook在多个生产应用程序中使用React Native,并将继续投资React Native。 React Native应用程序的UI是本机控件 - 因此您的UI通常比用于GUI管理的纯HTML / JavaScript方法更快。
Unity 是Unity Technologies开发的跨平台游戏引擎,用于为PC,游戏机,移动设备和网站开发视频游戏。 Unity以其将游戏定位到多个平台的能力而着称。支持的平台包括Android,Apple TV,BlackBerry 10,iOS,Linux,Nintendo 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的,闪光,HTML5等。并且可以考虑来自Flash世界的人。它构建为原生二进制文件,也是目标浏览器(Flash / HTML5)。
MonoGame 是Microsoft XNA 4.x Framework的开源实现。 它使XNA开发人员可以轻松创建具有极高代码重用率的跨平台游戏。它目前支持iOS,Android,Windows(包括OpenGL和DirectX),Mac OS X,Linux,Windows 8商店,Windows Phone 8,PlayStation Mobile和OUYA控制台。
Adobe Flash 不管你信不信,Adobe Flash可以将原生二进制文件发布到ios,android,桌面,当然还有web。表现合理,但并不令人难以置信。如果你有Flash游戏,你可以很容易地将它带到移动设备上。这不需要任何类型的插件。它实际上创建了一个在每个平台上运行的本机独立二进制文件。
答案 1 :(得分:34)
编辑:自从提出这个问题以来,已经开发了许多可行的解决方案。虽然这个答案的基调可能仍然准确(为了从硬件/操作系统中获得100%的本地应用程序可能是必要的),您可以在此问题下找到许多可能的答案。
Android和iPhone都有非常强大的用户界面。即使你找到了一个框架来弥补最低层面上的巨大差异(Android在自定义虚拟机上用Java编程,iPhone是在Objective-C中编程的本机代码),在更高层次上(iPhone应用程序是一个完全沙盒化和隔离,Android对象模型是分布式的,并且应用程序和库之间可以自由调用类)你的最终应用程序会感觉很陌生并且在其中任何一个都不合适。想想Android中缺少多点触控,或iPhone中没有专用的硬件按钮。
您最好的选择是开发一个特定于平台的用户界面,并以某种脚本语言提供应用程序的模型和核心逻辑。然后在普通C(对于iPhone)中找到一个解释器,在Java中找到一个解释器(对于Android。)Scheme,Lisp和Javascript可以满足要求。只需确保解释器不会暴露给最终用户,否则您将违反iPhone NDA ......
如果您的应用程序数据量很大,您可以按照许多iPhone应用程序的模型,为iPhone和Android开发本机用户界面,并将所有应用程序逻辑放在远程服务器中。您的UI成为应用程序中唯一安装的部分,其他所有内容都在网络上托管。这具有额外的优势,即可以在不同设备和Web界面之间提供漫游配置文件。
答案 2 :(得分:12)
在这里添加另一项服务:Rhomobile正在寻求创建这个。看起来确实如此愚蠢 - 回想起90年代早期的网络。但它可能是将您喜欢的应用程序移植到每个主要移动平台的最简单方法。
更多详情:Rhomobile promises: Build once, deploy to any smartphone
(注意:我不为Rhomobile工作;今天就碰到了这个故事。)
答案 3 :(得分:11)
我使用“原生”解决方案Obj-C和Java(4 Android)工作了很多。我还使用适用于iPhone和Android的Appcelerator构建了一个应用程序。 Appcelerator API非常广泛。 Appcelerator Kitchen Sink应用程序显示了许多可以包含在应用程序中的元素和功能(https://github.com/appcelerator/KitchenSink)。但是,由于我的Appcelerator应用程序不是太复杂,我觉得通常不推荐它。一位同事告诉我,他们的开发团队尝试过,他们并不满意。但他无法说出真正的理由。但是我会继续测试它以查看限制的位置。一个很大的限制是平台支持(目前只有iOS和Android)。
至于Rhodes,这个解决方案在纸面上看起来非常令人印象深刻,特别是在支持的平台方面。我看到它有些问题。首先,演示应用程序和厨房水槽应用程序需要大量的磁盘空间,运行有点不稳定,有时看起来很时髦(至少在Android上)。其次,很少有“现实世界”的应用可以找到。我的意思是已下载至少超过1000次的应用程序,并满足现实世界的需求,而不仅仅是演示目的。对我的可用性是移动(消费者)应用程序的首要任务!
我发现HTML / CSS / JavaScript / PhoneGap应用程序的巨大潜力。最近我读了一些关于大公司使用HTML(5)来构建他们的应用程序的文章(例如Netflix http://mashable.com/2010/12/03/netflix-html5/,Zynga http://www.spielsucht24.de/2010/12/21/zynga-launches-html5-mafia-wars-atlantic-city-for-mobile-web/)仍然存在一些问题,可用性和时髦性需要解决使用Web技术构建移动应用程序。另一个问题可能是企业级HTML应用程序的测试,调试和维护。
答案 4 :(得分:11)
我对iPhone或Android没有直接经验,但我刚看了一篇关于“Titanium”的文章,然后当我访问他们的网站时,发现了这个:
答案 5 :(得分:8)
Rhomobile的Rhodes框架就是这样做的。 Rhodes应用程序是每个智能手机的原生应用程序
答案 6 :(得分:6)
Mytopia有一个名为RUGS的未发布框架。他们最近在TechCrunch 50会议上发表了演讲,他们的技术非常有趣。他们能够编译在所有智能手机平台上运行的应用程序(并且能够利用iPhone上的每个加速度计的功能)。不幸的是,如果您需要更多信息,他们website表示您需要通过电子邮件发送给他们如果您真的想在跨平台智能手机目标系统上开发,可能值得为他们拍摄电子邮件。
我在TC50网络广播上观看了他们的演示,但遗憾的是现在无法为您找到视频。
请在此回复,并附上您决定使用的框架以及选择原因的摘要。
答案 7 :(得分:5)
QuickConnectiPhone允许您使用JavaScript编写应用程序,但它仍然可以安装。此时,Android版本尚未发布。
如果允许您使用JavaScript,CSS和HTML创建应用,则可以通过iPhone或Android手机调用设备行为,例如振动,GPS位置等。
iPhone版本可从https://sourceforge.net/projects/quickconnect/下载,如果您与我联系,我可以向您发送Android版本。
答案 8 :(得分:4)
我意识到这个问题相当陈旧,但它出现在谷歌搜索上,所以我认为更新它是个好主意。
我认为现在有一个很好的框架,目标是两个平台并且实际上是原生的,允许编写性能良好的游戏就是Corona。
答案 9 :(得分:4)
我的HTML5 for iOS和Android书籍让您可以使用HTML,JavaScript和Android创建的网络应用程序。 CSS,并将它们转换为可以上传到应用程序商店的独立应用程序(免费或出售) - http://html5formobile.com - 可以在网站上免费获得为iOS和Android SDK执行此操作的包装器,如果您按照书中的说明,不需要任何编程语言知识。
答案 10 :(得分:4)
您最好的选择是AirPlay,请访问AirPlay web site
单击即可部署Android,Iphone,Samsung Bada,Symbian,Windows Mobile,BREW,WebOS和Maemo。
答案 11 :(得分:4)
您可以使用iSpectrum为iPhone开发Java应用程序。 通过这种方式,您将能够在Android和iPhone之间重复使用一致数量的应用程序代码(可能还有桌面小程序或J2ME MIDlet,具体取决于您的操作:))
的更多信息答案 12 :(得分:4)
看看这个:
http://www.xmlvm.org/overview/
这个项目试图将用各种源语言编写的程序交叉编译成各种目标语言。最初的测试案例之一是用Java编写程序并在iPhone上运行它们。在网站上观看视频是值得的。他们已经讨论过能够定位Android的可能性。
话虽如此,我还没试过。该项目似乎相当beta,而且他们的SourceForge网站上没有很多活动。
答案 13 :(得分:4)
即使你真的想要,制作自己的多平台框架也是不切实际的 - iPhone是本机代码,Android是Java。
当然,没有什么可以阻止你,例如,在桌面应用程序中与iPhone对应共享核心C / C ++逻辑。
答案 14 :(得分:3)
我们已经成功使用Ice-Touch中间件让iPhone和Android设备与同一台服务器通信。为网络对象和方法生成相当不错的代码。但是本地逻辑仍然必须用手机语言编写。通过这种方式,我们可以利用每个UI的优势,而我们的模型位于同一台服务器上,并且我们的控制器是自动生成的。
答案 15 :(得分:3)
我只是想提一下,使用Gears插件的网络应用程序可以使用 Geolocation (不再可行)(GPS和Wifi定位服务) )这适用于Android(G1上的浏览器附带内置Gears支持)。
我不确定是否有希望在iPhone上获得齿轮支持,但这是另一种有用的方法来构建具有额外功能的webapps,同时仍然拥有广泛的设备。
答案 16 :(得分:-1)
这样的框架本质上无法利用iPhone特有的功能,如加速度计或多指手势。它也可能会使Apple的SDK条款无效。
正如andyuk建议的那样,考虑编写一个Web应用程序。可以通过这种方式访问基本功能,例如呼叫某人 。
答案 17 :(得分:-3)
没有任何东西存在(值得依赖,如果有的话),我怀疑会有任何正式的计划。