越来越多的移动平台正在推出,开发人员可以使用sdk。有各种移动平台可供选择: Android,iOS,Moblin,Windows mobile 7,RIM,symbian,bada,maemo等。
制作跨平台应用程序是开发人员的头疼问题。我正在寻找跨平台的常见事物,这将有助于希望将应用程序移植到所有平台的开发人员。像什么是差异屏幕分辨率,输入方法,开放支持等。 请分享您对任何平台的详细信息。
或者是否有可能,通过在html(widget类型的东西)中编写代码并将其加载到本机应用程序中。
我知道android,我们可以通过调用setContentView(view)
请分享我们可以将html视图添加到您知道的不同类型平台的本机应用程序中的类详细信息。
此线程的目的是在开发人员之间共享公共细节。标记为社区维基。
跨平台工具&文库
XMLVM,Codename One和iSpectrum(从Android应用程序交叉编译Java代码或从头开始创建一个
Phone Gap(跨平台移动应用)
Titanium(使用网络技术构建原生移动和桌面应用程序)
单声道触控(适用于iphone的C#)
rhomobile - http://rhomobile.com/ 样本在这里:http://github.com/rhomobile/rhodes-system-api-samples
Sencha Touch - Sencha Touch是一个HTML5移动应用程序框架,允许您开发在Apple iOS和Google Android触摸屏设备上看起来和感觉原生的Web应用程序。 http://www.sencha.com/products/touch/
Corona - Iphone / Ipad / Android应用程序跨平台库。太棒了。 http://anscamobile.com/corona/
将现有Android应用移植到Windows Phone 7的指南 http://windowsphone.interoperabilitybridges.com/articles/windows-phone-7-guide-for-iphone-application-developers
答案 0 :(得分:95)
我的回答here covers some of the technical limitations of cross-platfrom tools但请稍微扩展一下:
我认为跨平台工具在历史上一直都很普遍,因为这些工具具有错误的哲学焦点。
跨平台工具的所有卖点都是它们为开发人员带来的好处。它们的出售理念是它们允许开发人员在任何地方进行一次编写。它们的出售理念是它们允许开发人员扩展其市场而无需学习新的API。它们的出售理念是它们允许开发人员大幅削减成本和上市时间。
出售的 工具是 他们为最终用户带来的好处 。
最终用户的利益不是卖点,因为跨平台开发对最终用户来说很少有利。最终用户并不关心开发人员将产品推向市场的努力程度。当他们不使用一个平台时,他们也不关心应用程序可以运行多少个平台。他们只关心应用程序是否在运行它所需的硬件上执行了所需的操作。除非他们特别需要在许多不同的平台上运行应用程序,否则它确实没有带来任何价值。
相反,制作跨平台API的不可避免的妥协意味着API创建的所有应用程序在每个平台上都处于最佳B级。它们永远不会是每个平台上使用的最佳工具。
所有这些意味着在大多数用例中,与使用平台特定API制作的产品相比,跨平台工具为最终用户提供了劣质产品。最终用户总是有更好的选择。
从长远来看,您可以为最终用户提供最实用的工具。如果你没有哲学上专注于让最终用户的生活更轻松,更高效,那么你从一开始就注定要失败。最终用户有很多选择,如果您的工具不是最好的工具之一,那么您将不会进入市场。
如果你认为“你应该只使用跨平台工具,”用户将真正受益于在许多不同平台上运行这个应用程序。如果你开始只考虑跨平台工具,因为它们会让你(开发人员)的生活变得更轻松,那么你选择它们的原因是错误的,它们会伤害你,而不是帮助你。
答案 1 :(得分:14)
移动设备上有多种跨平台开发方法。当然他们都有局限性。没有任何解决方案可以像本机应用程序那样利用所有设备的功能。
重新使用代码
虽然所有移动操作系统都不使用相同的开发语言和API,但您有时可以共享某些类或逻辑层代码。
对于Symbian应用程序来说,使用for an iOS application可能会重新使用C ++作为Android应用程序NDK,因为它们是用C ++开发的,等等。
某些解决方案还提供了使用除设备通常使用的语言之外的其他语言编写应用程序的可能性。最着名的(实际上我认识的唯一一个)是商业的,基于Mono project(C#开发):
但我不确定我们是否可以真正称之为跨平台开发,因为根据设备重用代码是有限的:
UI部分也保持特定于每个设备。
网站开发
在询问有关移动设备的跨平台开发时,常规答案是Web开发。然后,我们需要一个使用移动浏览器的包装器,使其外观和行为类似于本机应用程序。这就是我们将进一步研究的一些跨平台框架的工作方式。
HTML5的兴起带来了Web开发功能,这些功能只能通过本地应用程序(如地理位置,离线应用程序,本地存储)来完成。
通过利用最新的Web标准HTML5,CSS3,Js,我们可以找到越来越多的框架来开发具有原生外观的移动设备的Web应用程序:
但HTML5仍然非常年轻,实施可能因浏览器而异。大多数默认移动浏览器使用WebKit引擎(主要例外是使用Internet Explorer的Windows移动/电话),即便如此,它们也不一定support the same functionalities。本地数据库仍然难以使用,我们无法确定它将如何由不同的浏览器实现。此外,即使使用HTML5,与本机应用程序相比,Web开发仍然非常有限。您无法访问联系人,相机,加速度计等。
编辑:本月早些时候,W3C对HTML5的演变提出了一些警告:Article from ZDNet
因此它只适用于有限类别的应用程序。
跨平台框架
而且我们拥有跨平台的移动应用程序框架。您可以使用它开发一次并在不同平台上部署。这些解决方案通常专注于iOS和Android,并依赖于WebKit引擎。在使用Web技术进行开发时,它们提供了与电话功能的更多交互。最着名的是Nitobi PhoneGap,RhoMobile Rhodes,Appcelerator Titanium。但是很多其他人都在那里,并没有全部使用像MoSync这样的技术,在将代码编译成所需的平台之前将其转换为自己的中间语言。
[1] 请记住,Apple有一个special policy关于为其平台编写的应用程序。他们似乎并未在此日期阻止这些应用,但这是一个应该考虑的信息。
编辑:自9月9日以来,Apple已更改this policy。
答案 2 :(得分:6)
在部署为webapp(如上所述的html5)时,您会有一些共性,但对于丰富的本机应用程序,各种智能手机的API完全不同。
HTML5可能会稍微改善一些事情,但要做有趣的事情,你需要去当地。
有“跨平台”的智能手机框架,例如Phonegap,但我听说过将其用于“真实”工作的大部分不好的事情。 (很多开销等)
答案 3 :(得分:5)
是的,html5受到了一些关注。您还应该看看这个联盟&进入第四季度的平台。 不确定该项目的成功,因为这听起来是一个巨大的挑战,但这里有详细信息:
网站: http://www.wholesaleappcommunity.com/default.aspx
WAC旨在发布其初始版本 其规范和组件 11月开发者SDK。这个 规范将基于W3C 标准并创建一个强大的平台 用于开发丰富的移动网络 应用。 WAC还将提供 向后兼容设备 基于目前的JIL和BONDI 规格。 (http://www.convergedigest.com/Bandwidth/newnetworksarticle.asp?ID=31021)
。
它是一个由大约25家电信公司组成的国际联盟,旨在为所有开发商创建一个平台,并向所有移动电话用户销售。 (http://www.downloadsquad.com/2010/02/15/atandt-wholesale-applications-community-is-a-platform-not-an-app/)
答案 4 :(得分:1)
据我所知,大多数设备都可以运行:
Java ME - the Most Ubiquitous Application Platform for Mobile Devices
我认为这可以作为好的和坏的例子。