2011年07月26日
Androidのemulator-x86でrubyを動かす
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でページが見られることを確認します。
関連するページ
トラックバックURL
コメント一覧
1. Posted by あんどう 2011年07月26日 12:47
repo syncし直すとnetdがぬるぽするようになるので、しばらくソースはそのまま使ったほうがいいです。DNS cache周りのパッチでデグレってるようです。
2. Posted by koba 2011年07月26日 13:44
ありがとう。
きりのいいところでタグを打ってくれればいいのに。
きりのいいところでタグを打ってくれればいいのに。