2009.11.19

Programming

MacOSX での Android SDK セットアップと Android の /etc/hosts の編集方法

昨日からちょっと Smart.fm Android アプリのデバッグのお仕事が入ったので、Android SDK をセットアップして Emulator にアプリをインストールしました。

インストール自体は簡単だけど、実際に Emulator を立ち上げるまでに少しハマり、Android で /etc/hosts をいじったりするところまではかなりハマったので、忘れないうちにメモメモ。

Download & Install Android SDK

Android SDK | Android Developers から、MacOSX 用の SDK をダウンロード。ダウンロードされたディレクトリごと適当な場所に配置して、SDK_ROOT/tools に PATH を通しておく。

Install Android SDK Components

次に Adding SDK Components | Android Developers にある通り、SDK Componets とかいうのをインストールする。

まずは以下のコマンドで Android SDK and AVD Manager を立ち上げる。(たぶん AVD は Android Virtual Device の略)

android

どうも僕の環境では HTTPS 経由だと失敗するので、Settings から HTTP を使うように設定。

Android SDK - Settings

ちょっと時間がかかるけど、Available Packages からとりあえず全パッケージをインストールしておく。僕の環境でインストールされたパッケージ一覧はこちら。

Android SDK - Installed Packages

これで Emulator をセットアップする為の Target がセットアップされるみたい。

Setup Android Virtual Devices

Emulator 用に Android Virtual Device (AVD) を作成する。Emulator 起動時には毎回どの AVD を使うか指定する必要がある。

既に起動している Android SDK and AVD Manager の Virtual Devices -> New から、適宜自分にあったバージョンの Android OS を Target にして AVD を作成できる。Audio Recoding などの機種別の付加機能は、Hardware として追加できる。

Launch Android Emulator

自分で作った TARGET_NAME を指定して emulator コマンドで以下のように Android Emulator を起動する。Target に指定した Android OS のバージョンによって、見た目は違う。見た目でしか判断してないけど、Google Developer Day に配布されてた HTC のやつは Android 1.6 みたい。

Install Applications to Emulator

Android アプリ(.apk ファイル)を指定して、以下のようにアプリケーションをインストールできる。

adb install YOUR_APP.apk

Eclipse から直接 build して Emulator で起動する場合は、Installing and Updating ADT (for Eclipse) | Android Developers を参考に。一応 Eclipse からも使えるようにセットアップしたけど、個人的に Eclipse 派ではないので、ここでは割愛。

Edit /etc/hosts for Android Emulator

Android Emulator は、Emulator が走ってるマシンの /etc/hosts を無視する(/etc/resolve.conf しか見ない)ので、Android Emulator 自体が持ってる /etc/hosts ファイルを編集する必要がある。Android に最初から入ってる Dev Tools にも Terminal はあるけど、cat くらいしか使えないので、adb コマンドでホストマシンで編集した /etc/hosts ファイルを push してやる必要がある。

まずは remount。
これをしないと "failed to copy '~/Desktop/hosts' to '/system/etc/hosts': Read-only file system" というエラーがでる。。

adb remount

Emulator の既存の /etc/hosts を取ってくる。

adb pull /system/etc/hosts ~/Desktop/

適当に編集したら push。

adb push ~/Desktop/hosts /system/etc

push されたファイルを確認するには以下のように adb shell で Emulator 内の shell に入り、cat する。(less とか vi とかは入ってない)

adb shell
# cat /system/etc/hosts