はじめに
この記事では、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を手動でインストールする
- MeeGo Touchの場合、まだインストールされていない場合はQtバージョン4.7が必要です(ダウンロード: qt.nokia.com/downloads )。
-環境変数の登録:
$ export QTDIR = / [インストールされているqtsdkへのパス] / qt /
$ export PATH = $ {QTDIR} / bin:$ {PATH}
- Touchテーマをダウンロードしてインストールします(デスクトップマシンでアプリケーションを実行するため)。
-リポジトリからクローン: $ git clone git://gitorious.org/meegotouch/meegotouch-theme.git
-収集: $ qmake
-インストール: $ sudo make install
- 必要なパッケージをインストールします。 $ sudo apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev libxdamage-dev
- 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をインストールします
- パッケージマネージャーを構成します。
-/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
- MeeGo SDKのインストール: $ sudo apt-get install meego-sdk
- 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
- 正しいオブジェクトに対してqt-simpleアプリケーションが作成されていることを確認し、次を実行します: $ file build / qthello
MeeGo Touch 1.1のインストールの詳細については、リソース[1]を参照してください。
XephyrエミュレータでMeego-Handset [Netbook]エディションを起動する
- 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]からダウンロードできます。
- meego-sdk-chrootスクリプトをダウンロードします。
$ wget download3.meego.com/meego-sdk-chroot
スクリプトを実行可能にします:$ chmod + x ./meego-sdk-chroot
- Xを構成してXephyrを実行します。
$ xhost + SI:localuser: "ユーザー名"
- 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]
- 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で電卓を起動する
- 上記のように、エミュレータでMeeGo-Netbookを実行します。
- ディレクトリをプロジェクトとともにマウントします。そのために、次の手順を実行します。
-MeeGo-Handsetにディレクトリを作成します。
$ sudo mkdir [meego_netbook_mount_dir] / home / meego /コード
-計算機ソースを使用してディレクトリをマウントします。
$ sudo mount --bind [calculator_sources] / [meego_netbook_mount_dir] / home / meego / code
注:このコマンドは標準シェル(bash)で実行します。
- マウントされたディレクトリに移動し、計算機を実行します。
$ 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に影響を与えた変更を見てみましょう。
- すべてのヘッダーファイルは大文字の「M」で始まります。
- MeeGo TouchはQtに基づいているため、主要なシステムクラスと機能を使用できます。主要な変更は、ツールのグラフィックコンポーネント、つまりウィジェット、ウィンドウなどに影響します。
- MApplicationには、Qtと同様のアプリケーションがあります。
- MApplicationWindowは、ユーザーインターフェイスを構築するための基礎を提供し、すべてのアプリケーションに共通するナビゲーションバーを提供します。これには、ホームボタンと閉じるボタン、ツールバー(横向き)、アプリケーションメニューが含まれます。 つまり、このクラスは、他のすべての要素を含むメインアプリケーションウィンドウに関連付けられているものを担当します。
- 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プラットフォームに混合されます。
参照資料
- MeeGo SDKをインストールして構成します: wiki.meego.com/SDK/Docs/1.1/Getting_started_with_the_MeeGo_SDK_for_Linux 。
- XephyrエミュレーターでMeeGoを実行する: wiki.meego.com/MeeGo_SDK_with_Xephyr
- プラットフォームAPI: apidocs.meego.com/1.1/platform/html/index.html
- MeeGo API 1.1: apidocs.meego.com/1.1/core/html/index.html
- MeeGo ビルド : repo.meego.com/MeeGo/builds
- シュリーM.-Qt 4.5。 C ++でのプロフェッショナルプログラミング。 -SPB。:BHV-Petersburg、2010、896s。
- MeeGoハンドセットのHello World: wiki.meego.com/SDK/Docs/1.1/Creating_Hello_World、blog.telaic.pl / ?p = 63
- MeeGoレビュー: en.wikipedia.org/wiki/MeeGo
PS