开发跨平台移动应用程序
越来越多的移动平台正在推出,开发人员可以使用sdk。 有各种移动平台可供使用:Android,iOS,Moblin,Windows mobile 7,RIM,symbian,bada,maemo等。
而制作跨平台的应用程序让开发人员感到头疼。 我正在寻找跨平台的常见事情,这将有助于希望将应用程序移植到所有平台的开发人员。 像什么是不同的屏幕分辨率,输入法,开放式的gl支持等,请分享你知道的任何平台的细节。
或者有可能,通过在html(widget的类型)中编写代码并将其加载到本机应用程序中。 我知道android,我们可以通过调用setContentView(view)
将web视图添加到应用程序中,
请分享课程详情,我们可以将html视图添加到您认识的不同类型的平台的本地应用程序中。
这个线程的目的是在开发者之间共享共同的细节。 标记为社区wiki。
跨平台工具和库
XMLVM,Codename One和iSpectrum(从Android应用程序交叉编译Java代码或从头创建一个
手机差距(跨平台移动应用)
钛(使用网络技术构建原生移动和桌面应用程序)
单触式(C#for iphone)
rhomobile - http://rhomobile.com/样本在这里:http://github.com/rhomobile/rhodes-system-api-samples
Sencha Touch - Sencha Touch是一款HTML5移动应用程序框架,允许您开发在Apple iOS和Google Android触摸屏设备上外观和感觉自然的网络应用程序。 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
我在这里的答案涵盖了跨平台工具的一些技术限制,但让我扩展一下:
我认为跨平台工具在历史上一直都是流行的,因为这些工具的哲学焦点是错误的。
跨平台工具的所有卖点都是它们给开发人员带来的好处。 它们的出售点是允许开发人员随时随地编写一次即可运行的想法。 他们出售的想法是,他们允许开发人员在不学习新API的情况下扩大市场。 他们的想法是允许开发人员削减成本并缩短上市时间。
什么交叉平台工具不被销售是他们给终端用户带来的好处 。
对最终用户的益处不是一个卖点,因为跨平台开发很少对最终用户有益。 最终用户并不在乎开发人员需要努力将产品推向市场。 他们也不在意应用程序可以在不使用平台的情况下运行多少个平台。 他们只关心应用是否在需要运行它的硬件上完成他们所需要的功能。 除非他们有特定的需求在很多不同的平台上运行应用程序,否则它的确没有价值。
相反,制作跨平台API的不可避免的妥协意味着API创建的所有应用程序在每个平台上都至多为B级。 他们永远不会成为在每个平台上使用的最佳工具。
所有这些意味着在大多数使用情况下,与使用特定于平台的API进行比较,跨平台工具会给最终用户带来劣质产品。 最终用户将始终有更好的选择。
长期来说,您可以通过向最终用户提供最实用的工具来赚钱。 如果你没有从哲学上专注于让最终用户的生活更轻松,更高效,那么你从一开始就注定要失败。 最终用户有很多选择,如果你的工具不是最好的,你不会在市场上做到。
如果您认为只有跨平台工具才能使用,“用户将从许多不同平台上运行此应用程序真正受益”。 如果你只是开始寻找跨平台工具,因为它们会让你(开发人员)的生活变得更容易,那么你选择了他们的理由是错误的,他们会伤害你,而不是帮助他们。
移动设备上有多种跨平台开发方法。 当然,它们都有局限性。 没有任何解决方案能够像本机应用程序那样利用所有设备的功能。
重新使用代码
尽管所有的移动操作系统都不使用相同的开发语言和API,但您有时可以共享一些类或逻辑层代码。
例如,C ++可能可以重新用于iOS应用程序,使用NDK的Android应用程序,用于Symbian应用程序,因为它们是用C ++开发的,等等。
一些解决方案还提供了使用除设备通常使用的语言之外的其他语言编写应用程序的可能性。 最着名的(实际上是我所知道的唯一一个)商业和基于Mono项目(C#开发):
但是我不确定我们真的能够称这种跨平台开发,因为代码的重复使用取决于设备:
而UI部分也保持特定于每个设备。
Web开发
询问移动设备跨平台开发时的常见答案是Web开发。 然后,我们需要一个包装器,它将使用移动浏览器,使其看起来和行为像本机应用程序。 这就是我们将看到的一些跨平台框架的进一步工作。
HTML5的兴起带来了Web开发功能,这些功能只能通过本地应用程序(如地理位置,离线应用程序,本地存储)才能完成。
通过利用最新的Web标准HTML5,CSS3,Js,我们可以找到越来越多的框架来为移动设备开发具有本地外观和感觉的Web应用程序:
但HTML5仍然非常年轻,实现可能因浏览器而异。 大多数默认移动浏览器都使用WebKit引擎(主要的例外是使用Internet Explorer的Windows mobile / phone),即使如此,它们也不一定支持相同的功能。 本地数据库仍然很难处理,我们不能确定它将如何实现不同的浏览器。 而且,即使使用HTML5,与原生应用程序相比,Web开发仍然非常有限。 您无法访问联系人,相机,加速度计等。
编辑:本月早些时候,W3C发布了一些关于HTML5演变的警告:来自ZDNet的文章
所以它只适用于有限类别的应用程序。
跨平台框架
而且我们拥有跨平台的移动应用程序框架。 你可以开发一次并部署在不同的平台上。 这些解决方案通常专注于iOS和Android,并依赖于WebKit引擎。 在使用网络技术进行开发时,它们可以提供更多与手机功能的交互。 最着名的是Nitobi PhoneGap,RhoMobile Rhodes,Appcelerator Titanium。 但其他许多人都在使用MoSync,他们并不都使用相同的技术,将您的代码翻译成自己的中间语言,然后再编译为所需的平台。
[1]请记住,苹果有一个关于为其平台编写的应用程序的特殊政策。 他们似乎并没有在这个日期阻止这些应用程序,但它是一个应该考虑的信息。 编辑:苹果从9月9日起改变了这项政策。
在部署为webapp(如上所述的html5)时,您会获得一些共同点,但对于丰富的本机应用程序,各种智能手机的API完全不同。
HTML5可能会有所改进,但要做一些有趣的事情,你需要本土化。
有像'Phonegap'这样的'跨平台'智能手机框架,但是我听说过很多关于将它用于“真实”工作的坏事。 (大量的开销等)
链接地址: http://www.djcxy.com/p/50379.html