MeeGo 开发指南 1.0 开发教程

本文介绍MeeGo SDK的安装及使用方法,包括开发环境搭建、模拟器运行、QtCreator调试等步骤,帮助开发者快速上手MeeGo应用程序开发。

MeeGo 开发指南 1.0 开发教程

介绍

如果想获取MeeGo平台的开发概览,最好地方的是MeeGo developers。这里讨论的是一些更细节化的问题,比如MeeGo APIs的详细内容。 

 

MeeGo应用程序开发教程

  • (1)在 Linux 上使用 MeeGo SDK

介绍

MeeGo SDK由以下部分构成: 

  1. 一个MeeGo chroot环境,这包含了一个基于Xephyr (http://www.freedesktop.org/wiki/Software/Xephyr) 的MeeGo应用程序模拟器(仅支持Linux),一些在Xephyr里启动/停止MeeGo桌面的脚本,以及可以远程配置和部署MeeGo设备的Qt Creator。
  1. 一个启动MeeGo chroot环境,并运行模拟器和Qt Creator的meego-sdk-chroot脚本。

要安装MeeGo SDK,最简单的方法是下载这些组件的打包版本。这将在下一节讨论。 

 

系统要求

要在Xephyr里运行MeeGo模拟器,你需要一个比较新的Linux发行版(例如Fedora 11,Ubuntu 9.10)以及Intel的硬件环境。硬件环境有以下要求: 

  • CPU: 32bit Intel(r) Atom(tm) or Intel(r) Core(tm) 2 CPU (support for SSSE3)
    • 注意: MeeGo模拟器无法在不支持SSSE3的CPU上运行。
  • 一块兼容的Intel显卡。GMA-500,Nvidia,以及ATI的芯片组都无法提供支持

译注:这是MeeGo模拟器的要求,不是SDK的要求。我可以在AMD处理器和NV显卡的机器上,运行 MeeGo SDK ,并正常编译/调试程序。 

 

安装MeeGo chroot环境

MeeGo chroot压缩包是一个大文件(接近800M)。它不仅有MeeGo自身的所有库文件,也其他有用的东西(Xephyr, scripts, Qt Creator)。 

下载MeeGo chroot压缩包文件: 

wget http://download3.meego.com/meego-sdk-0524.tar.bz2

解压MeeGo chroot压缩包文件: 

tar zxvf meego-sdk-0524.tar.gz

另一个方案是自己创建一个MeeGo chroot,参见Building a MeeGo chroot on Linux。 

 

安装meego-sdk-chroot脚本

meego-sdk-chroot脚本会设置chroot环境的挂载点,然后用恰当的方式启动root环境;在离开chroot环境时,它也会尝试正确地卸载整个环境,并清除在chroot环境中启动的进程。 

下载: 

wget http://download3.meego.com/meego-sdk-chroot

给脚本可执行权限: 

chmod +x meego-sdk-chroot

移动到/usr/bin

mv meego-sdk-chroot /usr/bin

 

为模拟器配置host

下一步,是配置host的X环境,让模拟器(在chroot环境下运行)可以正确地显示在普通用户的屏幕上: 

xhost +local:

(每次重启后,在运行模拟器和Qt Creator之前你都需要执行这一步) 

 

进入 MeeGo chroot 环境

meego-sdk-chroot脚本将设置一个MeeGo chroot环境,并给你一个该环境下的shell: 

sudo meego-sdk-chroot ~/meego-sdk-0524

(用你的chroot目录代替上面的’~/meego-sdk-0524) 

注意,这个脚本使用了chroot命令。有些时候,root用户无法在PATH环境变量里定位这个命令(在Fedora里,chroot命令在/usr/sbin路径下)。你可以在meego-sdk-chroot脚本的顶部添加一行alias,以解决这个问题: 

alias chroot='/usr/sbin/chroot'

脚本运行后,会输出下面这样的内容: 

mount --bind /proc /home/ell/meego-sdk-0524/proc
mount --bind /sys /home/ell/meego-sdk-0524/sys
mount --bind /dev /home/ell/meego-sdk-0524/dev
mount --bind /dev/pts /home/ell/meego-sdk-0524/dev/pts
mount --bind /tmp /home/ell/meego-sdk-0524/tmp
mount --bind /var/lib/dbus /home/ell/meego-sdk-0524/var/lib/dbus
mount --bind /var/run/dbus /home/ell/meego-sdk-0524/var/run/dbus
cp /etc/resolv.conf /home/ell/meego-sdk-0524/etc/resolv.conf
root@meego-netbook-sdk:/#

 

安装其他软件

你可以在chroot环境下正常安装软件(和最新的netbook镜像一样)。 
进入chroot环境,然后执行: 

zypper install <package>

下面这个命令可以将整个MeeGo镜像更新到最新版本: 

zypper dist-upgrade

 

运行模拟器

在chroot环境下,以root的身份执行: 

startmeego &

这将启动Xephyr服务器,并运行一个脚本。这个脚本在Xephyr里启动一个MeeGo桌面。 

如果你想在chroot环境里启动一个程序,并显示在模拟器窗口里,你可以: 

DISPLAY=:2 glxgears

(用你想启动的程序名代替glxgears) 

 

在模拟器里Debugging

如果你的模拟器出现了问题,可以使用debug脚本,看看具体发生了些什么: 

startmeego-debug

这个脚本会在控制台输出一些信息,这些信息应该能给你问题的线索。 

 

模拟器里的 Netbook UX 界面

它看起来像这样: 

File:Simulator_running_netbook_ux.png 

已发现的问题: 

  • 一些依赖DBus的工具条组件(比如电池,网络)无法报告设备的工作状态。

 

停止模拟器

要停止模拟器,只需要离开chroot shell: 

exit

这会停止模拟器启动的所有进程,并卸载chroot环境使用的路径。这会输出下面这样的信息: 

exit
umount /home/ell/meego-sdk-0524/proc
umount /home/ell/meego-sdk-0524/sys
umount /home/ell/meego-sdk-0524/dev/pts
umount /home/ell/meego-sdk-0524/dev
umount /home/ell/meego-sdk-0524/tmp
umount /home/ell/meego-sdk-0524/var/lib/dbus
umount /home/ell/meego-sdk-0524/var/run/dbus
  • (2)Hello World – Linux上的 MeeGo x86 开发

    介绍

    这个教程介绍了Linux下的 MeeGo x86 开发。教程解说了基本的开发流程,重点介绍了如何使用SDK附带的那些工具。 

    教程不会涉及一些开发细节,例如 Qt 和 MeeGo 的 API、或是如何将程序整合到 MeeGo 环境中。 

    如何开发 (简要说明)

    • 获取并安装 MeeGo SDK
    • 进入 MeeGo SDK 环境
    • 启动模拟器
    • 启动 Qt Creator
    • 使用 Qt Creator 创建一个项目, 配置项目的 DISPLAY 环境变量,让项目能够在模拟器中运行
    • 使用 SDK 的 Qt 库编译项目。
    • 在模拟器中运行程序
    • 在模拟器中为程序 Debug

    如果你有一台真实的 MeeGo 设备: 

    • 准备设备
    • 在设备上运行程序
    • 在设备上为程序 Debug

    如何开发 (详细说明)

    在你的机器上安装 MeeGo SDK

    请参阅 在 Linux 上使用 MeeGo SDK 的介绍。 

    进入 MeeGo chroot 环境

    请参阅 这个介绍 。 

    运行模拟器

    把所有东西安装配置完成后,你应该可以在 MeeGo chroot 环境中 运行模拟器 了。 

    使用 Qt Creator 创建项目

    让 startmeego 脚本继续运行,然后启动 Qt Creator : 

    qtcreator &

    这会在 host 上运行 Qt Creator (而不是在 Xephyr 里): 

    File:Simulator_QtCreator_splash.png 

    然后,配置一个新项目: 

    • 创建一个新项目(File > New File or Project)。 在 Projects 对话框中, 选择 Qt Gui Application ,然后点击 OK
    • 输入 helloworld 作为项目名称,选择一个保存项目的目录 (例如,如果你使用 root 账户工作的话,可以选择 /root )。 然后点击 Next
    • 保持 Class Information 对话框的默认配置,然后点击 Next
    • Project Management 对话框里,点击 Finish

    输入一些代码: 

    • 打开 Forms 目录,双击 mainwindow.ui 打开图形窗体编辑器。
    • 从窗体编辑器左边的组件列表里,拖出一个 label ,放到编辑中的窗体上。
    • 修改 label 的文本( “Hello world” 是个不错的选择 )。
    • 再拽几个你喜欢的东西上去。

    然后配置项目: 

    • 点击 Qt Creator 窗口左边的 Projects 图标。
    • 配置 Qt 版本:
      • Build Settings > General 栏里,点击 More 按钮。这会显示当前项目中使用的 Qt 库版本。
      • 点击 Qt Version 标签边上的 Manage 按钮,这会显示 Qt Versions 面板:
        File:simulator_QtCreator_qt_versions.png
      • 选中 Qt in PATH 项目。
      • 点击 Rebuild 按钮,创建当前 Qt 版本使用的 Debugging Helper
      • 点击 OK 保存设置。
    • 确认 Qt Version 的设置,应该是 Default Qt Version (Qt in PATH)
    • 然后,配置运行环境,用模拟器来显示运行的程序:
      • 点击 Run Settings 标签。
      • 点击 Run Environment 下面的 More 按钮。
      • 双击 Display 环境变量边上的文本区,将 :0.0 改为 :2 。这会让 Qt Creator 使用 :2 号显示区域来运行程序,也就是在 Xephyr 中运行。

    在模拟器中运行程序

    现在你已经做好了运行程序的准备。 

    在 Qt Creator 里,点击左下角那个大大的绿色箭头,就可以运行程序。在第一次运行时,这会编译整个项目(使用你设置的 Qt 库版本),然后在 :2 号 display (也就是 Xephyr 里的 MeeGo 模拟器)上显示程序。 

    在模拟器里,程序可能会在后台运行,不会直接显示在屏幕上。这时你可以需要点击 MyZone 图标激活程序: 

    File:Simulator_running_meego_app.png 

    在模拟器中为程序 Debug

    在 Qt Creator 里启动程序后,如果你激活了 Debug 模式,你就可以监视这个程序的运行状态。 

    在之前的 小节 里,我们已经为当前版本的 Qt 库创建了 debugging helper 。这必须预先做好,不然你无法调试程序。 

    点击左边工具栏中的 bug 图标,这会激活 Qt Creator 的 Debug 模式。这会在窗口里增加一个面板,以显示运行栈、变量和表达式的值、以及其他有用的信息。 

    然后,你需要一些 Bug 好进行 debug。我在程序窗体里添加了一个 Push Button : 

    File:QtCreator_form_with_push_button.png 

    然后为这个按钮添加了点击事件。当点击这个按钮时,一个字符串变量将会被打印到控制台上。代码是这样的: 

    /* file: Headers/mainwindow.h */
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    
    namespace Ui {
        class MainWindow;
    }
    
    class MainWindow : public QMainWindow {
        Q_OBJECT
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
    
    protected:
        void changeEvent(QEvent *e);
    
    private:
        Ui::MainWindow *ui;
    
    private slots:
        void on_pushButton_clicked();
    };
    
    #endif // MAINWINDOW_H
    /* file: Sources/mainwindow.cpp */
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QDebug>
    #include <QString>
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::changeEvent(QEvent *e)
    {
        QMainWindow::changeEvent(e);
        switch (e->type()) {
        case QEvent::LanguageChange:
            ui->retranslateUi(this);
            break;
        default:
            break;
        }
    }
    
    void MainWindow::on_pushButton_clicked()
    {
        QString message;
        message = "I have been well and truly clicked";
        qDebug() << message;
    }

    大部分代码继承自原本的项目,只有 MainWindow::on_pushButton_clicked 这个方法是我自己添加的。需要注意的是,我还在头文件里定义了一个私有的槽。 

    译者注:信号和槽是 Qt 里的概念,请参考介绍 Qt 的文章。 

    然后在编辑器里,在你想要 debug 的语句左边点击一下,添加一个断点。看起来像是这样: 

    File:QtCreator_set_breakpoint.png 

    (注意 34 行左边的那个红色圆圈) 

    然后点击那个带着 bug 标志的绿色箭头(在左下角),这会以 Debug 模式启动程序。程序将会显示在模拟器中: 

    File:QtCreator_app_with_button.png 

    现在,在模拟器里的程序窗口中,点击那个 Push Button ,这会在刚才设置的断点上中断程序。回到 Qt Creator 里,看下 debug 面板: 

    File:QtCreator_paused_at_breakpoint.png 

    我们可以看到,在 Locals and Watchers 标签里, message 变量的值,已经被设置为 “I have been well and truly clicked” 了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值