参考:
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
Frameworks for building application UIs
|
Communications
Social and human interaction, connectivity and networking.
|
Graphics
Generating and rendering 2D and 3D graphics
|
Location
Identifying geographical location of the device or, for example, landmarks.
|
Multimedia
Media playback and recording, streaming
|
Personal Information Management
Personal information, such as contacts, calendar entries, and business cards.
|
System
Access to device resources
|
MeeGo API libraries
Library
Content
OpenGL ES 1.1
A low-level API for producing hardware-accelerated 2D and 3D graphics
|
OpenGL ES 2.0
A current version of OpenGL ES. Features a programmable 3D graphics pipeline.
|
Qt API
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 Mobility API
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的开发环境中,不要对这一块有太多的期望。
- 帐号:提供提供一个用户帐号存储的解决方案,可用户IM,邮件,日历等,提供Account API。
- Single Sign:提供凭证的安全存储,不同服务的认证插件架构。
- 完整性保护框架:对于执行,配置和数据文件进行完整权保护。
- 证书管理:存储和验证安全证书,可用户email,wifi和浏览器。
- 软件发布安全:软件发布包括安装和更新
- 访问控制框架:强制访问控制,整个设备的访问控制策略
- 安全适配:平台特定的安全和加密的抽象
Data Management
- Meta-data storage.获取和管理文件的元数据,例如支持媒体文件的搜索元数据。这是MeeGo一个比较突出的地方,值得注意。
- 内容框架: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提供一个抽象的逻辑接口,从而适配底层的不同的厂家的硬件。
- 系统管理:设备状态和时间管理,例如同步/设置时钟,待机时间等,不晓得profile,也就是飞行模式是否归入此类。
- 资源策略:基于plugin框架,用户银票,食品,系统策略管理
- 开启服务
- context Framework:High level APO,用户设备的不同场景(上下文)特定。此不甚了解,在后面的API小例子中,可能可以更为清晰
- 传感器框架:提供一个接口将硬件传感器的API转换为逻辑传感器,这样可以兼容不同厂家的硬件设备。
- 设备模式适配:设备模式相关信息的硬件抽象层,例如watchdog,温度传感器。
- 触摸和震动适配:对触摸和震动设备的硬件抽象层。
Location
- Location Framework,相关的LBS能力
- 定位框架:采用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,用户可以根据实际情况选择。
- 定位适配:对GPS等定位原设备的硬件抽象层。
Graphics
- X11, OpenGL, input and Display drivers.支持2D,3D,包括多国文字渲染和硬件加速。
- Font Management:字体管理
- 输入适配:将硬件作为输入适配抽象,例如硬件按钮(Power键,摄像头,音量大/小),键盘,触摸屏等。
- X11
- OpenGl ES:提供Khronos接口,支持OpenGL,OpenGLES 和EGL。此外,它还包含特定于平台的GL/ES驱动和库的实现。OpenGL是非常重要,MeeGo的API参考中,分为三个部分:OpenGL,QT 4.7和Qt Mobility 1.0。
- 显示和图像适配:Framebuffer和显示 panel相关的平台特定的抽象。
Essentials
- System essential libraries:提供系统基础软件包作为系统工具和库。
Multimedia
- Multimedia related enablers and drivers。提供音频和视频的playback,流媒体,图像功能,特别是音频和视频数据的处理(检索,解复用,编码和解码,寻找等等),包括一下的子系统。最主要的是采用GStreamer来处理多媒体,采用Pluse Audio来处理音频。
- 图像和适配适配:使用GStreamer来处理codec和容器。GStreamer是MeeGo选用的一个重要的开源项目,以前Moblin采用Helex。
- 摄像头适配:采用GStreamer,接口是CameraBin
- UPnP:通用的即插即用UPnP stack(音频和视频的UPnP profile)
- GStreamer: 通过Plunin,提供回放,流媒体和图像功能。
- 音频适配:用户PulseAudio的平台特定模块
- 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的连接服务。
- IP电话,IM和呈现:采用Telepathy开源项目,是一个模块化的通信框架,通过可插拔的backend协议,实现实时通信。在阿土操作系统看,Telepathy不太好,后来down了一个pidgin。
- Cellular框架:采用oFono开源项目,是基于plugin结构,支持多
个平台和modem。
- ConnMan:连接管理器
- 蓝牙:采用BlueZ以及相关的扩展
- 通信适配:用于wifi,蓝牙设备和oFono为不同平台和modem的插件的平台特定的模块。
Qt
- Qt, QtWRT, Qt Mobility,提供跨平台的开发工具,例如QT,QT moblity,QT webkit和QT WebRuntime
- Qt:QT常给人一个误解,就是它是一个UI的工具,QT实际上远超于此,他是QT应用和UI的toolkit
- Qt Mobility
- Qt Webkit:MeeGo采用Qt webkit作为layout engine.他可以在应用中显示web内容(HTML,XML,XHTML,SVG,CSS,JavaScript等)
- 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 1.2 新功能 • MeeGo 应用编程接口 • MeeGo 应用开发工具套件
虽然诺基亚和英特尔的市场推动力强大,但MeeGo需要克服一些挑战,比如可能在性能效率上不如专攻ARM架构的竞争对手,以及需要吸引开发者和用户的注意力,这可能需要杀手级应用或革命性的设计来实现。因此,MeeGo能否...
- **硬件兼容性**:MeeGo不仅支持ARM架构,也兼容Intel/ATOM架构,能够处理计算和通信任务。而Android主要侧重于通信设备,虽然也可用于计算设备,但核心仍是面向手持设备。 - **开发平台**:MeeGo的中间件层提供...
它结合了Moblin的核心操作系统能力和Maemo在移动产业的影响力,以及Qt应用和用户界面框架,开发者可以使用Qt编写MeeGo应用程序。首个版本预计在2010年第二季度发布。 MeeGo的架构分为三个层次:以Moblin内核为主的...
四、MeeGo应用架构 在MeeGo平台上,典型的Python+QML应用通常包含以下组件: 1. Python后端:负责业务逻辑和数据处理,通常通过QML的JavaScript引擎暴露API给前端。 2. QML前端:定义用户界面,通过与Python后端的...
在Meego菜谱软件中,Qt C++作为基础架构,负责实现复杂的业务逻辑和系统交互,确保软件的稳定性和性能。开发者通过Qt C++可以编写高效、可维护的代码,同时利用Meego系统的原生API,实现与硬件的深度集成,提高用户...
MeeGo UI Framework & SDK为开发者提供了一个强大而灵活的开发平台,不仅支持原生和Web开发,还提供了丰富的工具集,如Qt Creator等,帮助开发者高效地创建高质量的应用程序。通过对MeeGo UI框架和SDK的理解,开发者...
以下是一份详细的MeeGo开发环境搭建教程,帮助开发者们顺利开始他们的MeeGo之旅。 ### 一、系统需求 1. **操作系统**: 通常,开发环境建议在Ubuntu或者Fedora等Linux发行版上搭建,因为MeeGo官方提供了对这些系统的...
#### 二、MeeGo架构 MeeGo的整体架构设计遵循模块化的原则,以便于不同设备类型的适配与开发。其架构主要分为以下几个层次: 1. **内核层**:该层主要负责提供基本的操作系统功能,如进程管理、内存管理等,并支持...
- **技术融合**: MeeGo整合了Maemo和Moblin的优势,支持ARM和x86架构,覆盖智能手机、上网本和平板电脑等多种设备类型。 - **市场定位**: 尽管MeeGo在技术和功能方面表现出色,但由于市场定位模糊、竞争对手的强大...
**MeeGo架构与技术特点** 1. **Linux基础**:MeeGo基于Linux内核,利用了Linux的稳定性、安全性和可扩展性。它采用了LGPL和GPL许可证,鼓励社区贡献和创新。 2. **Qt应用框架**:MeeGo的主要应用开发框架是Qt,这...
9. **社区与资源**:列出相关的开发者社区、论坛、文档和在线教程,鼓励读者加入MeeGo开发者群体,持续学习和分享经验。 通过本书的学习,读者不仅可以掌握Python和QML的综合运用,还能了解到MeeGo平台的开发流程和...
下面将详细介绍MeeGo架构的三个主要层次。 1. **MeeGo OS Base层**:这是MeeGo操作系统的基础,包含了Linux内核以及核心服务。这一层还负责硬件适配软件,确保MeeGo能够适应各种不同的硬件架构。硬件适配软件包括...
- **多操作系统支持**:支持多种操作系统,如MeeGo、Windows、Linux等,这使得开发者能够更灵活地开发应用程序。 - **广泛的市场覆盖**:通过与OEM厂商、零售商和服务提供商的合作,建立联名应用商店,大大扩展了...
2. **跨平台兼容性**:MeeGo支持多种硬件架构,包括x86、ARM等,可以在不同的设备上运行,提供了广泛的市场覆盖。 3. **统一的开发环境**:MeeGo为开发者提供了统一的开发工具和API,使得应用程序能够在不同类型的...
这份文档覆盖了从架构支持、核心组件、API与ABI到图形子系统和包管理等关键领域,为开发者和实施者提供了全面的操作系统接口与环境定义。以下是对该规范的核心知识点进行的深入解读。 ### 一、引言 #### 范围与...
本教程首先会介绍MeeGo平台的基础知识,包括它的架构、开发环境的搭建以及MeeGo应用的生命周期管理。接着,将详细讲解Python和QML的集成方式,如何通过PyQt或PySide库将这两种语言桥接起来。Python作为后端,可以...
#### 二、MeeGo平板电脑用户体验特性 MeeGo平板电脑用户体验不仅仅局限于界面美观或交互友好,而是从用户需求出发,重新定义了平板电脑的使用场景和方式。 - **目标用户群体**:专注于需要高效多任务处理能力的...
"armel"表示这个软件包是为ARM架构(Advanced RISC Machines)的低功耗版本编译的,这是许多嵌入式设备和移动设备所使用的处理器架构。因此,这个deb包可以安装在基于ARM处理器的MeeGo设备上,如诺基亚N9或某些平板...
"armel"表示它是为ARM架构的处理器编译的,这在移动设备中非常常见,尤其是早期的Android和MeeGo系统。"reboot"标签暗示该软件可能涉及到设备的重启功能或与系统稳定性相关,而"MeeGo"则表明这是针对MeeGo操作系统的...