MeeGo开发者(二):MeeGo架构


参考:
http://meego.com/developers/meego-architecture/meego-architecture-layer-view
http://meego.com/developers/meego-architecture/meego-architecture-domain-view
http://meego.com/developers/meego-architecture/meego-architecture-api-view
http://meego.com/developers/meego-api

  我们重新审视MeeGo的架构,在分层方面,我们看到和MeeGo开发者:何为MeeGo?中的分层有一点点区别。

  在这个图中,原来的Middle Layer分为两个部分,一部分是封装的API,剩下一部分和Linux kernel合成Core OS层。这只是归类的问题,没有本质的区别。我个人更喜欢原来的图,更为明确,不过没关系,对于开发者,包括应用,服务,内核模块开发,需要关注Core OS,以及其上提供的MeeGo API。我们将根据这个图来浏览MeeGo的架构,而并且根据参考文档的顺序,从上向下看(一般我都是从下往上看,有点怪怪)。

 

UX层

  为不同的平台提供用户体验,MeeGo俄提供手持设备和上网本的UX,其中上网本使用MX,也就是Clutter/MX,手持设备采用MTF,Multi-Touch Framework,包括触摸,输入法,手势。开发者开发的应用产品也位于此层,使用相应的UI架构和用户互动事件触发,对下,调用MeeGo API

 

MeeGo API层

  MeeGo提供的API,也就是开发者可以使用的类库,这是API大部分来自开源社区的项目,这些项目在下一层Core OS中集成。我计划在接下来对这些API进行学习,大致晓得能够调用的能力。MeeGo采用QT作为其开发环境。下面是API的图:

  MeeGo API分为QT和QT Mobility。QT提供类似VC的图形界面处理并在上面建立我们的应用。QT是完全面向对象,易于扩展,允许真正的组件化变成。QT Mobility提供移动设备的QT化的API。MeeGo 1.1为QT 4.7和Qt mobility 1.0。基于这些API开发的应用,认为是兼容的并可以在MeeGo based平台上运行,这些API的接口也将是前向兼容的。因此在MeeGo上的开发,社区建议使用MeeGo API。然则如果MeeGo API,这和Andriod或者iOS有什么差异。所以尽管社区不建议,但是平台API是非常非常重要的部分。

  Plateform API。除了MeeGo API外,MeeGo SDK1.1还提供下面介绍的Core Layer的中间件的API。社区不建议我们使用这些API,无法保证未来的兼容性。

  Qt and Qt Quick间作为开发环境。

  我们准备搞一些小例子,主要是看看MeeGo 1.1的SDK提供哪些能力,如何使用,使得我们在开发的时候,不必消耗在学习使用方法上。请参考MeeGo 1.1 API,从两个纬度来表述API。对于平台API可以在:http://apidocs.meego.com/1.1/platform/html/index.html中查看。

MeeGo API services
ServiceContent
Application FrameworksFrameworks for building application UIs
CommunicationsSocial and human interaction, connectivity and networking.
GraphicsGenerating and rendering 2D and 3D graphics
LocationIdentifying geographical location of the device or, for example, landmarks.
MultimediaMedia playback and recording, streaming
Personal Information ManagementPersonal information, such as contacts, calendar entries, and business cards.
SystemAccess to device resources
MeeGo API libraries
LibraryContent
OpenGL ES 1.1A low-level API for producing hardware-accelerated 2D and 3D graphics
OpenGL ES 2.0A current version of OpenGL ES. Features a programmable 3D graphics pipeline.
Qt APIQt is a cross-platform application and UI framework. Using Qt, you can write web-enabled applications once and deploy them across desktop, mobile and embedded operating systems without rewriting the source code.
Qt Mobility APIQt APIs that enable access to many mobile device specific functionalities. Qt Mobility APIs enable cross-platform mobile application development.

 

Core OS层

 Linux kernel以及所有中间件的各开源社区项目,需要关注QT,这是MeeGo官方选择的跨平台开发环境。为开发者开发原生应用和web runtime应用提供基础。通过了解Core OS,可以获知平台使用了哪些计算,有哪些API,可以如何进行开发。这个分类和Maemo的类似,比原来Moblin的要清晰。

  通过这个图,我们可以了解MeeGo包括哪些内容。这些和API相对应起来。

  • Security - Security framework and enablers,提供平台的安全和用户身份确认。RPM具有完整性,MD5等安全保护,但是MeeGo究竟针对系统有什么安全的架构,好像还没有看到。在MeeGo 1.1的开发环境中,不要对这一块有太多的期望。
    1. 帐号:提供提供一个用户帐号存储的解决方案,可用户IM,邮件,日历等,提供Account API。
    2. Single Sign:提供凭证的安全存储,不同服务的认证插件架构。
    3. 完整性保护框架:对于执行,配置和数据文件进行完整权保护。
    4. 证书管理:存储和验证安全证书,可用户email,wifi和浏览器。
    5. 软件发布安全:软件发布包括安装和更新
    6. 访问控制框架:强制访问控制,整个设备的访问控制策略
    7. 安全适配:平台特定的安全和加密的抽象
  • Data Management - Meta-data storage.获取和管理文件的元数据,例如支持媒体文件的搜索元数据。这是MeeGo一个比较突出的地方,值得注意。
    1. 内容框架:Track,提供索引,云数据获取,对不同数据类型(包括媒体文件,文档)进行搜索。
  • Software Management - Package Management and software lifecycle。用于软件包的管理,MeeGo的repo都采用rpm包的方式,认为Meego就是采用rpm的管理。软件的管理对于软件商店是一个很大的范畴,由于Nokia和Intel各有各的软件商店,因此这部分可能仅设计软件的安装和更新。
  • System - Device State and Resource Policy Managmeent, Sensor, Context。用户处理设备的状态/模式,时间管理,策略控制,开启服务和传感器抽象,向上层API提供一个抽象的逻辑接口,从而适配底层的不同的厂家的硬件。
    1. 系统管理:设备状态和时间管理,例如同步/设置时钟,待机时间等,不晓得profile,也就是飞行模式是否归入此类。
    2. 资源策略:基于plugin框架,用户银票,食品,系统策略管理
    3. 开启服务
    4. context Framework:High level APO,用户设备的不同场景(上下文)特定。此不甚了解,在后面的API小例子中,可能可以更为清晰
    5. 传感器框架:提供一个接口将硬件传感器的API转换为逻辑传感器,这样可以兼容不同厂家的硬件设备。
    6. 设备模式适配:设备模式相关信息的硬件抽象层,例如watchdog,温度传感器。
    7. 触摸和震动适配:对触摸和震动设备的硬件抽象层。
  • Location - Location Framework,相关的LBS能力
    1. 定位框架:采用GeoClue开源项目。在Intel工程师方亮的文章有介绍:http://software.intel.com/zh-cn/blogs/2009/03/11/moblin-sdk-geoclue/,摘录如下:原先在应用程序中要获取设备的当前位置,最常见的做法是通过GPS定位,程序员往往需要直接访问串口读取GPS设备发来的NMEA帧,然后通过分析获得需要的位置数据。这种做法有2个缺点:第一,工作量大;第二,GPS为某个进程独占,其他应用如果也有类似需求就只能说抱歉了。在这种情况下,引入了GPS Daemon,就是Daemon独占了GPS设备,分析NMEA帧获取位置信息,并把位置信息提供给应用程序。这样GPS Daemon就可以同时为多个进程服务,并且大大减轻了程序员的工作量,不用再为编写分析NMEA数据的代码而头大了。随着技术的发展,越来越多的定位方式出现在世人面前,程序员想在程序中采用多种定位技术结合,自动选取最优定位技术来获取位置信息。在这种情况下,GeoClue出现了。GeoClue是架构在D-BUS上的一套提供位置相关信息的中间件,遵循LGPL。这里的位置相关信息包括了位置、地址和运动速度等等。GeoClue下有若干Provider提供位置相关信息。同一个Provider可能提供若干种不同类型的信息,比如gypsy可以提供位置信息与速度;不同的Provider也可能提供相同类型的信息,比如gypsy与hostip都可以提供位置信息,所不同的是前者的信息是通过GPS获得,而后者则是通过互联网上IP转经纬度的服务而获得。GeoClue提供了2套API供应用程序使用,一套是C语言API,另一套是D-BUS API,用户可以根据实际情况选择。
    2. 定位适配:对GPS等定位原设备的硬件抽象层。
  • Graphics - X11, OpenGL, input and Display drivers.支持2D,3D,包括多国文字渲染和硬件加速。
    1. Font Management:字体管理
    2. 输入适配:将硬件作为输入适配抽象,例如硬件按钮(Power键,摄像头,音量大/小),键盘,触摸屏等。
    3. X11
    4. OpenGl ES:提供Khronos接口,支持OpenGL,OpenGLES 和EGL。此外,它还包含特定于平台的GL/ES驱动和库的实现。OpenGL是非常重要,MeeGo的API参考中,分为三个部分:OpenGL,QT 4.7和Qt Mobility 1.0。
    5. 显示和图像适配:Framebuffer和显示 panel相关的平台特定的抽象。
  • Essentials - System essential libraries:提供系统基础软件包作为系统工具和库。
  • Multimedia - Multimedia related enablers and drivers。提供音频和视频的playback,流媒体,图像功能,特别是音频和视频数据的处理(检索,解复用,编码和解码,寻找等等),包括一下的子系统。最主要的是采用GStreamer来处理多媒体,采用Pluse Audio来处理音频。
    1. 图像和适配适配:使用GStreamer来处理codec和容器。GStreamer是MeeGo选用的一个重要的开源项目,以前Moblin采用Helex。
    2. 摄像头适配:采用GStreamer,接口是CameraBin
    3. UPnP:通用的即插即用UPnP stack(音频和视频的UPnP profile)
    4. GStreamer: 通过Plunin,提供回放,流媒体和图像功能。
    5. 音频适配:用户PulseAudio的平台特定模块
    6. Pluse Audio:处理银票的输入,前后处理,,输出。作为一个音频应用和音频硬件之间的proxy。
  • Personal Information Management - Calendar, Contacts, Backup, and Sync,在国内,通常PIM业务被运营商忽悠得只剩下网络同步,而且是收费的哟。PIM管理设备上的用户数据,包括日历,联系人,人物,获取设备的状况星星,例如设备位置,cable的状态,包括下面的子系统:日历殷勤,联系人引擎,邮件引擎,backup框架(这个不甚清楚,backup通常都是通过PC client来进行的,包括导入和导出,所以不太明白),同步框架(通过USB,蓝牙等传输层,可能也包括IP,在不同设备之间同步日历,邮件,联系人信息)
  • Communication - VOIP, IM, Presence, Cellular Telephony, and IP Connectivity,提供移动通信,IP电话,IM,呈现,蓝牙和Internet的连接服务。
    1. IP电话,IM和呈现:采用Telepathy开源项目,是一个模块化的通信框架,通过可插拔的backend协议,实现实时通信。在阿土操作系统看,Telepathy不太好,后来down了一个pidgin。
    2. Cellular框架:采用oFono开源项目,是基于plugin结构,支持多个平台和modem。
    3. ConnMan:连接管理器
    4. 蓝牙:采用BlueZ以及相关的扩展
    5. 通信适配:用于wifi,蓝牙设备和oFono为不同平台和modem的插件的平台特定的模块。
  • Qt - Qt, QtWRT, Qt Mobility,提供跨平台的开发工具,例如QT,QT moblity,QT webkit和QT WebRuntime
    1. Qt:QT常给人一个误解,就是它是一个UI的工具,QT实际上远超于此,他是QT应用和UI的toolkit
    2. Qt Mobility
    3. Qt Webkit:MeeGo采用Qt webkit作为layout engine.他可以在应用中显示web内容(HTML,XML,XHTML,SVG,CSS,JavaScript等)
    4. Web Runtime:提供一个运行web widgets,通过设备特有的API(提供访问其他子系统)来扩展标准的JS环境
  • Kernel - Linux Kernel and core drivers:linux内核,无须解释。

      手机的处理能力没有pc大,但是多了很多硬件设备,Haredware Adaptation包括驱动,modem等等。对于特定的硬件,可通过Hardware Adaptation提供基于硬件的相关API,例如特定的传感器,硬件codec的API。硬件适配有下面的内容:

  • Sensor
  • Device Mode
  • Haptics and Vibra触摸屏和震动马达
  • Audio
  • Camera
  • Imageing和Video
  • Location
  • Cellular
  • Connectivity
  • Input
  • Display and Graphics

     

    相关链接:我的MeeGo相关文章

     


  • 注意!

    本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



     
    © 2014-2019 ITdaan.com 粤ICP备14056181号  

    赞助商广告