• 跨平台PhoneGap技术架构一:PhoneGap简介


    学习PhoneGap有一周多的时间了,利用晚上的时间对PhoneGap学习整理一下笔记,以随笔的形式发布在博客上,希望可以和博友一块学习讨论。

    本篇分为以下几个部分:

      1. PhoneGap简介
      2. PhoneGap跨平台原理
      3. PhoneGap的优缺点
      4. PhoneGap应用案例

    PhoneGap简介

    PhoneGap是一个开源的开发框架,使用HTML,CSS和JavaScript来构建跨平台的的移动应用程序。它使开发者能够利用iPhone,Android,Palm,Symbian,Blackberry,Windows Phone和Beda智能手机的核心功能——包括地理定位,加速器,联系人,声音和振动等。

    PhoneGap跨平台原理

    在phonegap中,通过android和iphone的webview实现对html网页的展示。以Android为例,PhoneGap采用android中webview实现对html调用以及js调用java方法的。其实质也是phonegap插件的原理。
    iPhone和Android平台共同点是都有内置的WebView组件,其具备两个特性:

    1. WebView组件实质是移动设备的内置浏览器

    WebView这个内置浏览器特性是Web能被打包成本地客户端的基础,可方便的用HTML5、CSS3页面布局,这是移动Web技术的优势相对于原生开发。

    2. WebView提供Web和设备本地API双向通信的能力

    PhoneGap针对不同平台的WebView做了扩展和封装,使WebView这个组件变成可访问设备本地API的强大浏览器,所以开发人员在PhoneGap框架下可通过JavaScript访问设备本地API。
    明白以上两个特性,参照下面PhoneGap与设备本地API通信图,一个成熟的PhoneGap技术客户端运行状况如下:
    应用运行在WebView组件上 → 通过PhoneGap在各平台的扩展 → 最终访问设备本地资源

     

    PhoneGap的优缺点

    优点:
    1. 跨平台
    phonegap作为跨平台框架,其实并别writtenonce, run everywhere,各移动平台的差异还是较大,phonegap框架帮我们解决了差异性,javascript与平台系统的连接由phonegap框 架完成。成为连接移动终端的适配器,或者说中间件。

    PhoneGap通过调用JavaSCript 调用API库实现和各个平台的SDK进行无差别的交互. 以达到调用不同平台手机上摄像头,文件系统,重力感应.GPS定位等功能。

    2. 易用性
    phonegap开发人员无需直接操作平台资源。对平台资源的操作完成由phonegap框架完成。开发人员只需要用 javascript调用phonegap API就可以完成对平台资源操作。由于phonegap框架限制,对平台资源操作是有一定限制的。

    phonegap开发人员可以从web开发人员转入,目前来说web开发人员较多,成本也较低,转入phonegap开发后,可以降低移动应用产品的开发成本。这样,移动应用数量将直线提升。

    3. 提供硬件访问控制
    比起传统的Web程序,PhoneGap提供了一些列的JS 的类,可以直接访问硬件。比如加速,相机,指南针,GPS,文件访问等,可以让你用JS方便地调用系统的硬件。以弥补传统Web程序的一块错误。

    4. 可利用成熟javascript框架
    web的发展,诞生了许多javascript框架。著名的有Ext js、jQuery。随着移动应用的需求越来越大,jQuery出现了jQuery mobile版本。它的体积小,为移动应用量身定制。使用javascript框架也降低了开发难度,使得移动应用更美观。

    5. 方便的安装和使用
    PhoneGap的架构很复杂,但对于大多数开发者来说,并不需要了解phonegap内部,只用很简单的配置就可以搭好环境。只用专注写好自己的Web页面,拷贝进去就可以了。

    不足:

    1. 运行速度慢
    PhoneGap集成多了个平台.程序的载入和UI界面的反应都比原生的程序慢,UI反应延时——这是个致命伤 .它实际上还是在展示Web页面,所以载入、页面刷新等肯定是需要一定时间的。 这在用户体验上来说PhoneGAp依然无法替代原生应用程序。

     另外,html、javascript、css都运行在各平台内置浏览器webkit之上,受到webkit处理速度影响。目前来说运行速度比较慢,性能较差。

    2.       不适合部分程序

            如果你的程序需要3D功能,或者对界面刷新有较高的要求,比如类似于游戏的程序现在来说还只是用原生的语言会比较好。PhoneGap支持API还有待在各个平台逐步完善

    3.       调用平台资源差

         phonegap应用程序对平台资源的使用依赖于phonegap框架本身,由于phonegap是第三方框架,做不到100%调用平台资源,只有依靠phonegap的升级满足调用平台资源的需求。

            比如说,现在版本未能支持视频解码与播放等

    4.       内存消耗大

            有测试表明,用phonegap于android java开发同一个应用。运行phonegap应用内存消耗远大于原生态androidjava应用。对于频繁操作,释放内存较慢,从而导致内存消耗量飙升。

    5.       调试难度大

            目前phonegap可以在控制台输出简单的JS调试日志,但是并不方便。调试js只能选择firefox  firebug调试。

    PhoneGap应用案例

    1.僵尸菜园-Phonegap典型应用
    http://www.phonegap.cn/?p=528

    2.PhoneGap构建应用程序:GoodDay
    http://www.phonegap.cn/?p=364

    参考文章:

    http://topmanopensource.iteye.com/blog/1536256

    http://www.open-open.com/home/space-2869-do-blog-id-8662.html

  • 相关阅读:
    快速排序理论---不含源码
    归并排序理论---不含源码
    希尔排序(shell)理论---不含源码
    Visual C++中error spawning cl.exe解决办法
    数据库的基础知识点---1
    冒泡排序的基础知识部分(不含源码)
    在虚拟机的Linux系统下安装wineqq
    数据变量的别名
    void*和void类型
    变量的作用域和连接性
  • 原文地址:https://www.cnblogs.com/ever4ever/p/2583652.html
Copyright © 2020-2023  润新知