【VC++开源代码栏目提醒】:网学会员为需要VC++开源代码的朋友们搜集整理了MeeGo开发者(二):MeeGo架构 - 操作系统相关资料,希望对各位网友有所帮助!
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手持设备采用MTFMulti-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的开发环境中不要对这一块有太多的期望。
1. 帐号提供提供一个用户帐号存储的解决方案可用户IM邮件日历等提供Account API。
2. Single Sign提供凭证的安全存储不同服务的认证插件架构。
3. 完整性保护框架对于执行配置和数据文件进行完整权保护。
4. 证书管理存储和验证安全证书可用户emailwifi和浏览器。
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 FrameworkHigh 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.支持2D3D包括多国文字渲染和硬件加速。
1. Font Management字体管理 2. 输入适配将硬件作为输入适配抽象例如硬件按钮Power键摄像头音量大小键盘触摸屏等。
3. X11 4. OpenGl ES提供Khronos接口支持OpenGLOpenGLES 和EGL。
此外它还包含特定于平台的GL/ES驱动和库的实现。
OpenGL是非常重要MeeGo的API参考中分为三个部分OpenGLQT 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提供跨平台的开发工具例如QTQT moblityQT webkit和QT WebRuntime 1. QtQT常给人一个误解就是它是一个UI的工具QT实际上远超于此他是QT应用和UI的toolkit 2. Qt Mobility 3. Qt WebkitMeeGo采用Qt webkit作为layout engine.他可以在应用中显示web内容HTMLXMLXHTMLSVGCSSJavaScript等 4. Web Runtime提供一个运行web widgets通过设备特有的API提供访问其他子系统来扩展标准的JS环境 Kernel - Linux Kernel and core driverslinux内核无须解释。
手机的处理能力没有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
上一篇:
Microsoft_Visual_Studio_2012_+_OpenCV2.3.1环境配置教程
下一篇:
论“十二五”期间的行政体制改革