Pages

Monday, 27 May 2013

MeeGo & MeeGo SDK 体验教程


0.MeeGo简介
MeeGo项目结合英特尔的Moblin和诺基亚的Maemo, 为下一代计算设备打造了一个基于Linux的开源软件平台。MeeGo软件平台为开发人员的应用程序提供了最大范围的设备选择,包括上网本和入门级桌面设 备,便携式计算和通讯设备,车载信息娱乐设备,联网电视,媒体电话等等-均使用共同的开发框架Qt。MeeGo将帮助消费者从不同的设备中获得创新的应用 程序体验。MeeGo项目由Linux基金会管理。MeeGo为Linux基金会商标。(来源MeegoZone中文站
MeeGo的MeeGo架构设计,可以去看看.
MeeGo很大一个特点是开源,多平台,并交由Linux基金会管理;产品种类可包括笔记型电脑,智慧型手机,小笔电,平板电脑,互联网电视和车载 资讯娱乐系统等。为此,诺基亚还分别调整了Symbian和MeeGo的策略与定位,原有的Symbian平台将继续致力于智能手机的大众化(应该是现有 的主流S60/S40,之后的Symbian^3/4好像不大现实,首款采用Symbian^3系统–N8报 价469欧)MeeGo则主要定位于高端市场。诺基亚收购Qt,将跨平台的开发特性带给了Desktop、Symbian、MeeGo,其中Meego的 编程接口,除了QT 4.7 和WRT还有MeeGo多点触摸界面框架(MeeGo Touch UI Framework 简称MTF)。这种开放的姿态很受开发者欢迎,至于消费用户可能就不会这么看了。MeeGo系统目前也未发布什么像样的产品,只是放出了MeeGo- handset/notebook的img镜像,以及Meego SDK。根据InfoQ上一篇移动开发调查报告, 与Iphone/Android高关注相比,MeeGo就像一个仓促上阵的参赛者(两个发行版的整合好像费一些时间,毕竟一个是基于稳定代名词的 Debian,另一个则基于“不稳定”代名词的Fedora),在调查报告中都没提到。造成诺基亚的危机主要是在市场占有率常年第一时的不思进取,这和微 软最初对待互联网、几年不更新的IE6很像;不过这一次玩的有点大,Symbian系统的用户体验一直没有什么进步,Symbian的开发效率更是让人诟 病。。。不过话说回来诺基亚向来是后发先制,UCD大社区有篇文章相信诺基亚,就提到了这个观点,就让时间去证明吧。
1. Meego安装体验
0> MeeGo 1.0运行目前是有一些限制的:
a) 处理器:英特尔Atom或32位的Intel Core 2处理器(支持SSSE3)

b) 显卡:一个兼容的Intel图形芯片组。不支持GMA-500/Nvidia/ATI的芯片组。
备注:MeeGo将不能在非SSSE3处理器上运行,更多的硬件配置将在系统的后续更新中获得支持。
c) 不支持NTFS文件系统(不过这不是问题,因为它是Linux,自己动手)
d) 官方承诺可以运行MeeGo操作系统的几款上网本分别为:ASUS EeePC 901/1000H/1005HA/1008HA/1005PE、Eeetop ET1602、DELL mini10v、Inspiron Mini 1012、Acer Aspire One D250、AO532-21S、Revo GN40、Aspire 5740-6025
lenovo S10、MSI U130、AE1900、HP mini 210-1044、Toshiba NB302,支持触控操作。
1> 在MeeGo官网下载最新镜像,img格式,handset对应手机,notebook对应笔记本。。
2> 如果想在虚拟机上安装Meego,会比较失望,主流的 VMWare和VirtualBox均不能显示启动Meego的图形界面,因为不是Intel图形芯片组。不过Meego SDK中的模拟器还是可以启动的,然后可以体验一下meego。在Windows上建议使用VirtualBox,相比于 VMWare,virtualbox快多了;在Linux下其实就没有必要用虚拟机了,SDK本身就可以用,如果要安装的话,qemu或者 virtualbox都是不错的选择,可以参考MeeGo Wiki,下图是Qemu的截图

3> 如果在虚拟机上选择“Boot Meego”:会停留在黑屏界面,下面步骤可解决~

a) Press ESC when the boot begins to get into GRUB boot menu.
b) Press TAB to edit boot line.
c) Remove quiet from boot line and append 3 to start with a shell and then boot.
d) After boot is complete, press ALT-F1 to get into console and login using your user account. 这两步是关键,卡在黑屏的时Alt+F1切换到控制台登录模式,可以使用root登录,密码meego;进入后执行init 3,要不然老是会跳到无法启动的图形界面去
e) Type sudo startx to start X11 with TWM .TWM还是能够启动的,不过相当“简陋”,

4> 最好不要尝试“Installtion Only”,我试过好几回,安装完成后的第二次重启会一直卡在背景处,连文本模式都进不去,原因不明,如果你找到了解决方法,请告诉我~
5> 如果你有满足MeeGo目前限制的笔记本,最好的体验方法就是刻盘启动Meego,或者是将MeeGo安装到U盘或者移动硬盘上(一般的Linux都是支 持的,一个小工具Unetbin就能搞定),这样能够体验到完整的Meego环境。不过由于不是触屏设备,普通笔记本上的MeeGo给人的第一印象只是一 个界面可爱华丽的Linux普通发行版而已,同样采用了yum进行包管理,集成了常见的一些软件。不上图了,图效果同最后模拟器。。
6>在线安装软件可以yum search [firefox],yum install [firefox],rpm –ivh [firefox-noarch.rpm]

2. Meego SDK体验
0> MeeGo SDK由以下部分构成:
a) 一个MeeGo chroot环境,这包含了一个基于Xephyr 的MeeGo应用程序模拟器(仅支持Linux),一些在Xephyr里启动/停止MeeGo桌面的脚本,以及可以远程配置和部署MeeGo设备的Qt Creator。
b) 一个启动MeeGo chroot环境,并运行模拟器和Qt Creator的meego-sdk-chroot脚本
1> 下载MeeGo SDK大概630M,不过我觉得SDK和Gentoo stage3的tar包很像,不同的是它包含了Qt完整开发toolchain、模拟器的chroot环境。
2> 按照目前的很常见的开发模式,大家都习惯于在Windows/Linux上开发–>模拟器测试–>真机测试。不过现在由于现在的一些限制,在linux下开发是最简单的。按照在Linux 上使用MeeGo SDK上的步骤,有时会遇到模拟器后启动白屏或者黑屏的问题,这里有一个小bug,meego sdk的mailist提供了一个解决方法
3> 由于每次启动sdk需要配置xhost,以及执行chroot命令,还有可能存在上面的一个小bug,我建立了一个脚本start_meego,然后使用source命令执行,这样可以省事不少。
#start_meego
#[ ]内替换为你当前路径
export DISPLAY=:0
export DBUS_SESSION_BUS_ADDRESS=”"
xhost && xhost +SI:localuser:[root]
[./meego-sdk-chroot] [./meego-sdk-0524]

4> 在Windows下要想体验meego sdk,目前好像只有使用虚拟机安装Linux这一种方法,比如Ubuntu之类的。而我这次安装的是gentoo使用的是install-x86- minimal镜像,光emerge kde-meta就花了三天时间,期间还安装了X,和Virtualbox Guest Addtions,才让它工作正常。所以最好还是安装集成版,或者安装轻量级的X Window。下面是MeeGo模拟器的一些截图,和真机跑的效果是差不多的~



设备界面,由于是模拟器,电池,无线不可用。
5> 剩下的就是打开Qt Creator/Desinger,创建应用了。体验Over.
------------------------------------------------------------

MeeGo-Handset开发入门小结


关于MeeGo的版本
在MeeGo官网主要有3个:
MeeGo Handset Day1 Developer Preview
MeeGo v1.0 for In-Vehicle Infotainment (IVI)
MeeGo v1.0 for Netbooks (Google Chrome Browser)
分别代表手机版,上网本(可能之后平板?),车载设备(GPS之类的)下载下来文件名如下:
meego-handset-ia32-netbook-mtf-1.0.80.12.20100723.1.img
meego-ivi-ia32-noemgd-1.0.1-20100729.1.iso
meego-netbook-chromium-ia32-1.0-20100524.1.img
meego-netbook-ia32-1.0.80.11.20100720.1.img
这些都是安装在真机的OS镜像,稍微解释一下
handset-ia32-netbook-mtf是指在ia32(x86)上运行handset版的meego,mtf代表meego touch framework,体验得是触碰屏才行【截图】
ivi-ia32-noemgd是指使用x86芯片的车载设备,用pc也是可以引导的【截图】
netbook-chromium是指默认浏览器是chromium(chrome的开源版本)的上网本OS
这 3个版本,主要是UX层不同,其中meego core都是相同的,但是SDK也会相应不同。
关于MeeGo App开发与SDK
MeeGo的SDK有三种方式,这里讨论的方式均指的是Change Root (chroot) with Xephyr ,这种方式是速度最快的,这种方式下的sdk其实就是一个可以chroot进去的linux系统(维护过linux肯定都知道,linux挂掉的时候可以使用livecd或别的引导一下,然后挂载原来的分区并chroot进去)下载下来文件如下:
meego-sdk-0524.tar.bz2
meego-netbook-ia32-1.0.80.12.20100727.1-sdk-pre0729.tar.bz2
meego-handset-ia32-1.0.80.9.20100706.1-sdk-pre0729.tar.bz2
meego-handset-ia32-1.0.80.9.20100706.1-sdk-pre0901.raw.tar.bz2
meego-handset-ia32-1.0.80.9.20100706.1-sdk-pre0901.raw.tar.bz2
meego-netbook-ia32-1.0.80.12.20100727.1-sdk-pre0901.raw.tar.bz2
meego-sdk-0524:意思是5月24日发布的,这是最早的sdk版本,网上还有些教程是拿这个做的,这个解压就能用,不需要挂载
剩下的几个都是pre版,7月29日/9月1日发布的(pre就是很不完善的意思,==)
解开之后个是raw文件,这个是可以挂载的镜像
现 在主要工作研究handset下的开发,毕竟和iOS/Android/RIM等竞争的是这个。开发MeeGo App可以直接使用Qt,libmeegotouch,web runtime这几种方式(这是官方推荐的),其中web runtime(html/css/js)也是在中间那一层。
直接使用Qt是可以的,Qt4.7新增加的Qt Quick(提供了QML)会使得开发效率更高;还可以使用libmeegotouch(MeeGo Touch Framework核心lib),这两种有什么区别?参考这里:Alan Alpert@niqt:MeegoTouch provides a C++ widget library. If you are writing an application UI in C++ and want native look and feel on MeegoTouch devices, you just use it.
web runtime就直接无视了,==
MeeGo应用程序简介
主要由MApplication,MApplicationPage,MApplicationWindow,MLayout,MWidgets(MButton,
MComboBox,MContainer,MDialog,MMessageBox,MInfoBanner,MLabel,MList) 类组成,位置关系就如下图右边所示,都是现代GUI框架的东西,很好理解。
实际的calculator,在xephyr里运行效果图。

开发API参考:
http://apidocs.meego.com/mtf/index.html
http://doc.qt.nokia.com/4.7-snapshot/index.html
使用MeeGo Touch Framework开发App
第一种方法:普通linux发行版安装libmeegotouch库(参考这里
0.安装linux
安装的是Ubuntu10.04 LTS,由于要使用到Qt4.7 最好使用gnome桌面的发行版(其实我很喜欢KDE,但是采用KDE的发行版在默认/usr/lib下会带有稳定版本的Qt,如4.6.2,这样到编译 libmeegotouch时容易造成链接库不正确而编译失败,可能出这个错误
1.更新系统【非必须】
#sudo apt-get upgrade
2.安装toolchain,主要是git、g++和X11的libX*-dev
#sudo apt-get install git-core build-essential libgl1-mesa-dev libglu1-mesa-dev libxdamage-dev libX11-dev libXext-dev libXtst-dev libXrender-dev libxcursor-dev libxfixes-dev libxft-dev libxi-dev libxrandr-dev libdbus-1-dev
3.编译Qt4.7
下载Qt4.7 源代码版(qt-everywhere-opensource-src-4.7.0-rc1.tar.gz)或者二进制版(qt-sdk-linux- x86-opensource-2010.05-rc1.bin),前者需要手动编译,虽然时间长但是可以控制;后者安装方便,以源代码为例:
#tar xvjf qt-everywhere-opensource-src-4.7.0-rc1.tar.gz
#cd qt-everywhere-opensource-src-4.7.0-rc1
#./configure -dbus
#make
#sudo make install
完成后设置环境变量:
export QTDIR=/usr/local/Trolltech/Qt-4.7.0
export PATH=$QTDIR/bin:$PATH
若要每次生效请修改~/.bashrc,加上上面两句export命令
3.git clone libmeegotouch相关代码
#git clone git://gitorious.org/meegotouch/libmeegotouch.git
#git clone git://gitorious.org/meegotouch/meegotouch-theme.git
4.Qt4.7编译完成后,编译安装meegotouch-theme和libmeegotouch
#cd meegotouch-theme
#qmake && sudo make install
#cd libmeegotouch
#./configure
#make && sudo make install
5.运行examples测试
#cd libmeegotouch/examples/calculator
#qmake && make
#sudo ./calculator
6.安装IDE
1.qtcreator下载: qt-creator-linux-x86-opensource-2.0.1.bin
2.也可以考虑eclipse+cdt+qt-eclipse-integration的组合
#sudo apt-get install eclispse
打开eclipse->Help->Install New Software,添加一下cdt的update-url(注意版本,这里是galileo),http://download.eclipse.org /tools/cdt/releases/galileo
http://qt.nokia.com/developer/eclipse-integration/,下载并解压放入对应eclipse安装路径(我的是/usr/lib/eclipse)
第二种方法:直接在sdk中安装libmeegotouch-devel
sdk版目前还是pre-release版本,里面带有的qt4.7和libmeegotouch基本上不是最新版,所有会有些examples无法编译通过,SDK安装可以参考meego的wiki或者是我上一篇博客。安装完成并成功chroot后:
#zypper install libmeegotouch-devel
##复制examples中的代码测试一下
#cd libmeegotouch/examples/calculator
#qmake && make
#./calculator