29
Naruto TAKAHASHI [email protected] ターボシステムズ株式会社 第五回 Tizen 勉強会

Tizen 2.0 alpha でサポートされなかった native api

Tags:

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Tizen 2.0 alpha でサポートされなかった native api

Naruto TAKAHASHI [email protected]

ターボシステムズ株式会社 第五回 Tizen 勉強会

Page 2: Tizen 2.0 alpha でサポートされなかった native api

Naruto TAKAHASHI(@TNaruto) ◦ [email protected] ◦ http://eflmemo.hatenablog.com/

Software Engineer Interesting keywords ◦ EFL(Enlightenment Foundation Libraries) ◦ Tizen ◦ NPAPI ◦ NFC ◦ HTML5 ◦ Firefox OS

Page 3: Tizen 2.0 alpha でサポートされなかった native api

Tizen Native App を実装する方法 ◦ 生のグラフィックライブラリ EFL を使用する。

◦ ラッパーライブラリ DPL を使用する。

Tizen SDK でサポートのはどちらかわからない。

SDK でサポートする Native 用ライブラリが EFL でも DPL のどちらでも対応できるように予習しましょう。

Page 4: Tizen 2.0 alpha でサポートされなかった native api

Tizen Native App のおさらい

Tizen Native App を作成する二つのアプローチ ◦ EFL with Tizen Application Framework

◦ DPL(Design Patterns Library)

Page 5: Tizen 2.0 alpha でサポートされなかった native api
Page 6: Tizen 2.0 alpha でサポートされなかった native api

C/C++ で実装するアプリケーション

html5 でできないことを補える ◦ 高速動作し放題

◦ デバイス触り放題

◦ アプリの状態管理し放題

◦ 他プロセスと通信し放題

◦ タスクバーにアイコン表示し放題

Native App ってすごいよね。

Page 7: Tizen 2.0 alpha でサポートされなかった native api

「HTML5に賭けたのは失敗。今は時期が悪い」 ◦ Html5 急先鋒 Facebook の発言 ◦ http://www.publickey1.jp/blog/12/facebookhtml5.html

クラッシュの原因がわらない ◦ ヒープサイズ ◦ オブジェクトカウント ◦ ガベージコレクションサイクル ◦ GPUバッファサイズ ◦ リソース上限

性能が出ない GPUがブラックボックス

Native App ならその要求をすべて答えられます。 ◦ Native App ってすごくなーい?

Page 8: Tizen 2.0 alpha でサポートされなかった native api

「Native(C/C++ )なら何でもできる。」 ◦ 半導体をオペレーションするシステムのための言語

◦ 何でもやれるけど、やるのが難しい。

「html5 はできることが限られている」 ◦ ドキュメントをレイアウトするための言語

それに動的処理を追加

◦ 何でもできないけど、得意なことは簡単にできる。

Page 9: Tizen 2.0 alpha でサポートされなかった native api

要求に応じて使い分ければよいのでは? ◦ Html5 で実現できるものは html5 で

◦ Html5 で実現できないものは無理せず Native で

Native か html5 を選ぶ自由を獲得すべし。

…とは言ってますが、すべてを html5 で成し遂げる挑戦している B2G を応援しています。

Page 10: Tizen 2.0 alpha でサポートされなかった native api

実装に関すること ◦ ウィジットの描画の管理 (EFL)

◦ アプリのリソース管理、お作法

ビルドに関すること ◦ プロジェクトのファイル構成

◦ プロジェクトのビルド方法

gbs

obs

Page 11: Tizen 2.0 alpha でサポートされなかった native api

実装に関すること ◦ ウィジットの描画の管理 (EFL)

◦ アプリのリソース管理、お作法

ビルドに関すること ◦ プロジェクトのファイル構成

◦ プロジェクトのビルド方法

gbs

obs

こっちは Tizen SDK がサポートするからスキップ

Page 12: Tizen 2.0 alpha でサポートされなかった native api
Page 13: Tizen 2.0 alpha でサポートされなかった native api

C/C++ で開発

エントリーポイントは main() からはじまるよ

UX は elementary(EFL) を使用

メインループ、ライフサイクルは Tizen Application Framework を使用

プリインストールされている Native App ◦ EFL + Tizen Application Framework で作成

Page 14: Tizen 2.0 alpha でサポートされなかった native api

AUL(Application Utility Library) ◦ App の launch(Web App <-> Native App 双方向)

App-Core ◦ App のライフサイクルの管理、システムイベントキャッチ

App-Service ◦ アプリケーションのサービス設定

Page 15: Tizen 2.0 alpha でサポートされなかった native api

appcore に渡すコールバック関数一覧

オペレーション 説明

create メインループに入る前に実行される。 (ウィンドウの生成などの初期化処理を行う。)

terminate メインループの後に実行される。 (アプリの終了処理などを行う。)

pause ウィンドウがバックグラウンドに移動したときに実行される。 (停止処理や、バックグラウンド処理の開始などを行う)

resume ウインドウがフォアグランドに移動したときに実行される。 (復帰処理、バックグラウンド処理の停止など行う)

reset 再実行時に実行される。

Page 16: Tizen 2.0 alpha でサポートされなかった native api

システムの変更があったときのイベント

appcore_set_event_callback() で登録する。

システムイベント ◦ LOWメモリー

◦ LOWバッテリー

◦ 言語変更

◦ 地域変更

Page 17: Tizen 2.0 alpha でサポートされなかった native api

デバイスの回転を検知したときのイベント

appcore_set_rotation_cb() で登録する。

イベントの種類 ◦ landscape

◦ portrait

◦ reverse landscape

◦ reverse portrait

Page 18: Tizen 2.0 alpha でサポートされなかった native api

Design Patterns Library

Page 19: Tizen 2.0 alpha でサポートされなかった native api

Design Patterns Library

Samsung Linux Platform から作られているグラフィックライブラリ

ラッパー対象ライブラリ ◦ EFL

◦ GTK

◦ Qt もいける…?

C++ で使うことが前提

Page 20: Tizen 2.0 alpha でサポートされなかった native api

もともとは SLP の三つのグラフィックライブラリを使えるようにするためのラッパーライブラリのようです。

- GTK

- EFL

- STK(Samsung Tool Kit?)

Page 21: Tizen 2.0 alpha でサポートされなかった native api

Tizen Web App のランタイム ◦ WebView + Tizen Device API

WRT は DPL を使用している。

Tizen Device API ◦ DPL + JavaScriptCore で実装してる

◦ 拡張 API を作るために必要

Page 23: Tizen 2.0 alpha でサポートされなかった native api

ソースの中に pdf ファイルがあります。

wrt-common/doc/dpl_programming_guide.pdf

Page 24: Tizen 2.0 alpha でサポートされなかった native api

#include <dpl/application.h> int main(int argc, char *argv[]) { DPL::Application app(argc, argv, “hello_world”); return app.Exec(); }

Page 25: Tizen 2.0 alpha でサポートされなかった native api

メソッド定義 目的

OnCreate() アプリケーション初期化

OnStart() アプリケーションのスタート

OnStop() アプリケーションがバックに移動

OnResume() アプリケーションがフロントエンドに移動

OnRelaunch() “launch service “ で呼ばれる

OnTerminate() アプリケーション終了時

OnLowMemory() メモリが少ない時

OnLowBattery() バッテリーが少ない時

OnLaunguageChanged() 言語設定変更時

Page 26: Tizen 2.0 alpha でサポートされなかった native api

基本は EFL + Tizen Application Framework に似ている

Android App の作成に近いよね。

Page 27: Tizen 2.0 alpha でサポートされなかった native api
Page 28: Tizen 2.0 alpha でサポートされなかった native api

HTML5 は Native はどちらを使う? ◦ 要求に応じたソリューションを!

Tizen SDK でサポートするライブラリはどっち? ◦ どちらか正直わからない。

予想では… ◦ Tizen SDK では DPL をサポート ◦ EFL + Tizen App FW でも組めるけど、公にしないのでは?

ともあれ使う側の人は両方使えるのが理想。

そろそろ EFL アプリを作らないと怒られそうなのでいい加減次回から本気出すよ(`・ω・´)

Page 29: Tizen 2.0 alpha でサポートされなかった native api

m(_ _)m