我试图找到一种方法来开发真正的本地移动应用,跨平台。我发现的工具数量巨大,非常巨大。
我尝试过的所有工具都说,最终的结果将是本土化的,但实际上不是这样的。它是一个可执行文件,里面有一个and浏览器,还有一些额外的本机层/框架,用于设备特定的功能。
我想要一个真正的本地应用程序的原因是:
我试过的产品:
目前,我已经下载了"RhoStudio“,但对它有一些疑问,因为在介绍视频中,他们谈到了我不想要的东西。
目标方向首先是安卓、iOS以及未来的Windows。注意:我没有Mac,所以我不能在Mac上编译它。
我想要什么是不可能的还是有这样的产品可以做到这一点?
编辑:看我的答案,答案是不!
发布于 2014-06-18 21:38:08
在提出这个问题两年之后,我可以说:不,这是不可能的,这是一个神话。
我尝试过的所有产品都使用某种包装或使用第二语言作为一个层来调用本地的东西。虽然库是本机的,但主程序不是。宇宙与smartface.io的最新答案是一个很好的例子,他们声称它是本地的,但它不是。
为什么这么难?问题在于平台所需的编程语言(使其复杂的语言差异)。要将第二种语言转换为平台的主要语言和特定的库太复杂了,您只能通过使用本机二进制文件包装东西来实现这一点。第二个障碍是必须能够跨平台运行所需的编译器。
但是为什么在输出基本相同的情况下依赖第二语言或第三方开发工具来构建应用程序呢?这个问题在下面的图片中得到了很好的说明:http://xkcd.com/927/。

这个形象是关于标准的,但事实就是这样,为一个标准创造了一个新的标准。例如,在使用PhoneGap时,您必须学习PhoneGap API的基础知识。您依赖于调用PhoneGap的“新标准”。这方面的问题是,您完全依赖于PhoneGap支持和它的存在。它可以在应用程序的生命周期中引入第二个弱点。
海事组织,如果你想把东西包装成跨平台的话,依赖第三方产品和图书馆并不是一个明智的主意。最好是自己写一个包装纸,就像我做的那样,跳过浮肿。这一切的一个真正好处是,您自己编写了包装程序代码,并且了解了底层结构。此外,它更容易扩展或改变,你可以跳过你不需要的东西。
今天,我创建并设计了一个应用程序的UI,它使用现有的、稳定的HTML语言,并带有javascript接口。该应用程序也可以在浏览器中运行,并且在缺少特定功能(例如振动)时不会中断。你不能和phonegap取得相同的结果,试试吧!你可以像普通的网站一样轻松地使用响应技术来设计这个应用程序(例如,在Android中试试这个;-)。从技术上讲,它可以在任何地方运行,在浏览器或use视图中的任何平台上运行,但不使用任何特殊的Mobile库!实际上,您不需要这些特殊的库,而是使用“普通”库版本。
我已经为它编写了一个编译器/混淆器,将UI源代码“打包”到一个将由本机shell加载的文件中。这是为了保护源代码,所以很难查看或修改源代码。
要支持应用平台,我唯一需要做的就是为它编写一个本机包装器。如果某个平台因某种原因而死(例如,过去的Windows ),我只需要为它编写一个新的包装器。这比从头开始编写整个程序更容易。此外,当有一个新的平台,它也可以运行在平台浏览器。
如果你的应用程序不依赖于特定的硬件(比如游戏),或者可以在没有特殊硬件要求的情况下运行,这是延长应用程序生命周期的方法。使用HTML5和javascript来设计GUI,并使用本机shell使用特定的OS特性。
很慢吗?我不得不说不。至少不要使用任何庞大和臃肿的特殊设计的移动javascript库的东西,也不要在触摸屏设备上使用点击事件,而是使用touchstart。此外,HTML现在将得到改进,而且对HTML5特性的更好支持使您能够编写功能强大的HTML5 need应用程序,而无需用本机语言实现这一点。
国际海事组织,这条路(对我来说)和我的旅程找到了最好的方式,开发移动应用的跨平台和延长生命周期。希望它也能帮助你决定什么是最好的。
发布于 2013-12-06 00:46:15
对于跨平台的原生iOS、Android、Mac和Windows应用程序,请查看扎马林。C#中的代码,编译成本机。对于iOS,您可以利用XCode工具进行应用程序布局,并且Xamarin与它集成得非常干净。
为了完整起见,PhoneGap在TRIGGER.IO中有一个值得(是的,基于WebView的)竞争对手。虽然它的方法类似于PhoneGap/Cordova,但它改进了用于访问本机功能的API,简化了推送通知,并执行了更快的云构建。
我和这些产品都没有任何联系.我只是喜欢他们俩。
发布于 2013-02-17 07:41:51
你试过www.codenameone.com了吗?它是开源的,基于java的,只需要eclipse或netbeans来开发。
https://stackoverflow.com/questions/10833008
复制相似问题