MeeGo 開發指南 1.0 開發教程

來源:互聯網
上載者:User
MeeGo 開發指南 1.0 開發教程轉自: MeeGo中文

介紹

如果想擷取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/procmount --bind /sys /home/ell/meego-sdk-0524/sysmount --bind /dev /home/ell/meego-sdk-0524/devmount --bind /dev/pts /home/ell/meego-sdk-0524/dev/ptsmount --bind /tmp /home/ell/meego-sdk-0524/tmpmount --bind /var/lib/dbus /home/ell/meego-sdk-0524/var/lib/dbusmount --bind /var/run/dbus /home/ell/meego-sdk-0524/var/run/dbuscp /etc/resolv.conf /home/ell/meego-sdk-0524/etc/resolv.confroot@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 介面

它看起來像這樣: 

 

已發現的問題: 

  • 一些依賴DBus的工具條組件(比如電池,網路)無法報告裝置的工作狀態。

 

停止模擬器

要停止模擬器,只需要離開chroot shell: 

exit

這會停止模擬器啟動的所有進程,並卸載chroot環境使用的路徑。這會輸出下面這樣的資訊: 

exitumount /home/ell/meego-sdk-0524/procumount /home/ell/meego-sdk-0524/sysumount /home/ell/meego-sdk-0524/dev/ptsumount /home/ell/meego-sdk-0524/devumount /home/ell/meego-sdk-0524/tmpumount /home/ell/meego-sdk-0524/var/lib/dbusumount /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 > 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 面板:
      • 選中 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 表徵圖啟用程式: 

     

    在模擬器中為程式 Debug

    在 Qt Creator 裡啟動程式後,如果你啟用了 Debug 模式,你就可以監視這個程式的運行狀態。 

    在之前的 小節 裡,我們已經為目前的版本的 Qt 庫建立了 debugging helper 。這必須預先做好,不然你無法偵錯工具。 

    點擊左邊工具列中的 bug 表徵圖,這會啟用 Qt Creator 的 Debug 模式。這會在視窗裡增加一個面板,以顯示運行棧、變數和運算式的值、以及其他有用的資訊。 

    然後,你需要一些 Bug 好進行 debug。我在程式表單裡添加了一個 Push Button : 

     

    然後為這個按鈕添加了點擊事件。當點擊這個按鈕時,一個字串變數將會被列印到控制台上。代碼是這樣的: 

    /* file: Headers/mainwindow.h */#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>namespace Ui {    class MainWindow;}class MainWindow : public QMainWindow {    Q_OBJECTpublic:    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 的語句左邊點擊一下,添加一個斷點。看起來像是這樣: 

     

    (注意 34 行左邊的那個紅色圓圈) 

    然後點擊那個帶著 bug 標誌的綠色箭頭(在左下角),這會以 Debug 模式啟動程式。程式將會顯示在模擬器中: 

     

    現在,在模擬器裡的程式視窗中,點擊那個 Push Button ,這會在剛才設定的斷點上中斷程式。回到 Qt Creator 裡,看下 debug 面板: 

     

    我們可以看到,在 Locals and Watchers 標籤裡, message 變數的值,已經被設定為 “I have been well and truly clicked” 了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.