Firefox OS カスタム ROM の作成

22
3 Tizen 勉強会 Firefox OS カスタム ROM の作成 2012/08/25

Transcript of Firefox OS カスタム ROM の作成

Page 1: Firefox OS カスタム ROM の作成

第 3 回 Tizen 勉強会

Firefox OS カスタム ROM の作成2012/08/25

Page 2: Firefox OS カスタム ROM の作成

自己紹介

Twitter: @masap 職業: 組み込みプログラマ(主に Wi-Fi) ハッシュタグ: #FirefoxOSjp

Page 3: Firefox OS カスタム ROM の作成

概要

Page 4: Firefox OS カスタム ROM の作成

Firefox OSとは

Mozilla が作ったスマートフォンOS 思想: アプリケーションは全て HTML5 になるべき

iOS で購入したアプリは Android でも動くべき

アプリケーション開発環境の比較Android Tizen Firefox OS

開発言語 Java JavaScript JavaScript

画面設計 XML HTML5 HTML5

ネイティブ C++ EFL なし

OS Linux Linux Linux

Page 5: Firefox OS カスタム ROM の作成

Firefox OSとは(続き)

シェア 通信キャリアは 7 社

(米)Sprint、(独)Deutsche Telekom、(アラブ首長国連邦)Etisalat、(フィリピン)Smart、(伊)Telecom Italia、(スペイン)Telefonica、(ノルウェー)Telenor。

端末メーカーは 2 社 (中)TCL Communication Technology、(中)ZTE。

投入時期 2013年初頭に最初の端末をブラジルにて発売予定。

Page 6: Firefox OS カスタム ROM の作成

Firefox OS Phone の使用感

操作性 起動、停止が速い。 15 秒で起動。停止は 1 秒以内。

例としてGalaxy S2 WiMAX は 30 秒で起動、 7 秒で停止。

もたつきなくスルスル動く。

UI Android よりも iPhone に似ている。 物理ホームキーが必要。

Page 7: Firefox OS カスタム ROM の作成

Firefox OS の特徴

プラットフォーム自体をHTML5でカスタマイズ可能 アプリではなくプラットフォームをHTML5で書ける

Tizen はプラットフォーム自体はネイティブ (EFL) で書かれている。

これは Firefox OS 固有の特徴。今日はこの点を中心に説明。

Page 8: Firefox OS カスタム ROM の作成

カスタマイズ(入門編)

Page 9: Firefox OS カスタム ROM の作成

壁紙セレクタ

壁紙セレクタに項目を追加してみる。

Page 10: Firefox OS カスタム ROM の作成

準備

Galaxy S2 (SC-02C) を用意 日本で入手できるモデルでWWモデルに最も近いらしい

Android 4.0 以上を焼く 鬼門!⇐ Firefox OS のスクリプトが認識できるFWであること

Firefox OS をダウンロード/ビルド/焼く 基本的に公式手順通り

https://developer.mozilla.org/en-US/docs/Mozilla/Boot_to_Gecko/B2G_build_prerequisites

フルビルドは Athlon X2 4400 で 2 – 3 時間

Page 11: Firefox OS カスタム ROM の作成

Firefox OSの構造

3層構造

Gaia JavaScriptで書かれたUIレイヤ

Gecko レンダリングエンジン

ハードウェア仮想化レイヤ

ユーザ空間

Linux カーネル カーネル空間

Gonk

Page 12: Firefox OS カスタム ROM の作成

修正箇所

Settings画面はひとつの HTML でできている gaia/apps/settings/index.html

壁紙設定画面はsection要素で定義 <section role="document" id="wallpaper">

画像ファイルの置き場所 gaia/apps/system/resources/images/backgrounds/

に 480x800 の pngを置く。

最後にGaiaを焼く ./flash.sh gaia で約 30 秒。

Page 13: Firefox OS カスタム ROM の作成

修正前

修正前のホーム

Page 14: Firefox OS カスタム ROM の作成

修正後

修正後のホーム

Page 15: Firefox OS カスタム ROM の作成

カスタマイズ(初級編)

Page 16: Firefox OS カスタム ROM の作成

Wi-Fi 機能の追加

WPS(Wi-Fi Protected Setup) を追加する。

Wi-Fi Protected Setup とは 「ボタンを押すだけでつながる」 SSID や暗号キーの入力等 Wi-Fi 接続に必要な手間が省ける。

Page 17: Firefox OS カスタム ROM の作成

画面イメージ

WPS 追加イメージ

Page 18: Firefox OS カスタム ROM の作成

wpa_supplicant

Firefox OS は Wi-Fi 接続のためのネィティブアプリとして wpa_supplicant を使用している。

広く使われている スマートフォン: Android, Meego, Tizen。 デスクトップ: Ubuntu, Fedora。

コマンドで操作 “SCAN” のような文字列でコマンドを実行。 Android,

Firefox OS。 D-Bus 経由での操作も可能。 Meego, Tizen。

Page 19: Firefox OS カスタム ROM の作成

WPS 移植概要

下記作業が必要

Gaia- WPS 向け UI を追加- Gecko の WPS API を呼ぶ

Gecko- WPS 向け API を追加- WPS コマンド発行機能を追加

wpa_supplicant WPS 機能は既存なので修正不要

Page 20: Firefox OS カスタム ROM の作成

JavaScript とネイティブアプリ

そもそも JavaScript とネイティブアプリはどうやって通信するのか?

js-ctypes を使用して JavaScript から共有ライブラリを呼べる。

let cutils = ctypes.open("libcutils.so"); Android 等向けに開発した既存資産を有効活用でき

る。

Js-ctypes について詳しく知りたい方はこちら @makoto_kato さんのスライド

http://www.slideshare.net/djraven/jsctypes-2464200

Page 21: Firefox OS カスタム ROM の作成

コミット

せっかく作ったので本家にコミットしてみる。 Gaia: GitHub から Pull Request。

lint チェックに注意。

Gecko: Bugzilla に報告。 バグじゃないけどバグとして報告。

master ブランチに merge されたのでぜひ使ってみてください。

Page 22: Firefox OS カスタム ROM の作成

まとめ

カスタマイズしやすい! Android 等では敷居が高かったカスタマイズだが、今後

は Web デザイナの皆さんからの Pull Request にも期待。

Gaia の Mozilla 内開発者は 18 人。意外に少ない。 日本の携帯電話会社さんもぜひ!。