初心者向けの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. オリジナル記事

Source: https://habr.com/ru/post/J143986/


All Articles