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 を使うように設定。
ちょっと時間がかかるけど、Available 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

