2011年07月26日

Androidのemulator-x86でrubyを動かす

前回はRubyをソースからビルドしてKZM-A9-Dualボードで動かしてみましたが、同じことがx86のAndroidでもできるか試してみました。



x86 Android用にビルド

Rubyのソースにあてるパッチは前回と同じものを使います。

使用するツールチェインをx86用のものに変更します。

env_x86.sh

export NDK_TOP=/path/to/your/ndk//android-ndk-r6
export SYSROOT=$NDK_TOP/platforms/android-9/arch-x86
export CFLAGS="-m32 " 
export CC="$NDK_TOP/toolchains/x86-4.4.3/prebuilt/linux-x86/bin/i686-android-linux-gcc -mandroid --sysroot=$SYSROOT"

インストールするディレクトリは/data/local にします。

 mkdir obj.android_x86
 cd obj.android_x86/
 . ../env_x86.sh 
 ../ruby-1.9.2-p290.android/configure --host=i686-android-linux --prefix=/data/local --enable-shared --disable-ipv6
 make 2>&1 |tee make.log
 sudo mkdir -p /data/local
 sudo make install

emulator-x86を起動して、ファイルをコピーする

emulator-x86のビルドに関してはこちら

$ cd /opt/koba/android-master/
$ . build/envsetup.sh 
$ lunch full_x86-eng
$ emulator-x86 &
$ adb push bin /data/local/bin
$ adb push lib /data/local/lib

irbでRubyが起動することを確認する

環境変数LD_LIBRARY_PATHで/data/local/libをダイナミックリンクライブラリの検索パスに追加します。

$ adb shell
root@android:/ # export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/local/lib
root@android:/ # /data/local/bin/irb
irb(main):001:0> p RUBY_VERSION
"1.9.2"
=> "1.9.2"
irb(main):002:0> 

WEBrickを動かす

WEBrickで使用するサーバソケットがqemuの外側から見えるようにするために、qemuのネットワークのリダイレクトのオプションを追加して、emulator-x86を起動します。

$ emulator-x86 -qemu -redir tcp:8001::8001 &
$ adb shell

環境変数LD_LIBRARY_PATHをセットしてから、WEBrickを起動。

root@android:/ # export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/local/lib
root@android:/ # /data/local/httpserver1.rb
[2011-07-22 01:49:29] INFO  WEBrick 1.3.1
[2011-07-22 01:49:29] INFO  ruby 1.9.2 (2011-07-09) [i686-linux]
[2011-07-22 01:49:29] INFO  WEBrick::HTTPServer#start: pid=1236 port=8001
10.0.2.2 - - [22/Jul/2011:01:49:57 GMT] "GET / HTTP/1.1" 200 39
- -> /
[2011-07-22 01:49:58] ERROR `/favicon.ico' not found.
10.0.2.2 - - [22/Jul/2011:01:49:58 GMT] "GET /favicon.ico HTTP/1.1" 404 281
- -> /favicon.ico
[2011-07-22 01:50:01] ERROR `/favicon.ico' not found.
10.0.2.2 - - [22/Jul/2011:01:50:01 GMT] "GET /favicon.ico HTTP/1.1" 404 281
- -> /favicon.ico

emulator-x86が動作しているマシンのWebブラウザで以下のURLでページが見られることを確認します。

http://localhost:8001/

関連するページ

RubyをAndroid用にビルドする



トラックバックURL

コメント一覧

1. Posted by あんどう   2011年07月26日 12:47
repo syncし直すとnetdがぬるぽするようになるので、しばらくソースはそのまま使ったほうがいいです。DNS cache周りのパッチでデグレってるようです。
2. Posted by koba   2011年07月26日 13:44
ありがとう。
きりのいいところでタグを打ってくれればいいのに。

コメントする

名前
 
  絵文字
 
 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード