らいふうっどの閑話休題

興味のあることをゆる~く書いていく

CHIRIMEN Boot Animation

About CHIRIMEN Boot Animation / CHIRIMEN のブートアニメーションについて

Index / 目次
a Trigger / きっかけ
  with replace boot logo(Tux) and recovery background(Android robot) with CHIRIMEN logo #114 in issue in CHIRIMEN Open Hardware, and I was interested, so it was checked.
CHIRIMEN Open Hardware の issue で、replace boot logo(Tux) and recovery background(Android robot) with CHIRIMEN logo #114 がポストされていて、興味があったので調べてみました

Android端末起動時のアニメーション(boot animation)を変更する方法!
there is files in animation information.
bootanimation.zip というファイルにアニメーション情報があるようです。

it seem able to get a file as bootanimation.zip from Echigo rev.1.
Echigo rev.1 から bootanimation.zip というファイルを取得出来るようです。

place is /system/media.
格納場所は、/system/media です。


connect an Echigo rev.1 / Echigo rev.1 との接続
  at first, CHIRIMEN Board Echigo rev.1 has connected at PC.
まず最初に CHIRIMEN ボード Echigo rev.1 を PC に繋ぎます。




get a animation file / アニメーションファイルの取得
  next, open a terminal, typing command,excute command.
次にターミナルを開き、コマンドを入力,実行します。

  
    ➜  ~ mkdir work/boot-animation
    ➜  ~ cd work/boot-animation
    ➜  boot-animation adb kill-server
    ➜  boot-animation adb root
    * daemon not running. starting it now on port 5037 *
    * daemon started successfully *
    adbd is already running as root
    ➜  boot-animation adb pull /system/media/bootanimation.zip bootanimation.zip
    [100%] /system/media/bootanimation.zip
    ➜  boot-animation
  
  following excute images / 実際の実行図


The contents of animation file / アニメーションファイルの中身
  The animation files got actually is this.(zip file is already defrosted.)
実際に取得した画像がこちらです。(zip file 解凍済み)

folder:part0

folder:part1



The Future / 今後
  the future, I'll argue a CHIRIMEN Boot animation by a CHIRIMEN Open Hardware Community and look for.
今後、ブートアニメーションを CHIRIMEN Open Hardware コミュニティで議論・募集をしていきます。

and more, A method change in the image file is checked.
そして、イメージファイルの変更のやり方を調べます。

I'm waiting for your advice.
皆様のアドバイスお待ちしております。


Remote Connect of Echigo Rev.1

Remote Connect of Echigo Rev.1 / Echigo Rev.1 のリモート接続

Index / 目次

 

I was learned that Remote Connect of Echigo Rev.1 at CHIRIMEN Open Hardware Community.
I jsut do it.
this steps is makes in mac.
CHIRIMENOpen Hardware コミュニティでリモート接続の手順を教わったのでやってみた。
この手順は、mac でやっています。

  1. android vnc server setteing / android vnc server 設定
  2. VNC Operation / VNC 操作
  3. Conclusion / 結論
  4. Addtion /おまけ
android vnc server setteing / android vnc server 設定
  android VNC was downloaded.
android VNCをダウンロードします。
https://goo.gl/2jxVAg
A zip file is defrosted, file is putted on desktop.
zipを解凍して、androidvncserverをデスクトップに置きます

ターミナルを立ち上げ、下記コマンドを打ちます
  
    # adb kill-server
    # adb root
    # adb remount
    # adb push Desktop/androidvncserver /system/bin
    # adb shell
    > chmod 755 /system/bin/androidvncserver
    > exit
  
  -----these steps first Preparations. / ここまで初回のみの準備。 ------


VNC Operation / VNC 操作
  VNC operation is performed. / VNC操作を行います。 terminal was opened. / ターミナルを開きます。
command was typing & excute / コマンドを入力、実行します。
  
    # adb shell
    > /system/bin/androidvncserver -p password
  
  one more terminal was opened. / もう一つターミナルを開きます。
command was typing & excute / コマンドを入力、実行します。
  
    # adb forward tcp:5901 tcp:5901
  
  Finder was opened, menu [move] > [server]
macのFinderのメニュー [移動] > [サーバーへ接続] と開き
 
input server address : vnc://localhost:5901
サーバーアドレスを入力します:vnc://localhost:5901

input passwor is [password] / パスワードに [password]と入力します。
if server connect was succeed, follow
ing images / 接続が成功すると下図のようになります。


Conclusion / 結論
 
  • It's late / heavy to use it daily.
  • 日常的に使うには遅い/重い
  if you will need to setteing, when you don't have display and mouse, these steps try it.
もしディスプレイやマウス無しで、設定を行いたい時に試してみて下さい。


Addtion /おまけ
 


新訳:ADB Helperをハックしてみた(まとめ)

この記事は『Firefox OS / B2G OS Advent Calendar 2016』 25日目の記事です。
Firefox OS で、使用されている「ADB Helper」を再度まとめ直してみました。

目次

 

今回は、adb-helper のまとめをしていきたいと思います

  1. フォルダ内のファイル構成
  2. 今回のまとめ
  3. 関連記事
  4. 今年のAdvent Calendar
フォルダ内のファイル構成
  [ 解凍フォルダ内のjsファイル群 ]
install.rdf
main.js
adb.js
adb-client.js
adb-running-checker.js
adb-socket.js
bootstrap.js
scanner.js
device.js
※1
※1
※1
devtools-import.js
※1
※1
※1
devtools-require.js
※1
※1
※1
fastboot.js
※1
※1
※1
subprocess.js
※2
※2
※2
subprocess_worker_win.js
※3
※3
※3
subprocess_worker_unix.js
※4
※4
※4
  ※1 : version 0.7.1 時点では無かったファイル
※2 : version 0.7.1 時点で有ったファイル
※3 : version 0.7.1 時点で有ったファイル、Windows用ファイル
※4 : version 0.7.1 時点で有ったファイル、maclinux用ファイル

OS毎に使用されるファイルが有る事が確認できます。



今回のまとめ
  subprocess.js,subprocess_worker_(win/unix).js は、アドオンのバージョンアップにより device.js,devtools-import.js,devtools-require.js,fastboot.js 等の モジュールに置き換わっていますので、ハックは割愛します。

最初に投降した「ADB Helperをハックしてみた(前篇)」が2014年11月6日ですから 完遂するのに 2 年以上経っている事になります。

逆に2 年以上経っているからこそ、モジュールの効率化が
どのように進化を遂げているかが分かりました。

バージョン 0.7.* の時は、Windows 用と mac,Linux用でjs ファイルが別だったのが
現在は全ての OS で同じ js ファイルを使われている事からも分かります。

ADB Helper をハックしてみて、Android SDK 無しで簡単に Firefox OS 端末(Fx0, Flame)や Open Web Board, CHIRIMEN ボード Echigo Rev.1 に接続して Web 開発と 同じ要領で、デバイスへアプリをインストールする仕組みを理解する事が出来ました。

これまでの投稿記事で、記載内容に誤りや補足、アドバイスなど頂ければ幸いです。


関連記事


今年のAdvent Calendar


去年のAdvent Calendar

新訳:ADB Helperをハックしてみた(fastboot.js)

この記事は『Firefox OS / B2G OS Advent Calendar 2016』 24日目の記事です。
Firefox OS で、使用されている「ADB Helper」を再度まとめ直してみました。

目次

 

前回、新訳:ADB Helperをハックしてみた(devtools-require.js)に引き続き、
adb-helperをハックしていきたいと思います

  1. フォルダ内のファイル構成
  2. fastboot.js
  3. 予備知識
  4. モジュール構成
  5. 今回のまとめ
  6. 関連記事
  7. 今年のAdvent Calendar
フォルダ内のファイル構成
  [ 解凍フォルダ内のjsファイル群 ]
install.rdf
main.js
adb.js
adb-client.js
adb-running-checker.js
adb-socket.js
bootstrap.js
scanner.js
device.js
※1
※1
※1
devtools-import.js
※1
※1
※1
devtools-require.js
※1
※1
※1
fastboot.js
※1
※1
※1
subprocess.js
※2
※2
※2
subprocess_worker_win.js
※3
※3
※3
subprocess_worker_unix.js
※4
※4
※4
  ※1 : version 0.7.1 時点では無かったファイル
※2 : version 0.7.1 時点で有ったファイル
※3 : version 0.7.1 時点で有ったファイル、Windows用ファイル
※4 : version 0.7.1 時点で有ったファイル、maclinux用ファイル

OS毎に使用されるファイルが有る事が確認できます。


fastboot.js
  前回に引き続き、devtools-import.js ファイルをハックしていきたいと思います。
  ご覧の通り、各OSでの差異はありません。
2014.11.06 時点では、このファイルは存在していませんでした。
モジュールは下図の通りです



モジュール構成
  上記予備知識をもとにハックしていきます!
ファイル位置
処理概要
1 ~ 33 行目
  • コメント
    fastboot utility をラッパーしたものです。
  • コメント
    アドン SDK 使って、アドオンをビルドした。)
    CommonJS モジュールとしてロードされているかどうかにかかわらず
    CommonJS モジュールない時、これはJavaScriptモジュールである。
  • Cc, Ci, Cu, Cr にchrome ライブラリ読み込み
  • subprocess にライブラリ読み込み
  • file にライブラリ読み込み
  • XPCOMABI にライブラリ読み込み
  • setTimeout にライブラリ読み込み
  • client を用いて、adb-client.js を読み込み
  • Cu に Services.jsm をインポート
  • 変数 promise に Promise.jsm を代入
  • 変数:promise を定義
  • 変数:promise に Promise オブジェクトを代入
  • Devices に Devices.jsm 読み込み
  • 変数:fastbootTimer を定義
  • 変数:fastbootDevices を定義
35 ~ 265 行目
Fastboot オブジェクト
  • fastbootDevices() プロパティ
  • fastboot_init() 関数
  • fastboot_do() 関数
  • fastboot_startPolling() 関数
  • fastboot_stopPolling() 関数
  • fastboot_devices() 関数
  • fastboot_getvar() 関数
  • fastboot_flash() 関数
  • fastboot_reboot() 関数
267 ~ 285 行目
  • Fastboot.init() 関数を実行します。
  • FastbootDevice() 関数
    バイス ID を格納します。
  • FastbootDevice オブジェクト
  Fastboot オブジェクトが、かなりのボリュームなので、下表にまとめました。
関数名
処理概要
fastbootDevices() プロパティ
  • get プロパティ 変数:fastbootDevicesに格納します。
  • set プロパティ 変数:fastbootDevicesにセットします。
fastboot_init() 関数
  • platform に Services.appinfo.OS を代入
  • uri に resource://adbhelperatmozilla.org/ 代入
  • platform の条件分岐(OS 毎)
  • 上記結果を元に Services.io.newURI 用いて url を取得
  • 各判定ごとにログを出力します。
fastboot_do() 関数
  • Deferred オブジェクト deferred を promise.defer() 用いて生成
  • 配列変数:out_buffer,err_buffer を定義
  • 変数:serial が string の場合、配列にを変数:serial 追加します。
  • 変数:binary に this._fastboot を代入します。
  • callPayload オブジェクト
    • command オブジェクトに変数:binary を代入
    • arguments オブジェクトに引数:args を代入
    • stdout() 関数 配列変数:out_buffer に
      引数:data を追加します。
    • stderr() 関数 配列変数:err_buffer に
      引数:data を追加します。
    • deferred.resolve() 関数 を実行します。
  • subprocess.call() 関数 を実行します。
  • deferred を返します。
fastboot_startPolling() 関数
  • 変数:fastbootTimer != null の場合、処理をスルーします。
  • doPoll オブジェクト
    • devices() 関数 を実行します。
    • 配列変数:added,removed を定義
    • devices.sort() 関数とthis.fastbootDevices.sort() 関数の
      実行結果が同じの場合、処理をスルーします。
    • this.fastbootDevices.indexOf が -1 の場合
      配列変数:added にプッシュします。
    • devices.indexOf が -1 の場合
      配列変数:removed にプッシュします。
    • this.fastbootDevices オブジェクトに devices を
      オブジェクト代入
    • 配列変数:added 分繰り返します。
      バイス情報を登録します。
    • 配列変数:removed 分繰り返します。
      バイス情報を登録解除します。
  • 変数:fastbootTimer に 2 秒間隔で、タイマー用
    doPoll オブジェクトを登録します。
fastboot_stopPolling() 関数
  • 変数:fastbootTimer を初期化します。
fastboot_devices() 関数
  • do() 関数 を実行します。
  • doPoll オブジェクト
    • 処理実行が成功の場合
      変数:devices にプッシュします。
      変数:devices を返します。
    • 処理実行が失敗の場合
      空の配列変数を返します。
fastboot_getvar() 関数
  • do() 関数 を実行します。
  • 処理実行が成功の場合
    • 変数:line に加工し、格納します。
    • 変数:line.indexOf != -1 の場合、変数:line を返します。
  • 処理実行が失敗の場合、空文字を返します。
fastboot_flash() 関数
  • do() 関数 を実行します。
  • 処理実行が成功の場合
    • flashProgress オブジェクトを定義
    • 変数:first を定義
    • 変数:first 結果毎に条件分岐
    • flashProgress オブジェクトを返します。
  • 処理実行が失敗の場合、空文字を返します。
fastboot_reboot() 関数
  • do() 関数 を実行します。
  FastbootDevice オブジェクトを下表にまとめました。
関数名
処理概要
type() プロパティ
"fastboot" 代入
devices() 関数
Fastboot.devices() 関数にバインド
flash() 関数
Fastboot.flash() 関数にバインド
getvar() 関数
Fastboot.getvar() 関数にバインド
reboot() 関数
Fastboot.reboot() 関数にバインド
startPolling() 関数
Fastboot.startPolling() 関数にバインド
stopPolling() 関数
Fastboot.stopPolling() 関数にバインド


今回のまとめ
  今回は、モジュールの初回起動時の動作をハックしました。 次回は、ADB Helper のまとめをする予定です。


関連記事


今年のAdvent Calendar


去年のAdvent Calendar

新訳:ADB Helperをハックしてみた(devtools-require.js )

この記事は『Firefox OS / B2G OS Advent Calendar 2016』 23日目の記事です。
Firefox OS で、使用されている「ADB Helper」を再度まとめ直してみました。

目次

 

前回、新訳:ADB Helperをハックしてみた(devtools-import.js)に引き続き、 adb-helperをハックしていきたいと思います

  1. フォルダ内のファイル構成
  2. devtools-require.js
  3. 予備知識
  4. モジュール構成
  5. 今回のまとめ
  6. 関連記事
  7. 今年のAdvent Calendar
フォルダ内のファイル構成
  [ 解凍フォルダ内のjsファイル群 ]
install.rdf
main.js
adb.js
adb-client.js
adb-running-checker.js
adb-socket.js
bootstrap.js
scanner.js
device.js
※1
※1
※1
devtools-import.js
※1
※1
※1
devtools-require.js
※1
※1
※1
fastboot.js
※1
※1
※1
subprocess.js
※2
※2
※2
subprocess_worker_win.js
※3
※3
※3
subprocess_worker_unix.js
※4
※4
※4
  ※1 : version 0.7.1 時点では無かったファイル
※2 : version 0.7.1 時点で有ったファイル
※3 : version 0.7.1 時点で有ったファイル、Windows用ファイル
※4 : version 0.7.1 時点で有ったファイル、maclinux用ファイル

OS毎に使用されるファイルが有る事が確認できます。


devtools-require.js
  前回に引き続き、devtools-import.js ファイルをハックしていきたいと思います。
  ご覧の通り、各OSでの差異はありません。
2014.11.06 時点では、このファイルは存在していませんでした。 モジュールは下図の通りです


予備知識
  DevTools/Hacking https://wiki.mozilla.org/DevTools/Hacking


モジュール構成
  上記予備知識をもとにハックしていきます!
ファイル位置
処理概要
1 ~ 29 行目
  • 定数:devtools に devtools-import.js を用いて、
    DevTools ライブラリ読み込み
  • コメント
    Firefox 44 以降のバージョンは、再構成されています。
    以下を参照してください
    https://bugzil.la/912121
  • devtools 用配列変数:ID_RENAMES を定義します。
37 ~ 55 行目
devtoolsRequire() 関数
  • devtools.require() 関数を実行し、結果を返します。
  • 例外発生時は以下の処理を行います。
    • コメント
      Firefox 43 以前のバージョンは、リネームされています。
    • ID_RENAMES の配列分繰り返します。
    • リネームします。
    • devtools.require() 関数を実行し。結果を返します。


今回のまとめ
  今回は、devtools-require モジュールをインポートした時の処理をハックしました。 次回は、fastboot.js をハックする予定です。


関連記事


今年のAdvent Calendar


去年のAdvent Calendar

新訳:ADB Helperをハックしてみた(devtools-import.js )

            この記事は<a href="http://www.adventar.org/calendars/1722" target="_blank">『Firefox OS / B2G OS Advent Calendar 2016』</a> 22日目の記事です。

Firefox OS で、使用されている「ADB Helper」を再度まとめ直してみました。

目次

 

前回、新訳:ADB Helperをハックしてみた(device.js)に引き続き、 adb-helperをハックしていきたいと思います

  1. フォルダ内のファイル構成
  2. devtools-import.js
  3. 予備知識
  4. モジュール構成
  5. 今回のまとめ
  6. 関連記事
  7. 今年のAdvent Calendar
フォルダ内のファイル構成
  [ 解凍フォルダ内のjsファイル群 ]
install.rdf
main.js
adb.js
adb-client.js
adb-running-checker.js
adb-socket.js
bootstrap.js
scanner.js
device.js
※1
※1
※1
devtools-import.js
※1
※1
※1
devtools-require.js
※1
※1
※1
fastboot.js
※1
※1
※1
subprocess.js
※2
※2
※2
subprocess_worker_win.js
※3
※3
※3
subprocess_worker_unix.js
※4
※4
※4
  ※1 : version 0.7.1 時点では無かったファイル ※2 : version 0.7.1 時点で有ったファイル ※3 : version 0.7.1 時点で有ったファイル、Windows用ファイル ※4 : version 0.7.1 時点で有ったファイル、maclinux用ファイル OS毎に使用されるファイルが有る事が確認できます。


devtools-import.js
  前回に引き続き、devtools-import.js ファイルをハックしていきたいと思います。   ご覧の通り、各OSでの差異はありません。 2014.11.06 時点では、このファイルは存在していませんでした。 モジュールは下図の通りです


予備知識
  Components.utils.import https://developer.mozilla.org/ja/docs/Components.utils.import


モジュール構成
  上記予備知識をもとにハックしていきます!
ファイル位置
処理概要
1 ~ 29 行目
  • Cu にchrome ライブラリ読み込み
  • コメント
    Firefox 44 以降のバージョンは、再構成されています。
    以下を参照してください
    https://bugzil.la/912121
  • devtools 用配列変数:PATH_RENAMES を定義します。
30 ~ 35 行目
scopedImport() 関数
  • パス格納用変数:scope を定義します。
  • パス格納用変数:scope を用いてコンポーネントをインポートします。
  • パス格納用変数:scope を返します。
37 ~ 55 行目
devtoolsImport() 関数
  • scopedImport() 関数を実行します。
  • 例外発生時は以下の処理を行います。
    • コメント
      Firefox 43 以前のバージョンは、リネームされています。
    • PATH_RENAMES の配列分繰り返します。
    • 引数:path と一致しない場合、処理を継続します。
    • 上記以外場合、リネームし、scopedImport() 関数を実行します。


今回のまとめ
  今回は、devtools モジュールをインポートした時の処理をハックしました。 次回は、devtools-require.js をハックする予定です。


関連記事


今年のAdvent Calendar


去年のAdvent Calendar

新訳:ADB Helperをハックしてみた(device.js)

この記事は『Firefox OS / B2G OS Advent Calendar 2016』 19日目の記事です。
Firefox OS で、使用されている「ADB Helper」を再度まとめ直してみました。

目次

 

前回、新訳:ADB Helperをハックしてみた(scanner.js)に引き続き、 adb-helperをハックしていきたいと思います

  1. フォルダ内のファイル構成
  2. device.js
  3. 予備知識
  4. モジュール構成
  5. 今回のまとめ
  6. 関連記事
  7. 今年のAdvent Calendar
フォルダ内のファイル構成
  [ 解凍フォルダ内のjsファイル群 ]
install.rdf
main.js
adb.js
adb-client.js
adb-running-checker.js
adb-socket.js
bootstrap.js
scanner.js
device.js
※1
※1
※1
devtools-import.js
※1
※1
※1
devtools-require.js
※1
※1
※1
fastboot.js
※1
※1
※1
subprocess.js
※2
※2
※2
subprocess_worker_win.js
※3
※3
※3
subprocess_worker_unix.js
※4
※4
※4
  ※1 : version 0.7.1 時点では無かったファイル
※2 : version 0.7.1 時点で有ったファイル
※3 : version 0.7.1 時点で有ったファイル、Windows用ファイル
※4 : version 0.7.1 時点で有ったファイル、maclinux用ファイル

OS毎に使用されるファイルが有る事が確認できます。


device.js
  前回に引き続き、device.js ファイルをハックしていきたいと思います。   ご覧の通り、各OSでの差異はありません。 2014.11.06 時点では、このファイルは存在していませんでした。 モジュールは下図の通りです



モジュール構成
  上記予備知識をもとにハックしていきます!
ファイル位置
処理概要
1 ~ 9 行目
  • ConnectionManager に connection-manager 読み込み
  • 定数:adb にライブラリ、adb.js 読み込み
10 ~ 21 行目
Device() 関数
  • コメント
    新しいデバイスが接続された通知を受けた時
    新しいデバイス用のインスタンスが生成されます。
    何か変化があった時、互換性を試すべきです。
    新しいデバイス用のインスタンスが生成されます。
    他のアドオン,ツールアダプターのようにこれらの
    これらの Low レベルデバイスオブジェクトに使用されます。
  • バイス ID を格納します。
23 ~ 73 行目
Device オブジェクト
  • コメント
    これがFirefox OS を接続する具体的な方法です。
    他の種類の機器を使用する場合、一般的かつ直接的に forwardPort します。
  • connect() 関数
  • shell() 関数
  • forwardPort() 関数
  • push() 関数
  • pull() 関数
  • reboot() 関数
  • rebootRecovery() 関数
  • rebootBootloader() 関数
  • isRoot() 関数
  • summonRoot() 関数
  • getModel() 関数
  Device オブジェクトが、かなりのボリュームなので、下表にまとめました。
関数名
処理概要
connect() 関数
  • getFreeTCPPort() 関数で、変数:port に代入します。
  • 上記変数を用いて、ローカル用変数を定義します。
  • デバッグ用変数:remote を
    localfilesystem:/data/local/debugger-socket を用いて定義します。
  • adb.js の forwardPort() 関数 に上記変数を割り当てて実行します。
shell() 関数
  • adb.js の shell() 関数 をバインドします。
forwardPort() 関数
  • adb.js の forwardPort() 関数 をバインドします。
push() 関数
  • adb.js の push() 関数 をバインドします。
pull() 関数
  • adb.js の pull() 関数 をバインドします。
reboot() 関数
  • adb.js の reboot() 関数 をバインドします。
rebootRecovery() 関数
  • adb.js の rebootRecovery() 関数 をバインドします。
rebootRecovery() 関数
  • adb.js の rebootRecovery() 関数 をバインドします。
rebootBootloader() 関数
  • adb.js の rebootBootloader() 関数 をバインドします。
isRoot() 関数
  • adb.js の shell() 関数 を実行します。
  • 実行結果:stdout = true の時は、0 を返します
  • 上記以外の時は、 false を返します。
summonRoot() 関数
  • adb.js の root() 関数 を実行します。
getModel() 関数
  • 該当モデル同期処理:_modelPromise = true の時は、
    _modelPromise を返します
  • 上記以外の時は、 adb シェル getprop 関数を実行し、
    _modelPromise を返します。


今回のまとめ
  今回は、デバイスをスキャン,検出した時のモジュールをハックしました。 次回は、devtools-import.js をハックする予定です。


関連記事


今年のAdvent Calendar


去年のAdvent Calendar