x86シミュレータを使ったAndroid開発環境

ちょっと興味があったので自宅のWindows機上にAndroid開発環境を構築しました。少しアクロバティックですが、快適に動きます。

  • 開発環境自体はVMware上のUbuntu 12.04 LTS (beta)。
  • Eclipseで開発する。
  • シミュレータはADTを使わず、Ubuntu上のVirtual Box上で走るAndroid x86 4.0 (Ice Cream Sandwich)を使う。

Androidの公式サイトが薦める方法では、ARMシミュレータ上でAndroidを走らせてアプリケーションのテストを行います。しかし、これが遅すぎて耐えられないという意見をよく聞きます。

今回、Android x86 をVirtualBox上で動かすことで、ストレス無くアプリケーションを試験できる環境になりました。また、開発環境自体はVMwareの仮想マシン上で動いているため、ホストのWindowsに影響を与えません。

キャプチャ

以下、構築方法を簡単に紹介します。

VMwareとUbuntuのインストール

これについては先週書いた文書を参照してください。

VirtualBoxのインストール

UbuntuにVirtualBoxをインストールします。公式サイトからインストーラを持ってきてもかまいませんが、LauncherにあるUbuntu Software Centerから検索して簡単にインストールすることもできます。

VirtualBoxの仮想マシンを作る

Androidを走らせるためにVirtualBoxの仮想マシンを作ります。その際に、8GBの仮想HDDを用意しておきます。Androidはここにインストールすることになります。なお、8GBも必要ないのですが、例によって未使用分はディスク上に割り付けられないので、無駄にはなりません。

仮想マシンのSettingsの中から、Systemを開き”Enable absolute pointing device”のチェックを外しておいてください。そうしないと、Androidをマウスでコントロールできません。

Android x86を入手して仮想マシンにセットする

Ubuntu上のFirefoxでAndroid-x86 with VirtualBox support – new build available android-x86-vm-20120130 with Ethernet enabled から、Android x86 4.0 のISOイメージをダウンロードします。gz圧縮されていますので展開してください。

VirtualBoxの仮想マシンのSettingsからStorageを選び、CD/DVDドライブにISOイメージを割り当てます。

これでAndroidのCDがブート可能になります。

仮想マシンを起動し、Androidを仮想マシンにインストールする

VirtualBoxの仮想マシンを起動するとCDブートが始まります。何をするか聞かれますので、ディスクにインストールすると指定してください。

インストールの過程でディスクのフォーマットを要求されますので、8GBの仮想ディスク全部を使うプライマリ・パーティションを作って保存し、fdiskを終了します。

なお、この後いくつか聞かれますが、

  • ext3でフォーマットする
  • ブートローダーをインストールする
  • 疑似SDカードを作っておく

ことに注意してください。

インストールディスクのイジェクト

インストールが終わったら再起動します。

その際、再びCDイメージで起動してしまいますので、強制的に仮想マシンの電源を切ってください。

次に、仮想マシンのSettingsのStorageから、CDドライブへのISOイメージの割り当てを終わらせます。

これでブートするとHDDからAndroidが起動します。

Ethernetの設定を変更する

Androidを起動し、network設定を開いて、アダプタをeth0に変更します。このあと、Ethernetをディセーブルにし、再度イネーブルにするとAndroidからネットワークにアクセスできるようになります。

EclipseとAndroid SDKをセットアップする

開発環境であるUbuntuのシェル・コマンドラインで以下のコマンドを実行してEclipseをインストールします。

$ sudo apt-get install eclipse

次に、Android公式サイトに従って、Android SDKをインストールしてください。終わったらAndroid SDKの、platform-toolsにパスを通しておきます。これは後でadbを使う時に重要になります。

Simulatorを使いたいときには、公式サイトの解説に従って、EclipseにADTの追加を行ってください。

仮想マシンを使う準備

仮想マシン上のAndroid x86を開発したプログラムのデバッグに使うには、二つほど設定が必要です。

まず、デバッグ用に回線を引く必要があります。デバッグ時にはEclipse上で走るAndroidデバッガがデバッギである仮想シミュレータ内のAndroid x86にTCP/IP経由で通信を行います。この通信経路を確立するために、adbコマンドを使いますが、それを簡単にするために、VirtualBoxでポートフォワーディング設定をします。

VirtualBoxのネットワークはデフォルトでNATになっています。つまり、VirtualBox本体がホストOS (今回はUbuntu)内部で仮想ルーターとして振る舞い、個々の仮想マシンにDHCPサーバーとしてIPアドレスを与え、外部にはまるでホストであるかのように振る舞わせます。

NATのご多分に漏れず、VirtualBoxのネットワーク設定にはポートフォワーディング設定があります。この機能は、ホストの指定のポートに来た通信を問答無用で奪い取って、特定の仮想マシンのポートに強制的に与える方法です。通常、NAT内部にサーバーを立てることはできませんが、この設定をすることで、ホストのIPアドレスを持つサーバーとして振る舞うことができます。

VirtualBox上のAndroid x86をデバッギにすると言うことは、Androidをデバッグ・プロトコルのサーバーにすることです。そこでNATが使えます。

Android x86をインストールした仮想マシンの設定を開き、ネットワーク設定からポートフォワーディング設定を開いてください。port 5555を仮想マシンのport 5555に与えるよう設定すれば完了です。

この項についてはVirtualBoxにAndroid-x86をインストールしてEclipseからデバッグに使う方法 – ごりぽんソフトウェアとそのコメント欄が参考になりました。

つぎに、シェル・コマンドラインから次のようにタイプします。

$ adb connect localhost

ポートフォワーディングのおかげで設定が簡単です。

デバッグ

デバッグするには、あらかじめAndroid x86を起動しておき、上のadbコマンドを実行します。

そして、Eclipseからプログラムをrunさせれば、デバッギであるAndroid x86上でプログラムが実行されます。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください