Google OS実験室 ~Moonlight 明日香~

GoogleのAndroidで遊び始めて, すでに6年以上が経った. Androidは思った以上の発展を遂げている. この技術を使って, 新しいことにチャレンジだ!!

Androidにミドルウェアをポーティングする

Android-x86にはTerminal EmulatorなるUnixライクシェルが付属している. しかし, 使えるコマンドが少ないので, オープン・ソース・ソフトウェアをAndroidにポーティングし, 使い易くしていくことにした.

オープン・ソース・ソフトウェアをAndroidにポーティングする手順をまとめておく.
ここではWireless Tools for Linuxを例に説明する.

1. ソースコードを展開する. [1]
(1) Wireless Tools for Linuxのソースコードをダウンロードする.
   ~/src/wireless_tools.29.tar.gz
(2) ソースコードをAndroid-x86のソースツリーに展開する.
     $ cd Android-x86/external
     $ tar zxvf ~/src/wireless_tools.29.tar.gz
(3) wireless.hを作成する.
     $ wireless_tools.29
     $ grep WE_VERSION iwlib.h
        #define    WE_VERSION    21
     $ cp wireless.21.h wireless.h
 注) Androidのビルドシステムでは, ビルド時にソースを動的に生成することができないもよう.

2. Android.mkを作成する. [2]
wireless_toolsをコンパイルするために, wireless_tools.29のディレクトリ内でMakefileを参照してAndroid.mkを作成する.
今回作成したAndroid.mkは以下の通り.

---- ここから ----
LOCAL_PATH:= $(call my-dir)

L_CFLAGS = -DBUILD_STATIC=y -DBUILD_NOLIBM=y -DBUILD_WE_ESSENTIAL=y

include $(CLEAR_VARS)
LOCAL_SRC_FILES:= iwlib.c
LOCAL_MODULE := libiw
LOCAL_CFLAGS := $(L_CFLAGS)
LOCAL_C_INCLUDES := $(L_INCLUDES)
LOCAL_STATIC_LIBRARIES := libcutils libc
include $(BUILD_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_SRC_FILES:= iwconfig.c
LOCAL_MODULE := iwconfig
LOCAL_CFLAGS := $(L_CFLAGS)
LOCAL_C_INCLUDES := $(L_INCLUDES)
LOCAL_STATIC_LIBRARIES := libcutils libc libiw
include $(BUILD_EXECUTABLE)

include $(CLEAR_VARS)
LOCAL_SRC_FILES:= iwlist.c
LOCAL_MODULE := iwlist
LOCAL_CFLAGS := $(L_CFLAGS)
LOCAL_C_INCLUDES := $(L_INCLUDES)
LOCAL_STATIC_LIBRARIES := libcutils libc libiw
include $(BUILD_EXECUTABLE)

include $(CLEAR_VARS)
LOCAL_SRC_FILES:= iwpriv.c
LOCAL_MODULE := iwpriv
LOCAL_CFLAGS := $(L_CFLAGS)
LOCAL_C_INCLUDES := $(L_INCLUDES)
LOCAL_STATIC_LIBRARIES := libcutils libc libiw
include $(BUILD_EXECUTABLE)

include $(CLEAR_VARS)
LOCAL_SRC_FILES:= iwspy.c
LOCAL_MODULE := iwspy
LOCAL_CFLAGS := $(L_CFLAGS)
LOCAL_C_INCLUDES := $(L_INCLUDES)
LOCAL_STATIC_LIBRARIES := libcutils libc libiw
include $(BUILD_EXECUTABLE)

include $(CLEAR_VARS)
LOCAL_SRC_FILES:= iwgetid.c
LOCAL_MODULE := iwgetid
LOCAL_CFLAGS := $(L_CFLAGS)
LOCAL_C_INCLUDES := $(L_INCLUDES)
LOCAL_STATIC_LIBRARIES := libcutils libc libiw
include $(BUILD_EXECUTABLE)

include $(CLEAR_VARS)
LOCAL_SRC_FILES:= iwevent.c
LOCAL_MODULE := iwevent
LOCAL_CFLAGS := $(L_CFLAGS)
LOCAL_C_INCLUDES := $(L_INCLUDES)
LOCAL_STATIC_LIBRARIES := libcutils libc libiw
include $(BUILD_EXECUTABLE)

#include $(CLEAR_VARS)
#LOCAL_SRC_FILES:= ifrename.c
#LOCAL_MODULE := ifrename
#LOCAL_CFLAGS := $(L_CFLAGS)
#LOCAL_C_INCLUDES := $(L_INCLUDES)
#LOCAL_STATIC_LIBRARIES := libcutils libc libiw
#include $(BUILD_EXECUTABLE)
---- ここまで ----
注) ifrenameについては, getline()が解消できなかったのでコメントアウトしている. 

3. ビルドする.
Android-x86をビルドする.
     $ cd ../../
     $ make usb_img TARGET_PRODUCT=eeepc
各プログラムは, Android-x86/out/target/product/eeepc/system/binにできる.

他のツールも同様にコンパイルすれば, Androidで使用できると思う!!

----
参考URL:
[1] Wireless Tools for Linux
[2] Android Build System

AndroidをDell PCにインストールする

Androidを実機(x86 PC)で動かしてみたいと思い, DellのノートPCにインストールしてみた.

PC: Dell Inspiron 6400 / Ubuntu 9.04

VMPlayerにインストールするのとは少し異なるので, 簡単にまとめておきます.

1. インストール用のLive USBを準備する. [1]
"Android-x86をビルドする"を参照して, Live USBイメージを書き込んだUSBメモリを準備する.

2. パーティションを分割する.
Androidをインストールするために, パーティションを分割する. 今回はAndroidインストール用に4GBのパーティションを作成し, ex3フォーマットでフォーマットした.
Androidのインストーラでもパーティションの作成や変更ができるようだが, 今回は使い慣れたGPartedで作成した. 

3. USBからブートする.
(1) Dell PCにUSBメモリをさして電源をONする. DELLのロゴ表示時にF12を押すと, ブートデバイスの選択メニューが表示される.
(2) USBメモリからのブートを選択する.

4. Androidをインストールする. [2][3]
"AndroidをVMPlayerにインストールする"の3.以降を参照して, 新しく作成したパーティションにAndroidをインストールする.
注)  Bootloaderをインストールしないこと.
      Bootloaderをインストールしてしまうと, Linuxが起動できなくなる.

5. ブートローダを設定する.
Ubuntuでは, ブートローダにGRUBが採用されている. GRUBにAndroidのカーネルを認識させるには, /boot/grub/menu.lstファイルを変更する.
(1) Ubuntuを起動する.
(2) Androidがインストールされたディレクトリを確認する.
     インストールしたディスクは, /dev/sda2とする.
      $ sudo mount /dev/sda2 /mnt
      $ ls /mnt
         android-2010-2-10

(3) GRUBのmenu.lstにAndroidのエントリを追加する.
      $ cd /boot/grub
      $ emacs menu.lst

   以下のような記述を追加する.
      # on /dev/sda2
      title  Android-x86
      root  (hd0,1)
      kernel  /android-2010-2-10/kernel root=/dev/ram0 andoridboot.hardware=eeepc acpi_sleep=s3_bios,s3_mode SRC=/android-2010-2-10
      initrd  /android-2010-2-10/initrd.img
注) ブートディスク, ディレクトリ名は実際のインストール先に合わせて変更してください.

6. 動作確認
Grubのmenu.lstの変更が済んだら, 再起動してください.
起動時のメニューに"Android-x86"というメニューが追加されているはず. Android-x86を選択してブートするか確認する.

特に問題なく, Androidが起動した.

しかし, 音楽や映像再生を試してみると, サウンドが出力されていないようだ. VMPlayerにインストールした時には問題なかったのに...

iTunesで取り込んだMPEG4オーディオ(.m4a)はだめだが, mp3は問題なく再生できました.

----
参考URL:
[1] Android-x86をビルドする
[2] AndroidをVMPlayerにインストールする
[3] Installation (Android-x86 - Porting Android to x86)

livedoor プロフィール
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

記事検索



  • ライブドアブログ