id:forest1040 です。
徳島で、フリーランスをやってます。
本業は、Web 系エンジニアです。最近は、Java EE(JBoss Seam) と Ruby をよく使っています。
1年前に息子が生まれ、イクメン中です。
Android との出会いは、IS01 の 8 円祭りからです。
自己紹介
IS01 〜夢のモバイル開発マシン〜
やっぱ、キーボードだよね。
ネットにもつながるし、これ1台で開発環境ができるのでは!?
SL4A 入れれば、スクリプト言語が動くんでしょ?
ぐは、Python とか、Ruby とか動かない。。
じゃ、自前で、何かスクリプト言語入れようか。。
OS Android OS 1.61.6CPU Qualcomm Snapdragon QSD8650 1GHzサイズ 149 × 83 × 17.9 mm質量 約 227g解像度 フルワイド VGA++(480×960 ドット )Bluetooth, GPS あり、タッチパネル対応
Web OS 2.0 & Node.js
HP( 旧 Palm) の Web OS 2.0 には、Node.js が搭載されているらしい。
同じ ARM 系 CPU で動くデバイスで Node.js が動いているのだから、Android でも動くだろうと思いNode.js を IS01 上で動かすことに決めました。
「あなたはA 案か? B 案か?」ビルド方法には、大き分けて2通りあります。
A 案
ARM 上に Linux 環境を構築しビルドする。
B 案
Android NDK 等のクロスコンパイラを使用する。
NDK は、事例がたくさんあるので、今回はA 案で。
A 案のメリット
Linux on ARM 環境さえ構築してしまえば、いろんなソフトをビルドできる。
B 案のメリット
A 案に比べると、高速にビルドができる。
ビルド手順
ビルド手順の概略は以下のようになります。
1. IS01 を root 化
2. qemu を使って、Linux on ARM 環境を構築
3. Linux on ARM 環境で、Node.js をビルド
4. IS01 に Node.js のバイナリをコピー
(参考)
KMC Staff BLOG
http://blog.kmckk.com/
京都マイクロコンピュータ株式会社
IS01 を root 化共有ライブラリを配置する lib ディレクトリを作成するために、root 権限が必要になります。
そのためのアプリケーションがあるため、以下のアプリケーションを IS01 にインストールします。
au IS01 rooterhttp://mobilehackerz.jp/contents/Software/Android/IS01root
インストール手順は、上記ホームページの手順に従ってください。
qemu 環境構築
qemu を使用し、debian on ARM 環境を構築します。
1. qemu のインストール
2. イメージの取得と実行
3. debian on qemu の実行
$ sudo apt-get install qemu qemu-kvm-extras
$ wget http://people.debian.org/~aurel32/qemu/armel/debian_lenny_armel_small.qcow2$ wget http://people.debian.org/~aurel32/qemu/armel/initrd.img-2.6.26-1-versatile$ wget http://people.debian.org/~aurel32/qemu/armel/vmlinuz-2.6.26-1-versatile
$ sudo qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.26-1-versatile -initrd initrd.img-2.6.26-1-versatile -hda debian_lenny_armel_small.qcow2 -append "root=/dev/sda1" -m 256 -redir tcp:2222:10.0.2.15:22 -redir tcp:8124::8124
Node.js のビルドdebian on ARM 上で、Node.js をビルドします。
V8 エンジンのビルドオプションを修正する必要があります。
$ sudo apt-get install build-essential libssl-dev curl$ mkdir tmp$ cd tmp$ wget http://nodejs.org/dist/node-v0.3.1.tar.gz$ tar -xvzf node-v0.3.1.tar.gz$ cd node-v0.3.1$ ./configure$ make$ sudo make install
$ vi node-v0.3.1/deps/v8/SConstruct# node-v0.3.1 の場合、SConstruct の 128 行目あたりの「CCFLAGS 」に「'-march=armv5t' 」を追加。 126 'gcc': { 127 'all': { 128 'CCFLAGS': ['$DIALECTFLAGS', '$WARNINGFLAGS', '-march=armv5t'], 129 'CXXFLAGS': ['$CCFLAGS', '-fno-rtti', '-fno-exceptions'], 130 },
IS01へインストール
Node.js の実行ファイルと共有ライブラリを tar で固めて、Android に持っていきます。
Android 上の terminal で root になり、以下のコマンドを実行します。
$ tar pcvf node.tar /usr/local/bin/node /lib/librt* /usr/lib/libssl.so.0.9.8 /usr/lib/libcrypto.so.0.9.8 /lib/libdl* /usr/lib/libstdc++* /lib/libm.so.6 /lib/libm-2.7.so /lib/libgcc_s.so.1 /lib/libpthread* /lib/libc.so.6 /lib/libc-2.7.so /lib/ld-linux.so.3 /lib/ld-2.7.so /usr/lib/libz.so.1*
$ su# tar xvf node.tar# /usr/local/bin/node --versionv0.3.1
デモ
apk 化
npm 対応
WebSockets を使用したアプリを作りたい
JavaScript と Java の連携
今後の予定
ご清聴ありがとうございました。