meego开发的学习路线
2011年06月26日
不同版本的meego系统,底层和中间层架构,大体是一致的,也是可以定制裁剪的。区别主要在最上层的用户体验层,比如handset版和notebook版的meego,UI就很不一样(UI的开发环境,也不一样),这篇文档,是针对handset版meego的学习路线,做的一个总结。后面提高到的meego,未做明确说明的情况下,都是特指handset版的meego系统。
一、基础
1、编程语言
1.1 meego的图形界面,是基于qt开发的,不用说,C++肯定是首选的开发语言。
1.2 STL的使用。qt自己实现了一套类STL接口,和标准的STL仅有一些小的区别,而且也有api文档。之所以单独提到STL,是因为这个东西太重要的,它的核心内容,就是容器和算法,这是c++程序中最基本的数据操作,一定要掌握。(初学者,可以通过STL的中文教程来学习,然后很容易就能转到qt的类stl接口上编写代码)。
1.3 meego是的中间层,不全是由qt开发的,其中的一部分,是由c语言写出来的。其实meego上很多中间层的服务程序,都是直接用的gnome桌面环境中的开源项目,而gnome的基础,就是基于c语言的gobject系统,所以,c语言也是一个重要的开发语言。
但是,c并不是必须的,如果懂c,相当于锦上添花,后面在第二部分,我会详细的解释。
2、明确一些概念
2.1 首先明确一点,qt不仅仅是用来绘图的,qt其实是一个很完善的底层库,除了绘图,qt还融合了很多和UI无关的功能,比如网络、xml、sql等等,qt都有相关的类和框架。
2.2 meego是基于qt的,准确点描述,可以是这样:meego继承qt,开发了一套GUI库--libmeegotouch,meego的界面,就是用libmeegotouch开发的,而隐藏在界面背后的功能性的代码,则是用qt开发的。
2.3 qt有一个非常好的文档系统和众多的example code,一定要充分利用。
2.4 虽然libmeegotouch也有文档和example code,但是,由于libmeegotouch仅仅是负责绘制GUI,它的example code有局限性,而且数量也较少,因此对于开发人员,一定还要通过qt example code来深入学习。
3、qt/meego基础学习
3.1 qmake的使用。qt程序使用qmake和pro文件进行工程管理。请看文档 qmake Tutorial -- http://doc.qt.nokia.com/4.7/qmake-tutorial.html
3.2 qt的对象系统。请看文档 Object Model -- http://doc.qt.nokia.com/4.7/object.html
和 The Property System -- http://doc.qt.nokia.com/4.7/properties.html#qt-s-property-system
3.3 qt中的信号和槽函数,这是qt的特色之一,是对c++扩充后的新概念。请看文档 Signals & Slots --http://doc.qt.nokia.com/4.7/signalsandslots.html
3.4 qt中的事件传递和主事件循环,请看文档 The Event System -- http://doc.qt.nokia.com/4.7/eventsandfilters.html 和 AnotherLook at Events -- http://doc.qt.nokia.com/qq/qq11-events.html,初学者可能会觉得这里很抽象,要理解事件循环,更基础的一个概念是文件的异步操作(select/poll/epoll 函数),这个可以随着开发的深入再慢慢体会。
3.5 qt中的容器类,这就是前面提到的qt中的类STL接口,请看文档 Container Classes -- http://doc.qt.nokia.com/4.7/containers.html
4、meego/qt中的widget
4.1 不管是哪一种GUI库,都有widget的概念,相当于windows编程中的控件。按钮、文本编辑框、下拉菜单,这些都是widget,widget概念的引入,使得图形界面编程更加的方便快捷。
4.2 qt里面,有两套绘图系统,一套是QWidget+QLayoutItem系统,这个是桌面环境编程中使用的widget,另一套是Graphics View Framework,这套系统比xserver更灵活,可以对基本的图形元素做旋转操作,也初步实现了widget的父类QGraphicsWidget,但是并没有进一步实例化。
关于Graphics View Framework,请看文档 Graphics ViewFramework -- http://doc.qt.nokia.com/4.7/graphicsview.html
4.3 meego是使用在小屏幕设备上的一个系统,如前所述,QWidget是为桌面环境设计的,不适合手持设备,虽然QGraphicsWidget并不完善,但是Graphics View Framework有很强的灵活性,所以meego选择从QGraphicsWidget继承,专门为小屏幕设备实现了一套widget库--MWidget。QWidget和MWidget虽然是两套不同的widget,但是在设计理念和设计模式上,基本是相同的,尤其是layout系统,使用方法都是类似的。因此,如果已经熟悉QWidget了,则MWidget也可以很快的上手。如果是新手,则可以通过QWidget+QLayoutItem相关的技术文档来学习qt中layout的基本思路,然后再阅读MWidget的example code。下面给出一些参考文档,
Layout Management -- http://doc.qt.nokia.com/4.7/layout.html
Widgets and Layouts -- http://doc.qt.nokia.com/4.7/widgets-and-layouts.html
MWidget Layout -- http://apidocs.meego.com/1.1/platform/html/libmeegotouch/layouts.html
Common Components -- http://apidocs.meego.com/1.1/platform/html/index.html
4.4 在熟悉了widget+layout的基本理念和使用方法后,就可以开始看meego的example code了,阅读libmeegotouch的源码目录中的example子目录中的代码,这是学习meego开发的最好的办法。首先推荐阅读的是example目录中的子目录 tutorial_music_catalogue,关于这个代码,可以参考文档 http://apidocs.meego.com/mtf/tutorial.html 中的介绍。4.5 qt中的widget,数量巨多,很容易让人产生恐惧感。但是到了meego中,由于是为手持设备设计的,屏幕较小,widget的数量也少了很多,常用的widget,目前就只有10多个,像按钮、文本编辑框这一类widget,用法都很简单,很容易上手。唯一一个有一定难度的widget,就是MList,这个东西是手机上常用的一种widget,就是一个长的列表。MList使用了qt中的model/view framework,请看文档 http://doc.qt.nokia.com/4.7/model-view-programming.html。libmeegotouch源码目录example中的子目录,apscanner,是一个使用了model/view框架的例子,要通过这个代码学习MList的使用。
5、meego/qt中常用的框架、技术
5.1 动画框架,qt提供了一个Animation Framework,可以让widget动起来(其实是让QObject动起来),请看文档 The Animation Framework -- http://doc.qt.nokia.com/4.7/animation-overview.html
5.2 qt中的多线程,请看文档Thread Support in Qt -- http://doc.qt.nokia.com/4.7/threads.html
5.3 meego是为手持设备设计的,而现在流行的手机终端,都有触摸屏,qt中,也提供了对触摸屏手势的支持,请看文档
Gestures Programming -- http://doc.qt.nokia.com/4.7/gestures-overview.html
Gestures and Multitouch -- http://apidocs.meego.com/1.1/platform/html/index.html
5.4 meego中,为widget引入了css的概念,可以用css文件来控制MWidget的许多属性,请看文档 css in meego --http://apidocs.meego.com/1.1/platform/html/libmeegotouch/styling.html5.5meego的国际化处理,是基于qt的国际化方案的,请看文档
Internationalization with Qt -- http://doc.qt.nokia.com/4.7/internationalization.html
Internationalisation Guidelines -- http://apidocs.meego.com/1.1/platform/html/libmeegotouch/i18n.html二、深入
前面的介绍,着重于meego开发的基本技能,尤其是widget的使用。隐藏在GUI后面的功能性代码的开发,meego也提供了很多优秀的编程框架。
1、进程间通信。linux桌面环境最常用的通信方式是dbus,而且dbus已经成为一个标准,meego自然也是使用dbus。
1.1 dbus原生是用c语言开发的,同时可以绑定到很多面向对象的编程语言之上,详细介绍,可以参考http://www.freedesktop.org/wiki/Software/dbus
1.2 gnome桌面开发中,使用的是dbus-glib库,这个是基于gobject对象系统的c库,详细介绍,可以参考http://library.gnome.org/devel/dbus-glib/unstable/index.html
1.3 qt中也绑定了dbus,详细介绍,可以参考http://doc.qt.nokia.com/4.7/intro-to-dbus.html
2、数据库
2.1 meego平台上使用了一个中心数据库,tracker,这个也是gnome桌面项目中发展起来的一个技术,详细介绍,可以参考http://projects.gnome.org/tracker/
2.2 gnome桌面开发中,使用的是tracker库(基于dbus),是基于gobject对象系统的c库,可以从http://ftp.gnome.org/pub/GNOME/sources/tracker/0.9/ 下载
2.3 qt也对tracker做了一个绑定,有一个libqttracker库,可以从 http://maemo.gitorious.org/maemo-af/libqttracker/trees/master下载3、多媒体编程
3.1 qt有一套多媒体编程框架Phonon ,但是这并不是qt的最终目标。可以忽略这个框架。
3.2 qt现在有一个单独的项目,qt-mobility,其中有一个新的多媒体编程框架 Multimedia -- http://doc.qt.nokia.com/qtmobility-1.1.0/multimedia.html,这个才是qt将会主推的方案,meego上也是用的这套框架。
3.3 如果只是开发音频/视频播放器,Multimedia已经足够了,它把很多编解码的细节都隐藏了,开发者可以集中精力开发用户体验。Multimedia的后端,使用的是gstreamer,gstreamer是gnome桌面项目中发展起来的一套多媒体编解码框架,是基于gobject对象系统的c库,可以参考http://www.gstreamer.net/ ,如果需要灵活的开发功能更复杂的多媒体程序,则可以使用gstreamer框架。
4、即时通讯程序
4.1 gnome桌面项目中,发展了一个即时通讯的库,telepathy(基于dbus),这是一个框架,可以把不同的即时通讯程序协议容括进来,可以参考http://telepathy.freedesktop.org/wiki/
4.2 原生的telepathy,是基于gobject开发的c库,可以参考 http://telepathy.freedesktop.org/doc/telepathy-glib/ 和http://telepathy.freedesktop.org/doc/book/
4.3 qt也绑定了telepathy,提供了一个c++接口,可以参考 http://telepathy.freedesktop.org/doc/telepathy-qt4/
5、meego开发中的c语言
从前面介绍的4个框架来看,原生都是用c语言开发的,而且都有基于gobject系统的c接口。qt做的,主要是对这类底层库的一个上层封装,或者是编程语言的绑定。对于开发者,在学习这些框架的时候,如果了解gobject系统,学习起来肯定会更方便,而且很多可以参考的文档,也都是以c语言的原生接口为例的,包括大量的example code,也是用c写的。所以,在开发过程中,基于gobject对象系统的c编程,是开发者的第二个有力工具。
转载至:http://my.oschina.net/jayzonex/blog/13788
发表评论
-
道周中学2012年高三地理寒假作业答案
2012-01-20 11:42 592道周中学2012年高三地理 ... -
化学计算题的几种常见解法
2012-01-20 11:42 592化学计算题的几种常见解法 2012年01月15日 一、差 ... -
Windows编程类书籍介绍(转)
2012-01-20 11:42 472Windows编程类书籍介绍(转) 2012年01月08日 ... -
ls命令选项详解
2012-01-20 11:42 753ls命令选项详解 2012年01月19日 http:// ... -
js中export的问题-真爱无悔-博客园
2012-01-19 16:32 731js中export的问题-真爱无悔-博客园 2011年03月 ... -
AS3各种判断陷阱......以及处理方法
2012-01-19 16:32 554AS3各种判断陷阱......以 ... -
JavaScript的例外处理(try...catch...finally)
2012-01-19 16:32 616JavaScript的例外处理(try...catch...f ... -
转载 js中的基本常识 收藏
2012-01-19 16:32 563转载 js中的基本常识 收 ... -
JavaScript--JavaScript对象
2012-01-19 16:32 547JavaScript--JavaScript对象 2 ... -
EGLIBC库介绍
2012-01-17 06:17 573EGLIBC库介绍 2011年05月05 ... -
给Win32 GUI程序调试信息输出方法
2012-01-17 06:17 717给Win32 GUI程序调试信息输出方法 2011年09月2 ... -
SAMSUNG S3C2440的简易BootLoader ㈢
2012-01-17 06:17 610SAMSUNG S3C2440的简易BootLoa ... -
GCC调试基础知识
2012-01-17 06:17 503GCC调试基础知识 2011年08月19日 1984年, ... -
神马都是浮云
2012-01-16 04:57 538神马都是浮云 2012年01月14日 今天给litt ... -
神马都是浮云。、
2012-01-16 04:57 581神马都是浮云。、 2011年12月12日 1、上课时,老 ... -
补考重修都是浮云!
2012-01-16 04:57 673补考重修都是浮云! 2012 ... -
神马=浮云?
2012-01-16 04:57 601神马=浮云? 2011年12月30日 我用一生的时间,在 ...
相关推荐
**Meego开发环境搭建教程** Meego是一款基于Linux的操作系统,专为移动设备如智能手机、平板电脑和上网本设计。为了进行MeeGo应用的开发,我们需要先...记得在实践中不断学习和提升,祝你在MeeGo开发道路上一切顺利!
在Windows环境下搭建MeeGo开发环境是一项技术性的任务,主要涉及到操作系统兼容性、文件系统格式、SDK安装、网络代理配置、目标与运行时环境创建、Qt Creator的配置以及模拟器加速等多个步骤。以下是对这些知识点的...
qt meego开发入门
【Meego 开发环境配置详解】 Meego是一个基于Linux的操作系统,主要面向移动设备和嵌入式设备。本文将详细介绍如何在Ubuntu环境下配置MeeGo的开发环境,以便进行MeeGo Netbook应用的开发。 ### 硬件要求 1. **CPU...
MeeGo是一款由诺基亚和英特尔联合开发,基于Linux的开源操作系统。它特别针对移动设备和其它设备(如上网本、平板电脑、车载信息系统和电视)进行优化。MeeGo操作系统的设计理念在于提供一个全新的应用生态体系,让...
MeeGo开发指南,结合QT有助于移动平台开发应用程序。
### MeeGo开发教程知识点详解 #### 一、MeeGo平台概述 MeeGo是一个由Linux基金会管理的开源项目,旨在为智能手机、上网本、平板电脑和其他嵌入式设备提供一个灵活的操作系统。该系统结合了英特尔的Moblin项目与...
Meego软件开发基础PPT课件 本次PPT课件主要介绍了Meego软件开发的基础知识,包括Meego技术的范围和特点、开发环境、Qt开发基础、Debian基础、...本次PPT课件为学习Meego软件开发基础知识提供了系统的介绍和实践指南。
它推动了Linux在移动设备上的应用,启发了后续的开源操作系统项目,并且为开发者提供了一个了解和学习移动应用开发的平台。 综上所述,MeeGo在应用开发方面提供了强大的工具和技术支持,它的设计理念和实现方式在...
在MeeGo中,Python被用作快速开发和原型设计的工具,允许开发者以较低的学习曲线快速构建功能丰富的应用程序。 二、QML介绍 QML(Qt Meta Language)是Qt框架的一部分,用于构建具有高度交互性和动态视觉效果的用户...
MeeGo SDK(软件开发工具包)是专为开发MeeGo操作系统应用程序设计的一套集成开发环境。在2011年的MeeGo日活动中,它被详细介绍,展示了其核心工具、API、文档以及开发周期的各个阶段。下面是对MeeGo SDK的详细概述...
总的来说,红旗Linux转向MeeGo开发的战略决策展示了其对技术创新和市场变化的敏锐洞察。通过结合MeeGo的先进技术,红旗Linux有望在嵌入式设备、移动设备和车载信息娱乐系统等领域取得突破,进一步巩固其在中国乃至...
IDF2011-MeeGo主题日活动旨在为开发者和相关从业人员提供一个交流与学习的平台,深入了解MeeGo操作系统的特点及其在移动设备领域的应用前景。通过本次活动,参与者不仅能够获取最新的技术动态,还能接触到一系列基于...
MeeGo UI Framework & SDK为开发者提供了一个强大而灵活的开发平台,不仅支持原生和Web开发,还提供了丰富的工具集,如Qt Creator等,帮助开发者高效地创建高质量的应用程序。通过对MeeGo UI框架和SDK的理解,开发者...
通过学习MeeGo的内核驱动如何与硬件交互,中间件如何提供抽象接口,以及用户体验层如何设计出吸引人的用户界面,初学者可以逐步掌握操作系统开发的基本原理。此外,MeeGo的开源特性也使得初学者有机会深入研究源代码...
热米狗中文MeeGo社区配合MeeGo官方,在移动领域的一次区域性宣传大会上做的MeeGo介绍,旨在吸引更多人来关注MeeGo,支持MeeGo。 MeeGo整合自Moblin与Maemo −上网本(Netbooks) −手持设备(Handsets) −平板...
Meego菜谱软件是一款荣获Intel Meego开发比赛优秀奖项的应用程序,它充分利用了Meego平台的特性和技术,为用户提供了一种新颖、直观的方式来管理和探索美食制作。这款软件的核心在于其创新的用户界面设计和高效的...
meego体系架构图 meego体系架构图 meego体系架构图
MeeGo多媒体栈的开发主要包括硬件适配、核心操作系统平台开发以及应用程序开发三个方面。 1. **硬件适配**:这一步骤涉及Linux内核驱动程序的编写、用户空间库(如Alsa和V4l2)的开发以及中间件插件(如GStreamer...