SlideShare a Scribd company logo
1 of 13
Download to read offline
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

콘텐츠 플랫폼 구조 분석
콘텐츠 플랫폼 구조 분석콘텐츠 플랫폼 구조 분석
콘텐츠 플랫폼 구조 분석Jaehyeuk Oh
 
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储 Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储 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 minutesidsecconf
 
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 NETBruno Capuano
 
夜宴16期《变化ing》
夜宴16期《变化ing》夜宴16期《变化ing》
夜宴16期《变化ing》Koubei Banquet
 
Ruby on windows 2010
Ruby on windows 2010Ruby on windows 2010
Ruby on windows 2010Akio 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 ProjelerMert Çalışkan
 
Lecture1
Lecture1Lecture1
Lecture1orgil
 
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
 

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
 
콘텐츠 플랫폼 구조 분석
콘텐츠 플랫폼 구조 분석콘텐츠 플랫폼 구조 분석
콘텐츠 플랫폼 구조 분석
 
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储 Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
 
Android 2.2 手機應用程式設計:第一章 Android 系統介紹
Android 2.2 手機應用程式設計:第一章 Android 系統介紹Android 2.2 手機應用程式設計:第一章 Android 系統介紹
Android 2.2 手機應用程式設計:第一章 Android 系統介紹
 
CLR/H 55
CLR/H 55CLR/H 55
CLR/H 55
 
Jetty Introduction
Jetty IntroductionJetty Introduction
Jetty Introduction
 
Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍
 
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
 
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
 
夜宴16期《变化ing》
夜宴16期《变化ing》夜宴16期《变化ing》
夜宴16期《变化ing》
 
Ruby on windows 2010
Ruby on windows 2010Ruby on windows 2010
Ruby on windows 2010
 
CodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиков
CodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиковCodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиков
CodeFest 2010. Желтов А. — Погружение в Internet Explorer 9 для разработчиков
 
Gelecex - Maven ile Akilli Projeler
Gelecex - Maven ile Akilli ProjelerGelecex - Maven ile Akilli Projeler
Gelecex - Maven ile Akilli Projeler
 
Lecture1
Lecture1Lecture1
Lecture1
 
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)
 

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 の連携