nodejs on android

13
Node.js on Android 森 俊夫 @ 徳島 [email protected] http://d.hatena.ne.jp/forest1040/ 2011 年 1 月 9 日

Upload: toshio-mori

Post on 26-May-2015

117.343 views

Category:

Technology


0 download

DESCRIPTION

Nodejs on android

TRANSCRIPT

Page 1: Nodejs on android

Node.js on Android

森 俊夫 @ 徳島[email protected]

http://d.hatena.ne.jp/forest1040/

2011 年 1 月 9 日

Page 2: Nodejs on android

id:forest1040 です。

徳島で、フリーランスをやってます。

本業は、Web 系エンジニアです。最近は、Java EE(JBoss Seam) と Ruby をよく使っています。

1年前に息子が生まれ、イクメン中です。

Android との出会いは、IS01 の 8 円祭りからです。

自己紹介

Page 3: Nodejs on android

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 あり、タッチパネル対応

Page 4: Nodejs on android

Web OS 2.0 & Node.js

HP( 旧 Palm) の Web OS 2.0 には、Node.js が搭載されているらしい。

同じ ARM 系 CPU で動くデバイスで Node.js が動いているのだから、Android でも動くだろうと思いNode.js を IS01 上で動かすことに決めました。

Page 5: Nodejs on android

「あなたはA 案か? B 案か?」ビルド方法には、大き分けて2通りあります。

A 案

ARM 上に Linux 環境を構築しビルドする。

B 案

Android NDK 等のクロスコンパイラを使用する。

NDK は、事例がたくさんあるので、今回はA 案で。

A 案のメリット

Linux on ARM 環境さえ構築してしまえば、いろんなソフトをビルドできる。

B 案のメリット

A 案に比べると、高速にビルドができる。

Page 6: Nodejs on android

ビルド手順

ビルド手順の概略は以下のようになります。

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/

京都マイクロコンピュータ株式会社

Page 7: Nodejs on android

IS01 を root 化共有ライブラリを配置する lib ディレクトリを作成するために、root 権限が必要になります。

そのためのアプリケーションがあるため、以下のアプリケーションを IS01 にインストールします。

au IS01 rooterhttp://mobilehackerz.jp/contents/Software/Android/IS01root

インストール手順は、上記ホームページの手順に従ってください。

Page 8: Nodejs on android

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

Page 9: Nodejs on android

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 },

Page 10: Nodejs on android

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

Page 11: Nodejs on android

デモ

Page 12: Nodejs on android

apk 化

npm 対応

WebSockets を使用したアプリを作りたい

JavaScript と Java の連携

今後の予定

Page 13: Nodejs on android

ご清聴ありがとうございました。