Cod*_*eat 11 compiler-construction mobile cross-platform
我试图找到一种方法来开发真正的原生移动应用程序,跨平台.我发现的工具数量巨大,非常庞大.
我试过的所有工具"都说"最终结果将是原生的,但实际上并非如此.它是一个可执行文件,其中包含一个webbrowser,还有一些额外的本机层/框架到设备特定功能.
我想要一个真正的原生应用程序的原因是:
我试过的产品:
目前我已经下载了"RhoStudio",但对此有一些疑问,因为在介绍视频中他们谈论的是我不想要的东西.
目标方向首先是Android,iOS,也可能是未来的Windows Phone.注意:我没有Mac,因此我无法在Mac上编译它.
我想要的是不可能的,还是有这样的产品可以做到这一点?
编辑:看到我的回答,答案是否定的!
在问了这个问题2年后,我可以说:不,这是不可能的,这是一个神话.
我尝试过的所有产品都使用某种包装或使用第二种语言作为调用原生内容的层.虽然这些库是原生的,但主程序却不是.使用smartface.io的Cosku的最新答案是一个很好的例子,他们声称它是原生的,但它不是.
为什么这么难?问题是平台所需的编程语言(使语言变得复杂的语言差异).将第二种语言翻译成平台的主要语言并且它是特定的库是非常复杂的,你只能通过使用本机二进制文件包装来实现这一点.第二个障碍是必须能够跨平台运行的所需编译器.
但是,为什么依靠第二语言或第三方开发工具来构建应用程序时输出大致相同是不好的,这个问题在这张图片中得到了很好的说明:http: //xkcd.com/927/

图像是关于标准的,但这就是发生的事情,为标准创建新标准.例如,使用PhoneGap时,您必须学习PhoneGap API的基础知识.您依赖于呼叫PhoneGap的"新标准".这个问题是你完全依赖PhoneGap的支持而存在.它可以在应用程序的生命周期中引入第二个弱点.
IMO,如果你想把它包装成跨平台,依靠第三方产品和库并不是一个明智的想法.更好的是自己写一个包装器,就像我做的那样,跳过膨胀.这一切的真正好处是你自己编写了包装代码,并且你理解了底层结构.此外,它更容易扩展或更改,您可以跳过不需要的东西.
今天,我使用javascript界面在最长的现有和稳定的"语言"HTML中创建和设计应用程序的UI.该应用程序也可以在浏览器中运行,并且在缺少特定功能时不会中断,例如振动.你不能用phonegap获得相同的结果,试试吧!您可以像普通网站一样轻松地设计具有响应技术的应用程序(例如在Android中试试这个;-)).从技术上讲,它可以在任何地方,浏览器或webview中的任何平台上运行,但不使用任何特殊的移动JavaScript库!您不需要这些特殊的库,实际上,使用"普通"库版本.
我编写了一个编译器/混淆器,用于将UI源"打包"到一个将由本机shell加载的文件中.这是为了保护源,因此不容易查看或修改源.
我唯一需要做的就是支持app平台,为它编写一个本机包装器.如果某个平台由于某种原因而死(例如过去的Windows Mobile),我只需要为它编写一个新的包装器.这比从头开始再次编写整个程序更容易.此外,当有新平台时,它也可以在平台浏览器中运行.
如果您的应用不依赖于特定的硬件(如游戏),或者可以在没有特殊硬件要求的情况下运行,那么这就是延长应用生命周期的方法.使用HTML5和javascript设计GUI并使用本机shell来使用特定的OS功能.
它慢吗?我不得不说.至少不要使用任何笨重和臃肿的特殊设计的移动JavaScript库的东西,不要在触摸屏设备上使用click事件,而是使用touchstart.此外,HTML引擎将得到改进,并且有更好的HTML5功能支持,使您能够编写功能强大的HTML5 Web应用程序,而无需使用本机语言实现此功能.
IMO,这是前进的方式(对我来说)和我寻找最佳方式的过程,开发跨平台的移动应用程序并延长生命周期.希望它也可以帮助你决定什么是最好的.
对于跨平台原生iOS,Android,Mac和Windows应用程序,请查看Xamarin.C#中的代码,编译为本机.对于iOS,您可以利用XCode工具进行应用程序布局,Xamarin Studio可以非常干净地集成它.
为了完整起见,PhoneGap在TRIGGER.IO中有一个值得(是的,基于WebView的)竞争对手.虽然它的方法类似于PhoneGap/Cordova,但它改进了用于访问本机功能的API,简化了推送通知,并执行了更快的云构建.
我不会以任何方式与这两种产品相关联......我只是喜欢它们.
| 归档时间: |
|
| 查看次数: |
12560 次 |
| 最近记录: |