狠狠撸

狠狠撸Share a Scribd company logo
Node.js on Android


 2011 年 1 月 9 日




                            森 俊夫 @ 徳島
                               forest1040@gmail.com
                     http://d.hatena.ne.jp/forest1040/
自己紹介

id:forest1040 です。
徳島で、フリーランスをやってます。
本業は、Web 系エンジニアです。最近は、Java
EE(JBoss Seam) と Ruby をよく使っています。
1年前に息子が生まれ、イクメン中です。
Android との出会いは、IS01 の 8 円祭りからです。
IS01 ?夢のモバイル開発マシン?
                 OS     Android OS 1.6
                 CPU Qualcomm Snapdragon QSD8650 1GHz
                 サイズ 149 × 83 × 17.9 mm
                 質量 約 227g
                 解像度 フルワイド VGA++(480×960 ドット )
                 Bluetooth, GPS あり、タッチパネル対応




やっぱ、キーボードだよね。
ネットにもつながるし、これ1台で開発環境ができる
のでは!?
SL4A 入れれば、スクリプト言語が動くんでしょ?
ぐは、Python とか、Ruby とか動かない。。
じゃ、自前で、何かスクリプト言語入れようか。。
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 rooter
 http://mobilehackerz.jp/contents/Software/Android/IS01root

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

 qemu を使用し、debian on ARM 環境を構築します。
1. qemu のインストール
 $ sudo apt-get install qemu qemu-kvm-extras


2. イメージの取得と実行
 $ 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

3. debian on qemu の実行
 $ 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 をビルドします。
$ 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



 V8 エンジンのビルドオプションを修正する必要が
 あります。
$ 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 に持っていきます。
$ 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*


Android 上の terminal で root になり、以下のコマン
ドを実行します。
$ su
# tar xvf node.tar
# /usr/local/bin/node --version
v0.3.1
デモ
今後の予定

apk 化
npm 対応
WebSockets を使用したアプリを作りたい
JavaScript と Java の連携
ご清聴ありがとうございました。

More Related Content

Similar to Nodejs on android (15)

FISL11 2010 - Automa??o de Datacenters
FISL11 2010 - Automa??o de DatacentersFISL11 2010 - Automa??o de Datacenters
FISL11 2010 - Automa??o de Datacenters
iG - Internet Group do Brasil S/A
?
搁颈补的强力后盾:谤别蝉迟+海量存储
搁颈补的强力后盾:谤别蝉迟+海量存储 搁颈补的强力后盾:谤别蝉迟+海量存储
搁颈补的强力后盾:谤别蝉迟+海量存储
zhen chen
?
Android 2.2 手機應用程式設計:第一章 Android 系統介紹
Android 2.2 手機應用程式設計:第一章 Android 系統介紹Android 2.2 手機應用程式設計:第一章 Android 系統介紹
Android 2.2 手機應用程式設計:第一章 Android 系統介紹
Robert Chi
?
Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍
thinkinlamp
?
whatsoever, hardening linux webserver in 60 minutes
whatsoever, hardening linux webserver in 60 minuteswhatsoever, hardening linux webserver in 60 minutes
whatsoever, hardening linux webserver in 60 minutes
idsecconf
?
2010 06 15 SecondNug - JAVA vs NET
2010 06 15 SecondNug - JAVA vs NET2010 06 15 SecondNug - JAVA vs NET
2010 06 15 SecondNug - JAVA vs NET
Bruno Capuano
?
夜宴16期《变化颈苍驳》
夜宴16期《变化颈苍驳》夜宴16期《变化颈苍驳》
夜宴16期《变化颈苍驳》
Koubei Banquet
?
Ruby on windows 2010
Ruby on windows 2010Ruby on windows 2010
Ruby on windows 2010
Akio Tajima
?
CodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиков
CodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиковCodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиков
CodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиков
CodeFest
?
Gelecex - Maven ile Akilli Projeler
Gelecex - Maven ile Akilli ProjelerGelecex - Maven ile Akilli Projeler
Gelecex - Maven ile Akilli Projeler
Mert ?al??kan
?
Lecture1
Lecture1Lecture1
Lecture1
orgil
?
Uso de la Programación para la Seguridad en Redes (a.k.a. Sockets y Shellcoding)
Uso de la Programación para la Seguridad en Redes (a.k.a. Sockets y Shellcoding)Uso de la Programación para la Seguridad en Redes (a.k.a. Sockets y Shellcoding)
Uso de la Programación para la Seguridad en Redes (a.k.a. Sockets y Shellcoding)
Pedro Valera
?
搁颈补的强力后盾:谤别蝉迟+海量存储
搁颈补的强力后盾:谤别蝉迟+海量存储 搁颈补的强力后盾:谤别蝉迟+海量存储
搁颈补的强力后盾:谤别蝉迟+海量存储
zhen chen
?
Android 2.2 手機應用程式設計:第一章 Android 系統介紹
Android 2.2 手機應用程式設計:第一章 Android 系統介紹Android 2.2 手機應用程式設計:第一章 Android 系統介紹
Android 2.2 手機應用程式設計:第一章 Android 系統介紹
Robert Chi
?
Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍
thinkinlamp
?
whatsoever, hardening linux webserver in 60 minutes
whatsoever, hardening linux webserver in 60 minuteswhatsoever, hardening linux webserver in 60 minutes
whatsoever, hardening linux webserver in 60 minutes
idsecconf
?
2010 06 15 SecondNug - JAVA vs NET
2010 06 15 SecondNug - JAVA vs NET2010 06 15 SecondNug - JAVA vs NET
2010 06 15 SecondNug - JAVA vs NET
Bruno Capuano
?
夜宴16期《变化颈苍驳》
夜宴16期《变化颈苍驳》夜宴16期《变化颈苍驳》
夜宴16期《变化颈苍驳》
Koubei Banquet
?
Ruby on windows 2010
Ruby on windows 2010Ruby on windows 2010
Ruby on windows 2010
Akio Tajima
?
CodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиков
CodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиковCodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиков
CodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиков
CodeFest
?
Gelecex - Maven ile Akilli Projeler
Gelecex - Maven ile Akilli ProjelerGelecex - Maven ile Akilli Projeler
Gelecex - Maven ile Akilli Projeler
Mert ?al??kan
?
Lecture1
Lecture1Lecture1
Lecture1
orgil
?
Uso de la Programación para la Seguridad en Redes (a.k.a. Sockets y Shellcoding)
Uso de la Programación para la Seguridad en Redes (a.k.a. Sockets y Shellcoding)Uso de la Programación para la Seguridad en Redes (a.k.a. Sockets y Shellcoding)
Uso de la Programación para la Seguridad en Redes (a.k.a. Sockets y Shellcoding)
Pedro Valera
?

Nodejs on android

  • 1. Node.js on Android 2011 年 1 月 9 日 森 俊夫 @ 徳島 forest1040@gmail.com http://d.hatena.ne.jp/forest1040/
  • 2. 自己紹介 id:forest1040 です。 徳島で、フリーランスをやってます。 本業は、Web 系エンジニアです。最近は、Java EE(JBoss Seam) と Ruby をよく使っています。 1年前に息子が生まれ、イクメン中です。 Android との出会いは、IS01 の 8 円祭りからです。
  • 3. IS01 ?夢のモバイル開発マシン? OS Android OS 1.6 CPU Qualcomm Snapdragon QSD8650 1GHz サイズ 149 × 83 × 17.9 mm 質量 約 227g 解像度 フルワイド VGA++(480×960 ドット ) Bluetooth, GPS あり、タッチパネル対応 やっぱ、キーボードだよね。 ネットにもつながるし、これ1台で開発環境ができる のでは!? SL4A 入れれば、スクリプト言語が動くんでしょ? ぐは、Python とか、Ruby とか動かない。。 じゃ、自前で、何かスクリプト言語入れようか。。
  • 4. Web OS 2.0 & Node.js HP( 旧 Palm) の Web OS 2.0 には、Node.js が搭載 されているらしい。 同じ ARM 系 CPU で動くデバイスで Node.js が動 いているのだから、Android でも動くだろうと思い Node.js を IS01 上で動かすことに決めました。
  • 5. 「あなたは A 案か? B 案か?」 ビルド方法には、大き分けて2通りあります。 A案 ARM 上に Linux 環境を構築しビルドする。 B案 Android NDK 等のクロスコンパイラを使用する。 NDK は、事例がたくさんあるので、今回はA 案で。 A 案のメリット Linux on ARM 環境さえ構築してしまえば、いろんなソフト をビルドできる。 B 案のメリット A 案に比べると、高速にビルドができる。
  • 6. ビルド手順 ビルド手順の概略は以下のようになります。 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/ 京都マイクロコンピュータ株式会社
  • 7. IS01 を root 化 共有ライブラリを配置する lib ディレクトリを作成す るために、root 権限が必要になります。 そのためのアプリケーションがあるため、以下のアプ リケーションを IS01 にインストールします。 au IS01 rooter http://mobilehackerz.jp/contents/Software/Android/IS01root インストール手順は、上記ホームページの手順に 従ってください。
  • 8. qemu 環境構築 qemu を使用し、debian on ARM 環境を構築します。 1. qemu のインストール $ sudo apt-get install qemu qemu-kvm-extras 2. イメージの取得と実行 $ 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 3. debian on qemu の実行 $ 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
  • 9. Node.js のビルド debian on ARM 上で、Node.js をビルドします。 $ 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 V8 エンジンのビルドオプションを修正する必要が あります。 $ 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 },
  • 10. IS01 へインストール Node.js の実行ファイルと共有ライブラリを tar で固 めて、Android に持っていきます。 $ 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* Android 上の terminal で root になり、以下のコマン ドを実行します。 $ su # tar xvf node.tar # /usr/local/bin/node --version v0.3.1
  • 12. 今後の予定 apk 化 npm 対応 WebSockets を使用したアプリを作りたい JavaScript と Java の連携