Meego Application開発 2010/12/09
Total Page:16
File Type:pdf, Size:1020Kb
MeeGo Application開発 2010/12/09 Youngsik Yoon Software Application Engineer Software and Services Group *Other names and brands may be claimed as the property of others Software and Services Group 1 Agenda • サンプルApplication • MeeGo SDK • MeeGo Touch Framework (MTF) • Connman • D-Bus • サンプルApplicationの実装 • まとめ • Q/A • 参照 *Other names and brands may be claimed as the property of others Software and Services Group 2 サンプルApplication *Other names and brands may be claimed as the property of others Software and Services Group 3 サンプルApplication • MeeGoのConnection Manager(Connman)からデバイスの接続状態を 取得し表示する。 • Connmanを使ってApplication上で接続のOn/Offを行う *Other names and brands may be claimed as the property of others Software and Services Group 4 MeeGo Architecture *Other names and brands may be claimed as the property of others Software and Services Group 5 MeeGo SDK *Other names and brands may be claimed as the property of others Software and Services Group 6 MeeGo SDK • MeeGo SDK 1.1 Beta (2010年11月9日リリース) - Linux版(Ubuntu 9.10, 10.04, Fedora 12, 13) - QtCreator 2.0.1 (qt-tools 4.7.0) & MeeGo Toolchains - MeeGo Application Develop and Debug Environment (MADDE) 0.7.53 - qemu-glとQEMU用OS images core (armv7l, ia32) handset (armv7l, ia32) netbook (ia32) • Windows版 - テスト版を試すことができる http://wiki.meego.com/SDK/MeeGo_SDK_for_Windows *Other names and brands may be claimed as the property of others Software and Services Group 7 二つのオプション • MeeGo chroot + Xephyr - ホストマシン上で直接実行(シミュレーター) - グラフィックス・ハードウェア加速があればもっとよい - chrootした環境からQT Creatorを使う - 速度が速い • MeeGo Toolchain + QEMU - QEMU仮想マシーンを使用(エミュレーター) - バーチャライゼーション(VT)とグラフィックス・ハードウェア加速が必要 - QT Creatorとの統合 - 柔軟性が高い(必要ならターミナルからsshで接続し操作) *Other names and brands may be claimed as the property of others Software and Services Group 8 MeeGo chroot + Xephyr *Other names and brands may be claimed as the property of others Software and Services Group 9 MeeGo Toolchain + QEMU *Other names and brands may be claimed as the property of others Software and Services Group 10 MeeGo chroot + Xephyrのセットアップ - 1 * 具体的な手順は以下のwikiを参照 http://wiki.meego.com/MeeGo_SDK_with_Xephyr http://wiki.meego.com/Building_a_MeeGo_chroot_on_Linux 1. chrootのdownload wget http://download3.meego.com/meego-sdk-chroot 2. Handset OS image(Aava)のdownload http://meego.com/downloads/releases/1.1/meego-v1.1-handset 3. kpartxを使ってOS imageを作業Directoryに展開する sudo kpartx -a -v ./meego-handset-ia32-aava-mtf-1.1-sda.bin sudo mount /dev/mapper/loop0p1 ./tmp-mnt -o loop,ro sudo cp –a ./tmp-mnt ./handset-chroot *Other names and brands may be claimed as the property of others Software and Services Group 11 MeeGo chroot + Xephyrのセットアップ - 2 4. 展開した作業directoryにchroot sudo meego-sdk-chroot ./handset-chroot/ 5. chrootの中で必要なPackageをインストール zypper addrepo http://download.meego.com/live/devel:/tools:/sdk:/ target/MeeGo_1.1/ meego-sdk zypper install meego-simulator-launcher-handset 6. Xephyr上でMeeGo handsetを実行 startmeego & *Other names and brands may be claimed as the property of others Software and Services Group 12 MeeGo Touch Framework (MTF) *Other names and brands may be claimed as the property of others Software and Services Group 13 MeeGo Touch Framework (MTF) - 1 • Platform API (MeeGo APIではない) • QGraphicsViewをベースとしたUI Framework • QGraphicsViewをベースとしたWidgetを提供 • タッチ操作に最適化されたUI Framework *Other names and brands may be claimed as the property of others Software and Services Group 14 MeeGo Touch Framework (MTF) - 2 • テーマー機能 • CSSを使ってソースコードをいじることなくLook&Feelをカスタマイズ • 自動Screenローテーション *Other names and brands may be claimed as the property of others Software and Services Group 15 libmeegotouch-qtstyle • QtStyle plugin • QT WidgetをMeeGo Touch FrameworkのWidget Styleに 見せてくれる *Other names and brands may be claimed as the property of others Software and Services Group 16 QT Quick – QML • JavaScriptベースのUIプログラミング言語、UI を宣言的に記述する • Web / Graphics デザイナーからも使いやすい • QT Quick ComponentsでMeeGo Handset Look&Feelの Widgetを提供 *Other names and brands may be claimed as the property of others Software and Services Group 17 Connman *Other names and brands may be claimed as the property of others Software and Services Group 18 Connman (Connection Manager) • 複雑性の回避 (HAL/DeviceKitを使わない) • UIに依存しない構造 (複数のUIが同時実行可能) • Plug-in拡張 • 最小限の依存関係 - C library - GLib core (mainloop, string処理など) - D-Bus低レベルlibrary (GobjectベースのD-Bus bindingではない、 libgdbus helper libraryだけをコピーして使用) - udev library (optional) • Embeddedでの使用を考慮 • Ubuntuから試すには - $ apt-get install connman connman-gnome *Other names and brands may be claimed as the property of others Software and Services Group 19 User Interface • UIはDBusを使ってConnmanのcore daemonと通信 • すべてのステータス変更はDBus signalを通じて完全非同期でUI側に 通知される • 複数のUIを同時実行 *Other names and brands may be claimed as the property of others Software and Services Group 20 D-Bus *Other names and brands may be claimed as the property of others Software and Services Group 21 D-Bus - 1 • Freedesktop.orgのプロジェクト • IPC(Inter-Process Communications)システムの一種 - Desktop Application間のコミュニケーション - DesktopセッションとOS&System daemon間のコミュニケーション • Server – Client モデル • Service(Server側)の自動実行メカニズムを提供 • いろんなラッパーライブラリ - Qt, Glib, Python, Java, C# *Other names and brands may be claimed as the property of others Software and Services Group 22 D-Bus - 2 • Message Bus - Session Bus - System Bus • Message Type - Method call - Signal - Reply - Error • Messageの宛て先 - Service - Object Path - Interface - Method / Signal *Other names and brands may be claimed as the property of others Software and Services Group 23 D-Busツール • dbus-send - $ dbus-send --system --print-reply --dest=org.ofono /modem1 org.ofono.Phonebook.Import • dbus-monitor - $ dbus-monitor --system • d-feet • qdbusviewer *Other names and brands may be claimed as the property of others Software and Services Group 24 サンプルApplicationの実装 *Other names and brands may be claimed as the property of others Software and Services Group 25 Window表示 *Other names and brands may be claimed as the property of others Software and Services Group 26 Layout作成とWidget追加 *Other names and brands may be claimed as the property of others Software and Services Group 27 Screenローテーション • MeeGo Touch Frameworkで作られたApplicationはDefaultで Screenローテーションに対応している • Screenローテーションに合わせて 独自のLayoutを指定することも可能 *Other names and brands may be claimed as the property of others Software and Services Group 28 ApplicationからDBus経由でConnmanのAPI を呼ぶ • QTでDBusを使う三つの方法 - QDBusMessageを使う: 一回のMessageのやり取り - QDBusInterfaceを使う: 提供されるMethodを複雑に操作 - QtDBus XML compiler(qdbusxml2cpp)を使う: もっとも簡単な方法、 Service側APIのXML定義ファイルをベースにC++Proxyクラスを生成 • 今回使うConnmanのAPI - GetProperties: デバイスの接続状態を含めすべての属性を取得 - EnableTechnology: 特定接続をOn - DisableTechnology: 特定接続をOff - PropertyChanged:デバイスの接続状態などの属性が変更されると このSignalが通知される *Other names and brands may be claimed as the property of others Software and Services Group 29 qdbusxml2cppでProxyクラスを生成 • 通常Application側はService側の org.freedesktop.DBus.Introspectableインタフェースの Introspectメッソドを呼べばXML定義を取得できるが、Connmanでは なかったので使うAPIをベースに直接XMLを作成する • 作ったXMLをベースにProxyクラスを生成 - $ qdbusxml2cpp -p manager_interface connman-manager.xml (manager_interface.hとmanager_interface.cppが生成される) *Other names and brands may be claimed as the property of others Software and Services Group 30 Proxyクラスを利用してデバイスの接続状態取得 - 1 *Other names and brands may be claimed as the property of others Software and Services Group 31 Proxyクラスを利用してデバイスの接続状態取得 - 2 *Other names and brands may be claimed as the property of others Software and Services Group 32 実行 – 状態取得&表示 *Other names and brands may be claimed as the property of others Software and Services Group 33 Proxyクラスを利用して接続をOn/Off *Other names and brands may be claimed as the property of others Software and Services Group 34 実行 – 接続Off *Other names and brands may be claimed as the property of others Software and Services Group 35 実行 – 接続On *Other names and brands may be claimed as the property of others Software and Services Group 36 まとめ • MeeGo SDKをDownloadしMeeGo Handset・Netbookの開発 環境を構築してみましょう。 • MeeGo SDKのWindows版も近々リリースされる予定であり、その開 発環境は益々充実してきています。 *Other names and brands may be claimed as the property of others Software and Services Group 37 Q&A *Other names and brands may be claimed as the property of others Software and Services Group 38 参照 • MeeGo − http://meego.com (MeeGo本家サイト) − http://meego.jp (日本MeeGoサイト) − http://meego-users.jp (日本MeeGoユーザー会サイト) • MeeGo SDK − http://meego.com/downloads/releases/1.1/meego-v1.1-sdk − http://wiki.meego.com/Getting_started_with_the_MeeGo_SDK • MeeGo ソース − http://meego.gitorious.org/ • Connman − http://connman.net/ • D-Bus − http://dbus.freedesktop.org/ *Other names and brands may be claimed as the property of others Software and Services Group 39 Back up *Other names and brands may be claimed as the property of others Software and Services Group 40.