初心者向けのMeeGoプログラミング

はじめに


この記事では、MeeGoプラットフォーム用のアプリケーション開発の概要を説明します。 基本から始めて、補助ソフトウェアをインストールして構成し、アプリケーションのデバッグとデプロイで終わります。 数値の基本的な操作を実行する単純なアプリケーション(計算機)を作成します。このアプリケーションは非常に単純で、多くの実装方法があります。また、本[7]にある非標準ソリューションの例を検討します。





ミーゴ


MeeGoは、バルセロナで開催されるMobile CongressでIntelとNokiaが発表したオープンプラットフォームで、Moblin(Mobile Linux)とMaemoのハイブリッドになります。 MeeGoの最初のバージョン(1.0)は2010年5月26日に登場し、OSに基づくデバイスは2010年末までに登場します。

MeeGoは、スマートフォン、タブレット、ネットブックなど、さまざまなデバイスで動作するように設計されています。 これにより、適応なしで一度に複数のタイプのデバイスで動作するアプリケーションを作成できます。 MeeGoのアプリストアは、Nokia Ovi Storeが所有します。

MeeGoは独立したオペレーティングシステムですが、Maemo、Moblin、Fedora、Debianなどのプロジェクトの成果を使用しています。

MeeGoシステムは完全にオープンで、ソースコードが公開されています。 IntelとNokiaは、すべてのハードウェア企業がMeeGoに平等にアクセスできると述べました。

MeeGoは、現在スマートフォンに使用されているSymbianプラットフォームと共存します。 新しいOSは、携帯電話の主要モデルにインストールされる可能性があります。 特に、Nokia N900スマートフォンにインストールできます。



MeeGoを始めよう


このプラットフォーム、特にそのプラットフォームの開発に慣れるための最初のステップは、補助ソフトウェア、つまりQt 4.7 SDK、Qt Creator、MeeGo Touch Framework(MTF)をインストールすることです。



Ubuntu 10.04にMeeGo Touch 1.0を手動でインストールする


  1. MeeGo Touchの場合、まだインストールされていない場合はQtバージョン4.7が必要です(ダウンロード: qt.nokia.com/downloads )。

    -環境変数の登録:

    $ export QTDIR = / [インストールされているqtsdkへのパス] / qt /

    $ export PATH = $ {QTDIR} / bin:$ {PATH}

  2. Touchテーマをダウンロードしてインストールします(デスクトップマシンでアプリケーションを実行するため)。

    -リポジトリからクローン: $ git clone git://gitorious.org/meegotouch/meegotouch-theme.git

    -収集: $ qmake

    -インストール: $ sudo make install

  3. 必要なパッケージをインストールします。 $ sudo apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev libxdamage-dev
  4. MeeGo Touchをダウンロードしてインストールします。

    -リポジトリからクローン: $ git clone git://gitorious.org/meegotouch/libmeegotouch.git

    -構成、アセンブル、インストール: $ ./configure && make && sudo make install





考えられる問題


:

../libmeegotouch/src/corelib/scene/msceneeventeater.cpp

39: setFlag(QGraphicsItem::ItemStopsClickFocusPropagation);

../libmeegotouch/src/corelib/widgets/mscenewindow.cpp

105: setFlag(QGraphicsItem::ItemStopsClickFocusPropagation);

121 : setFlag(QGraphicsItem::ItemStopsClickFocusPropagation);

../libmeegotouch/src/views/mlabelview_simplce.cpp

244: staticText.setTextOption(viewPrivate->textOptions);

370: staticText2.setTextOption(staticText.textOption());









最初のエラーは、ItemStopsClickFocusPropagationプロパティがQGraphicsItemクラスのメンバーではなく、2番目が同様のエラーであるということでした。 これらの行をしばらくコメントアウトしました。



機能を拡張してエラーをキャッチするプロセスは1分間停止しません。したがって、MTFの将来のバージョンでは、すべてのエラーが修正され、新しいエラーが追加されます。



Ubuntu 10.04リポジトリからMeeGo Touch 1.1をインストールします


  1. パッケージマネージャーを構成します。

    -/etc/apt/sources.list.d/meego-sdk.listに次の行を追加します

    deb repo.meego.com/MeeGo/sdk/host/repos/ubuntu/10.04 /

    -リポジトリキーの追加:

    $ gpg --keyserver pgpkeys.mit.edu --recv 0BC7BEC479FC1F8A

    $ gpg --export --armor 0BC7BEC479FC1F8A | sudo apt-key add-

    -パッケージマネージャーデータベースの更新:

    $ sudo apt-get update

    -MeeGoリポジトリが正しく追加されたことを確認するには、次のコマンドを実行します。 MADDEパッケージの詳細が表示されます。

    $ apt-cache policy madde

  2. MeeGo SDKのインストール: $ sudo apt-get install meego-sdk
  3. MeeGoオブジェクトをインストールします。

    -MADDEを使用してMeeGoオブジェクトを作成します(オブジェクト:ARM(N900):meego-core-armv7l-1.1; Aava:meego-handset-ia32-1.1、meego-netbook-ia32-1.1):

    $ sudo mad-admin create -f "target"

    -オブジェクトが正しくインストールされたことを確認するには、次のコマンドを実行します。

    $ mad -t "target" pscreate -t​​ qt-simple qthello

    $ cd qthello

    $ mad -t "target" qmake

    $ mad -t "target" make

  4. 正しいオブジェクトに対してqt-simpleアプリケーションが作成されていることを確認し、次を実行します: $ file build / qthello




MeeGo Touch 1.1のインストールの詳細については、リソース[1]を参照してください。



XephyrエミュレータでMeego-Handset [Netbook]エディションを起動する




  1. Meegoハンドセットエディションまたはネットブックエディションイメージをダウンロードして解凍します。

    $ wget download3.meego.com/meego-handset-sdk-20101012-1.1.80.20101024.1603-sda.raw.tar.bz2

    または

    $ wget download3.meego.com/meego-netbook-sdk-20101012-1.1.80.20101024.1603-sda.raw.tar.bz2

    $ tar xjvf download3.meego.com/meego-handset-sdk-20101012-1.1.80.20101024.1603-sda.raw.tar.bz2

    注: MeeGoビルドは毎日表示され、リンク[5]からダウンロードできます。

  2. meego-sdk-chrootスクリプトをダウンロードします。

    $ wget download3.meego.com/meego-sdk-chroot

    スクリプトを実行可能にします:$ chmod + x ./meego-sdk-chroot

  3. Xを構成してXephyrを実行します。

    $ xhost + SI:localuser: "ユーザー名"

  4. MeeGoイメージをディレクトリにマウントし、meego-sdk-chrootスクリプトを実行します。

    $ sudo mkdir ../[name_of_mount_directory]

    $ sudo mount -o loop、offset = 512 ./[meego_handset_raw]

    ../[mount_of_mount_directory]

    $ sudo ./meego-sdk-chroot ../[name_of_mount_directory]

    今、meego chrootのシェルにいます。

    注:イメージをアンマウントするには、次のコマンドを使用します

    $ sudo umount ../[name_of_mount_directory]

  5. MeeGoを起動します。

    $ export DISPLAY =:0; 環境変数を設定する

    $ zypper install meego-simulator-launcher-handset; meegoハンドセットのみ

    $ startmeego&





最後のコマンドは、MeeGoハンドセットを起動します。 マウントされたイメージ(ハンドセットまたはネットブック)に基づいて、1つまたは別のイメージが起動されます。



Xephyr上のMeeGoハンドセット



1. MeeGo-ハンドセットUI



Xephyr上のMeeGoネットブック



2. MeeGo-Netbook UI



MeeGo-HandsetおよびMeeGo-NetbookでMaemoプラットフォーム用の電卓を起動しましょう(以下のソース)。



MeeGo-Netbookで電卓を起動する




  1. 上記のように、エミュレータでMeeGo-Netbookを実行します。
  2. ディレクトリをプロジェクトとともにマウントします。そのために、次の手順を実行します。

    -MeeGo-Handsetにディレクトリを作成します。

    $ sudo mkdir [meego_netbook_mount_dir] / home / meego /コード

    -計算機ソースを使用してディレクトリをマウントします。

    $ sudo mount --bind [calculator_sources] / [meego_netbook_mount_dir] / home / meego / code

    注:このコマンドは標準シェル(bash)で実行します。

  3. マウントされたディレクトリに移動し、計算機を実行します。

    $ cd home / meego / code /計算機

    $ DISPLAY =:2 ./calculator

    注:このコマンドはmeegoシェル(meego chroot)で実行します





MeeGo-Netbookで実行中の計算機を図に示します。 3。







次に、MeeGo-Handsetで計算機を実行します。 アプリケーションを開始するには、MeeGo-Netbookの場合と同じすべての手順に従う必要がありますが、MeeGo-Handsetのアセンブリのみを開始します。 MeeGoハンドセットで実行中の計算機を図に示します。 4。





4. MeeGo-ハンドセット電卓



図に見られるように 4、計算機は予想どおりに見えません。 問題が何であるかを見てみましょう。 そして問題は、MeeGoハンドセットアプリケーションの特別なツールセット、つまりMeeGo Touch Framework(MTF、libmeegotouch)を使用して開発されていることです。 これがどのように行われるかを見てみましょう。



MeeGo-Handsetのアプリケーションを変更する




MeeGo Touch(libmeegotouch)は、タッチスクリーンを備えたモバイルデバイス向けのQtベースのアプリケーション開発ツールです。 これはMeeGoプラットフォームAPIの一部です。 MeeGoハンドセットUXの原則に従う独自のアプリケーションを作成するために必要なすべての構成要素を提供します。 このツールはQt Graphics View Frameworkに基づいています。

Qt Creatorでプロジェクト「Empty Project」を作成し、ファイルmain.cpp、calculator.cpp、calculator.h calculatorを追加します。 プロジェクトファイルでは、インストールされたMeeGo Touch(MTF 1.0)に次の行を指定する必要があります。



CONFIG += meegotouch<br/>

INCLUDEPATH += / usr / local / include / meegotouch<br/>

LIBS += / usr / local / lib / libmeegotouchcore. so \<br/>

/ usr / local / lib / libmeegotouchsettings. so \<br/>

/ usr / local / lib / libmeegotouchviews. so \<br/>

/ usr / local / lib / libmeegotouchextensions. so








その後、プログラムを変更して、MeeGoで使用するように変更できます。



MTF関連の変更




main.cpp



#include <MApplication> <br/>

#include <MApplicationWindow> <br/>

#include <MApplicationPage> <br/>

#include "calculator.h" <br/>

<br/>

int main ( int argc , char ** argv ) <br/>

{ <br/>

MApplication app ( argc , argv ) ; <br/>

MApplicationWindow window ; <br/>

MApplicationPage page ; <br/>

Calculator * calc = new Calculator ( ) ; <br/>

<br/>

page. setTitle ( "Calculator" ) ; <br/>

page. setCentralWidget ( calc ) ; <br/>

page. appear ( & window ) ; <br/>

<br/>

window. show ( ) ; <br/>

<br/>

return app. exec ( ) ; <br/>

}








main.cppに影響を与えた変更を見てみましょう。

  1. すべてのヘッダーファイルは大文字の「M」で始まります。
  2. MeeGo TouchはQtに基づいているため、主要なシステムクラスと機能を使用できます。主要な変更は、ツールのグラフィックコンポーネント、つまりウィジェット、ウィンドウなどに影響します。
  3. MApplicationには、Qtと同様のアプリケーションがあります。
  4. MApplicationWindowは、ユーザーインターフェイスを構築するための基礎を提供し、すべてのアプリケーションに共通するナビゲーションバーを提供します。これには、ホームボタンと閉じるボタン、ツールバー(横向き)、アプリケーションメニューが含まれます。 つまり、このクラスは、他のすべての要素を含むメインアプリケーションウィンドウに関連付けられているものを担当します。
  5. MApplicationPageは、アプリケーションユーザーインターフェイスを構築するためのツールでもあります。 デフォルトでは、ページは水平表示用に作成され、ユーザーはcentralWidget()またはsetCentralWidget(MWidget *)メソッド(MTF 1.0ではsetCentralWidget(QGraphicsWidget *))を使用してコンポーネントを配置できます。 ページは、appear(QGraphicsScene *、DeletionPolicy)またはappear(MWindow *、DeletionPolicy)メソッドを使用して画面に表示されます。 appear()メソッドを呼び出すと、ページに関連付けられたアニメーションの表示が開始されます。 ページをすぐに表示する場合は、MSceneManager APIを参照してください。




詳細については、Platfrom APIドキュメント[4]を参照してください。



calculator.h



#include <QStack> <br/>

#include <MGridLayoutPolicy> // , <br/>

#include <MButton> // <br/>

#include <MLayout> // <br/>

#include <MTextEdit> // <br/>

#include <QGraphicsWidget> // () <br/>

<br/>

class Calculator : public QGraphicsWidget<br/>

{ <br/>

Q_OBJECT <br/>

<br/>

public : <br/>

Calculator ( QGraphicsItem * parent = 0 , Qt :: WindowFlags wFlags = 0 ) ; <br/>

MButton * createButton ( const QString & str ) ; <br/>

…<br/>

private : <br/>

MTextEdit * lcdDisplay ; <br/>

QStack < QString > stack ; <br/>

QString strDisplay ; <br/>

…<br/>

} ;








setCentralWidget()メソッドを使用して電卓ウィジェットをアプリケーションページに追加するには、QGraphicsWidgetクラスから継承する必要があります。 MTF 1.1では、setCentralWidget()ページの中央ウィジェットのインストール機能は、インストール可能なコンポーネントとしてMWidgetを受け入れます。



calculator.cpp



#include "calculator.h" <br/>

<br/>

Calculator :: Calculator ( QGraphicsItem * parent , Qt :: WindowFlags wFlags ) : <br/>

QGraphicsWidget ( parent , wFlags ) <br/>

{ <br/>

lcdDisplay = new MTextEdit ( ) ; <br/>

lcdDisplay -> setReadOnly ( true ) ; <br/>

lcdDisplay -> setMinimumSize ( 150 , 50 ) ; <br/>

<br/>

…<br/>

<br/>

MLayout * layout = new MLayout ; <br/>

MGridLayoutPolicy * ptopLayout = new MGridLayoutPolicy ( layout ) ; <br/>

ptopLayout -> addItem ( lcdDisplay , 0 , 0 , 1 , 4 ) ; <br/>

ptopLayout -> addItem ( createButton ( "CE" ) , 1 , 3 ) ; <br/>

<br/>

for ( int i = 0 ; i < 4 ; ++ i ) <br/>

for ( int j = 0 ; j < 4 ; ++ j ) <br/>

ptopLayout -> addItem ( createButton ( aButtons [ i ] [ j ] ) , i + 2 , j ) ; <br/>

<br/>

layout -> setPolicy ( ptopLayout ) ; <br/>

setLayout ( layout ) ; <br/>

}








これらは基本的に、MeeGoハンドセットへの移植時にアプリケーションに影響を与えた主な変更点です。 QLCDNumberを使用した計算結果の表示に関連するいくつかの変更があります。このクラスはMTF 1.0ではなかったため、MTextEditに置き換える必要がありました。



変更の結果を図に示します。 5。





5. MeeGo-ハンドセット電卓



提示された変更からわかるように、MeeGoハンドセット用のアプリケーションの移植は難しくありません。 時間が経つにつれて、MTFは機能とパワーのみを獲得します。これにより、開発者は操作の余地が増え、より現代的で高品質のアプリケーションを使用できるようになります。



おわりに




MeeGoは、ノキアとIntelの共同開発であり、勢いを得て市場を征服し始めたばかりです。 このプラットフォームはMaemoとMoblinに基づいており、これらのプラットフォームのすべての利点を吸収し、独自のプラットフォームを取得しました。

このプラットフォームは開発中であり、近い将来広く使用される予定です。 主な重点は、モバイルデバイスからテレビまで、多くのデバイスで使用できるMeeGoプラットフォームに混合されます。



参照資料


  1. MeeGo SDKをインストールして構成します: wiki.meego.com/SDK/Docs/1.1/Getting_started_with_the_MeeGo_SDK_for_Linux
  2. XephyrエミュレーターでMeeGoを実行する: wiki.meego.com/MeeGo_SDK_with_Xephyr
  3. プラットフォームAPI: apidocs.meego.com/1.1/platform/html/index.html
  4. MeeGo API 1.1: apidocs.meego.com/1.1/core/html/index.html
  5. MeeGo ビルドrepo.meego.com/MeeGo/builds
  6. シュリーM.-Qt 4.5。 C ++でのプロフェッショナルプログラミング。 -SPB。:BHV-Petersburg、2010、896s。
  7. MeeGoハンドセットのHello World: wiki.meego.com/SDK/Docs/1.1/Creating_Hello_World、blog.telaic.pl / ?p = 63
  8. MeeGoレビュー: en.wikipedia.org/wiki/MeeGo




PS

  1. 完全なコード
  2. オリジナル記事



All Articles