`
javasogo
  • 浏览: 1821989 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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 Service Content Application Frameworks Communications Graphics Location Multimedia Personal Information Management System
Frameworks for building application UIs
Social and human interaction, connectivity and networking.
Generating and rendering 2D and 3D graphics
Identifying geographical location of the device or, for example, landmarks.
Media playback and recording, streaming
Personal information, such as contacts, calendar entries, and business cards.
Access to device resources
MeeGo API libraries Library Content OpenGL ES 1.1OpenGL ES 2.0Qt APIQt Mobility API
A low-level API for producing hardware-accelerated 2D and 3D graphics
A current version of OpenGL ES. Features a programmable 3D graphics pipeline.
Qt 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 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相关文章

    分享到:
    评论

    相关推荐

      meego技术架构

      MeeGo* 技术架构概述: 从开发者的视角看 MeeGo 技术 包括:• MeeGo* 概述 • MeeGo 技术架构 • MeeGo 1.2 新功能 • MeeGo 应用编程接口 • MeeGo 应用开发工具套件

      MeeGo架构浅析.docx

      虽然诺基亚和英特尔的市场推动力强大,但MeeGo需要克服一些挑战,比如可能在性能效率上不如专攻ARM架构的竞争对手,以及需要吸引开发者和用户的注意力,这可能需要杀手级应用或革命性的设计来实现。因此,MeeGo能否...

      MeeGo架构浅析.pdf

      - **硬件兼容性**:MeeGo不仅支持ARM架构,也兼容Intel/ATOM架构,能够处理计算和通信任务。而Android主要侧重于通信设备,虽然也可用于计算设备,但核心仍是面向手持设备。 - **开发平台**:MeeGo的中间件层提供...

      LinuX OS新贵:MeeGo.pdf

      它结合了Moblin的核心操作系统能力和Maemo在移动产业的影响力,以及Qt应用和用户界面框架,开发者可以使用Qt编写MeeGo应用程序。首个版本预计在2010年第二季度发布。 MeeGo的架构分为三个层次:以Moblin内核为主的...

      Developing MeeGo apps with Python and QML

      四、MeeGo应用架构 在MeeGo平台上,典型的Python+QML应用通常包含以下组件: 1. Python后端:负责业务逻辑和数据处理,通常通过QML的JavaScript引擎暴露API给前端。 2. QML前端:定义用户界面,通过与Python后端的...

      Meego 菜谱软件

      在Meego菜谱软件中,Qt C++作为基础架构,负责实现复杂的业务逻辑和系统交互,确保软件的稳定性和性能。开发者通过Qt C++可以编写高效、可维护的代码,同时利用Meego系统的原生API,实现与硬件的深度集成,提高用户...

      MeeGo UI Framework & SDK Overview

      MeeGo UI Framework & SDK为开发者提供了一个强大而灵活的开发平台,不仅支持原生和Web开发,还提供了丰富的工具集,如Qt Creator等,帮助开发者高效地创建高质量的应用程序。通过对MeeGo UI框架和SDK的理解,开发者...

      Meego开发环境搭建教程

      以下是一份详细的MeeGo开发环境搭建教程,帮助开发者们顺利开始他们的MeeGo之旅。 ### 一、系统需求 1. **操作系统**: 通常,开发环境建议在Ubuntu或者Fedora等Linux发行版上搭建,因为MeeGo官方提供了对这些系统的...

      Meego multimedia

      #### 二、MeeGo架构 MeeGo的整体架构设计遵循模块化的原则,以便于不同设备类型的适配与开发。其架构主要分为以下几个层次: 1. **内核层**:该层主要负责提供基本的操作系统功能,如进程管理、内存管理等,并支持...

      梦想回忆录:MeeGo的的历史、荣光和坎坷一生

      - **技术融合**: MeeGo整合了Maemo和Moblin的优势,支持ARM和x86架构,覆盖智能手机、上网本和平板电脑等多种设备类型。 - **市场定位**: 尽管MeeGo在技术和功能方面表现出色,但由于市场定位模糊、竞争对手的强大...

      关于meego的讲义资料

      **MeeGo架构与技术特点** 1. **Linux基础**:MeeGo基于Linux内核,利用了Linux的稳定性、安全性和可扩展性。它采用了LGPL和GPL许可证,鼓励社区贡献和创新。 2. **Qt应用框架**:MeeGo的主要应用开发框架是Qt,这...

      Developing MeeGo apps with Python and QML.zip

      9. **社区与资源**:列出相关的开发者社区、论坛、文档和在线教程,鼓励读者加入MeeGo开发者群体,持续学习和分享经验。 通过本书的学习,读者不仅可以掌握Python和QML的综合运用,还能了解到MeeGo平台的开发流程和...

      MeeGo学习笔记(适合初学者)

      下面将详细介绍MeeGo架构的三个主要层次。 1. **MeeGo OS Base层**:这是MeeGo操作系统的基础,包含了Linux内核以及核心服务。这一层还负责硬件适配软件,确保MeeGo能够适应各种不同的硬件架构。硬件适配软件包括...

      Intel AppUp开发者计划简介

      - **多操作系统支持**:支持多种操作系统,如MeeGo、Windows、Linux等,这使得开发者能够更灵活地开发应用程序。 - **广泛的市场覆盖**:通过与OEM厂商、零售商和服务提供商的合作,建立联名应用商店,大大扩展了...

      meego应用开发

      2. **跨平台兼容性**:MeeGo支持多种硬件架构,包括x86、ARM等,可以在不同的设备上运行,提供了广泛的市场覆盖。 3. **统一的开发环境**:MeeGo为开发者提供了统一的开发工具和API,使得应用程序能够在不同类型的...

      meego compliance spec

      这份文档覆盖了从架构支持、核心组件、API与ABI到图形子系统和包管理等关键领域,为开发者和实施者提供了全面的操作系统接口与环境定义。以下是对该规范的核心知识点进行的深入解读。 ### 一、引言 #### 范围与...

      Developing MeeGo apps with Python and QML(1)_pythonqml_Pythonand

      本教程首先会介绍MeeGo平台的基础知识,包括它的架构、开发环境的搭建以及MeeGo应用的生命周期管理。接着,将详细讲解Python和QML的集成方式,如何通过PyQt或PySide库将这两种语言桥接起来。Python作为后端,可以...

      基于MeeGo v1.2 操作系统的英特尔平板电脑用户体验白皮书

      #### 二、MeeGo平板电脑用户体验特性 MeeGo平板电脑用户体验不仅仅局限于界面美观或交互友好,而是从用户需求出发,重新定义了平板电脑的使用场景和方式。 - **目标用户群体**:专注于需要高效多任务处理能力的...

      system-ui-unrestricted-server_1.0.2_armel.deb_MeeGo_

      "armel"表示这个软件包是为ARM架构(Advanced RISC Machines)的低功耗版本编译的,这是许多嵌入式设备和移动设备所使用的处理器架构。因此,这个deb包可以安装在基于ARM处理器的MeeGo设备上,如诺基亚N9或某些平板...

      UNSTABLE-fastern9_1.1.7_armel.deb_reboot_MeeGo_

      "armel"表示它是为ARM架构的处理器编译的,这在移动设备中非常常见,尤其是早期的Android和MeeGo系统。"reboot"标签暗示该软件可能涉及到设备的重启功能或与系统稳定性相关,而"MeeGo"则表明这是针对MeeGo操作系统的...

    Global site tag (gtag.js) - Google Analytics