Posts Tagged ‘platform’

MeeGo手机开发起步

MeeGo 1.0(notebook) 是基于Qt的么提到notebook几乎没有Qt的什么应用在里头,不过handset版本则是实打时的Qt应用,包括桌面管理器和窗口管理器,以及各种应用,你会看到Qt无所不在。这篇文章就以最简单的篇幅介绍一下如何在Linux下搭建一个MeeGo Handset环境。
下载准备SDK
要下载的只有两个文件,一个是MeeGo的映像文件,另一个则是脚本文件,可以参考以下命令
zhu@CuteQt:~$ cd meego/
zhu@CuteQt:~/meego$ wget http://download3.meego.com/meego-sdk-chroot
zhu@CuteQt:~/meego$ chmod +x meego-sdk-chroot
zhu@CuteQt:~/meego$ wget http://download3.meego.com/meego-handset-ia32-1.0.80.9.20100706.1-sdk-pre0729.tar.bz2
zhu@CuteQt:~/meego$ tar xjf meego-handset-ia32-1.0.80.9.20100706.1-sdk-pre0729.tar.bz2
zhu@CuteQt:~/meego$ mkdir rootfs
执行启动MeeGo环境
MeeGo在linux里的执行是利用了chroot环境,将UI运行在Xephyr服务器上,运行命令如下
zhu@CuteQt:~/meego$ sudo mount -o loop,offset=512 meego-handset-ia32-1.0.80.9.20100706.1-sdk-pre0729/meego-handset-ia32-1.0.80.9.20100706.1-sdk-pre0729.raw rootfs
zhu@CuteQt:~/meego$ sudo ./meego-sdk-chroot rootfs/
root@meego-handset-sdk:/# startmeego
注意命令前的提示符,startmeego是运行在chroot环境里面的,它是一个脚本文件,感兴趣的朋友可以直接用vi打开来看。好了,这时你可以看到运行在Xephyr里的MeeGo了,并可以进行操作。

看看源代码吧
既然都是Qt写的代码,那就看看源代码吧。不过这个下载的MeeGo映像文件里的包管理工具里只有Zeppyr,没有Yum,可以通过以下命令将yum工具装上。

root@meego-handset-sdk:/# zypper install yum
root@meego-handset-sdk:/# zypper install yum-utils

你想看什么源代码的时候,使用yumdowloader –source packagename 就可以把它下载下来,比如如果想看fennec-qt的代码,只要使用下面命令

root@meego-handset-sdk:/# yumdownloader –source fennec-qt

解压rpm软件包,只需要进行安装命令就可以,源代码会被安装到 $HOME/rpmbuild/SOURCES目录下

root@meego-handset-sdk:/# rpm -i filename.rpm

说明
本文是一个基于Xephyr的开发的最基础介绍,MeeGo还可以在QEMU中进行开发,我会将自己的学习体会陆续写出来和大家交流。

Read More...

Tags: , , ,
Posted on September 1st, 2010 in Qt技术 | 1 Comment ».

在Nokia Qt SDK中开发Maemo应用

这是一个CuteQt参与的第一个有声博客:) 欢迎收听

Read More...

Tags: , ,
Posted on July 29th, 2010 in Linux技术, Qt技术 | 6 Comments ».

Android和Qt-Extended在设计方法上的共通之处

目前Qt-Extended停止开发,但是Nokia准备开发新的Qt-Mobility作为其替代工具,相信Qt-Extended中很多优秀的设计理念还是会被继承下来。期待在Qt在Nokia中会有更好的表现
Android和Qt-Extended作为新型的手机开发平台,都致力于将开发者将注意力集中于软件功能的实现,而不用花很大的精力在系统资源的管理上。这是和symbian平台最大的区别,设计symbian的那个年代,内存/cpu都是稀缺资源,所以要求开发者不仅要设计软件架构,还要随时准备处理内存不够的情况。随着硬件性能的大力提升,Nokia有意于将Qt替代symbian,也算是顺势而为。
Android和Qt-Extended虽然都用了一些不同的术语去描诉这些设计方法,但在本质上是相通的,那么我们来看一看他们的对应关系。
应用配置文件 AndroidManifest.xml VS appname.desktop
虽然Android里不再将一个运行的程序叫应用,叫activity,不过用应用来理解应该问题也不大。 AndroidManifest.xml是用于该应用怎么启动,以及对应的资源管理等。而Qt-extended里是用appname.desktop完成相应的功能,appname根据应用名不同而不同。应用启动的Launcher正是通过.desktop文件找到对应的二进制代码进而启动进程的。
外部服务接口 IntentFilter VS Service
外部服务的接口实现如下功能,比如当前页面里看到一个音频文件的链接,在用户点击链接的时候,会调用外部服务程序去实现该功能,但是当前应用的设计者是不知道系统的哪一个应用来完成这个功能的,只能发出一个类似播放音频这样的请求,由系统决定由哪个应用来执行这个播放功能,这样设计的好处是系统的组件能够更容易被替换。Android中用Intent和IntentFilter来实现该功能。而Qt-Extended用Service来实现。
应用生命周期 activity manager VS MemoryManager
在内存空间不够的情况下,系统要求做出反应关闭一些不需要的应用。Android 利用Activity 管理器根据acitivity 的不同状态决定关闭哪些应用。而Qt-Extended则是利用启动服务进程里的MemoryManager来监视内存状态,进行应用管理的。
后台应用 Service VS QCop 消息
后台应用指的是根据系统需要运行一些不需要GUI的应用,比如网络下载,音乐播放什么的。Android通过启动Service完成这个功能,而Qt-Extended则可以通过QCop向系统发出启动某个引用的请求,比如拨号,下载等。
广播服务 BroadcastReceiver VS RegisterQCopChannel
广播服务是指系统发生某种状态变化时希望大部分应用做出对应响应时而使用的广播动作。比如电池电量低,外部设备如usb等接入时。Android使用BroadcastReceiver去接收系统通知,进而由其他activity或者service做出具体响应。Qt-Extended的设计则有一点不一样,在外部状态发生变化时,会向系统的某一qcop 通道发送消息,如果对该通道上的消息感兴趣,则可以在该通道上注册侦听,能够及时对此做出响应。
本文是基于平台框架上的一个对比,主要是Android VS Qt-extended 。而针对基本软件代码上的设计不同,比如视图数据模式,观察者模式等,则可以期待下一篇文章 Android VS Qt.

Read More...

Tags: , ,
Posted on August 24th, 2009 in Qt技术 | 2 Comments ».