Upload
naruto-takahashi
View
5.250
Download
1
Tags:
Embed Size (px)
DESCRIPTION
Citation preview
Naruto TAKAHASHI(@TNaruto) ◦ [email protected] ◦ http://eflmemo.hatenablog.com/
Software Engineer Interesting keywords ◦ EFL(Enlightenment Foundation Libraries) ◦ Tizen ◦ NPAPI ◦ NFC ◦ HTML5 ◦ Firefox OS
Tizen Native App を実装する方法 ◦ 生のグラフィックライブラリ EFL を使用する。
◦ ラッパーライブラリ DPL を使用する。
Tizen SDK でサポートのはどちらかわからない。
SDK でサポートする Native 用ライブラリが EFL でも DPL のどちらでも対応できるように予習しましょう。
Tizen Native App のおさらい
Tizen Native App を作成する二つのアプローチ ◦ EFL with Tizen Application Framework
◦ DPL(Design Patterns Library)
C/C++ で実装するアプリケーション
html5 でできないことを補える ◦ 高速動作し放題
◦ デバイス触り放題
◦ アプリの状態管理し放題
◦ 他プロセスと通信し放題
◦ タスクバーにアイコン表示し放題
Native App ってすごいよね。
「HTML5に賭けたのは失敗。今は時期が悪い」 ◦ Html5 急先鋒 Facebook の発言 ◦ http://www.publickey1.jp/blog/12/facebookhtml5.html
クラッシュの原因がわらない ◦ ヒープサイズ ◦ オブジェクトカウント ◦ ガベージコレクションサイクル ◦ GPUバッファサイズ ◦ リソース上限
性能が出ない GPUがブラックボックス
Native App ならその要求をすべて答えられます。 ◦ Native App ってすごくなーい?
「Native(C/C++ )なら何でもできる。」 ◦ 半導体をオペレーションするシステムのための言語
◦ 何でもやれるけど、やるのが難しい。
「html5 はできることが限られている」 ◦ ドキュメントをレイアウトするための言語
それに動的処理を追加
◦ 何でもできないけど、得意なことは簡単にできる。
要求に応じて使い分ければよいのでは? ◦ Html5 で実現できるものは html5 で
◦ Html5 で実現できないものは無理せず Native で
Native か html5 を選ぶ自由を獲得すべし。
…とは言ってますが、すべてを html5 で成し遂げる挑戦している B2G を応援しています。
実装に関すること ◦ ウィジットの描画の管理 (EFL)
◦ アプリのリソース管理、お作法
ビルドに関すること ◦ プロジェクトのファイル構成
◦ プロジェクトのビルド方法
gbs
obs
実装に関すること ◦ ウィジットの描画の管理 (EFL)
◦ アプリのリソース管理、お作法
ビルドに関すること ◦ プロジェクトのファイル構成
◦ プロジェクトのビルド方法
gbs
obs
こっちは Tizen SDK がサポートするからスキップ
C/C++ で開発
エントリーポイントは main() からはじまるよ
UX は elementary(EFL) を使用
メインループ、ライフサイクルは Tizen Application Framework を使用
プリインストールされている Native App ◦ EFL + Tizen Application Framework で作成
AUL(Application Utility Library) ◦ App の launch(Web App <-> Native App 双方向)
App-Core ◦ App のライフサイクルの管理、システムイベントキャッチ
App-Service ◦ アプリケーションのサービス設定
appcore に渡すコールバック関数一覧
オペレーション 説明
create メインループに入る前に実行される。 (ウィンドウの生成などの初期化処理を行う。)
terminate メインループの後に実行される。 (アプリの終了処理などを行う。)
pause ウィンドウがバックグラウンドに移動したときに実行される。 (停止処理や、バックグラウンド処理の開始などを行う)
resume ウインドウがフォアグランドに移動したときに実行される。 (復帰処理、バックグラウンド処理の停止など行う)
reset 再実行時に実行される。
システムの変更があったときのイベント
appcore_set_event_callback() で登録する。
システムイベント ◦ LOWメモリー
◦ LOWバッテリー
◦ 言語変更
◦ 地域変更
デバイスの回転を検知したときのイベント
appcore_set_rotation_cb() で登録する。
イベントの種類 ◦ landscape
◦ portrait
◦ reverse landscape
◦ reverse portrait
Design Patterns Library
Design Patterns Library
Samsung Linux Platform から作られているグラフィックライブラリ
ラッパー対象ライブラリ ◦ EFL
◦ GTK
◦ Qt もいける…?
C++ で使うことが前提
もともとは SLP の三つのグラフィックライブラリを使えるようにするためのラッパーライブラリのようです。
- GTK
- EFL
- STK(Samsung Tool Kit?)
Tizen Web App のランタイム ◦ WebView + Tizen Device API
WRT は DPL を使用している。
Tizen Device API ◦ DPL + JavaScriptCore で実装してる
◦ 拡張 API を作るために必要
https://review.tizen.org/git/?p=framework/web/wrt-commons.git;a=summary
snapshot を押すと落とせます。
ソースの中に pdf ファイルがあります。
wrt-common/doc/dpl_programming_guide.pdf
#include <dpl/application.h> int main(int argc, char *argv[]) { DPL::Application app(argc, argv, “hello_world”); return app.Exec(); }
メソッド定義 目的
OnCreate() アプリケーション初期化
OnStart() アプリケーションのスタート
OnStop() アプリケーションがバックに移動
OnResume() アプリケーションがフロントエンドに移動
OnRelaunch() “launch service “ で呼ばれる
OnTerminate() アプリケーション終了時
OnLowMemory() メモリが少ない時
OnLowBattery() バッテリーが少ない時
OnLaunguageChanged() 言語設定変更時
基本は EFL + Tizen Application Framework に似ている
Android App の作成に近いよね。
HTML5 は Native はどちらを使う? ◦ 要求に応じたソリューションを!
Tizen SDK でサポートするライブラリはどっち? ◦ どちらか正直わからない。
予想では… ◦ Tizen SDK では DPL をサポート ◦ EFL + Tizen App FW でも組めるけど、公にしないのでは?
ともあれ使う側の人は両方使えるのが理想。
そろそろ EFL アプリを作らないと怒られそうなのでいい加減次回から本気出すよ(`・ω・´)
m(_ _)m