MacでAndroid開発環境を作ってみる(Scala + sbt0.10)
ついに私もガラケーからXperia rayに機種変更しちゃったので、開発環境を作っていく過程を書き残しておく。
どういう環境で、どういうプログラミング言語で作るのか決定する
Javaで開発する気は全く起きないので、Scalaで作ることにする。
Scalaならsbtを使えば環境周りは大分楽なので、多分大丈夫だろう。
基本的にはvim + sbt 0.10で何とかなると思うが、デバッグ時にはIntelliJ Ideaを使うとよいかも。
(でも、今回はHello, Worldしかやらないので、あんまり関係無い。)
sbt0.10 と android-sdkをインストール
※ homebrewは予めインストールしておく。
※ ここから先は基本的にターミナルでコマンドを打っていく。
brewを使ってインストールしよう。
$ brew install sbt android-sdk
このとき、android-sdkがインストールされた場所が出てくるので、忘れないようにする。
/usr/local/Cellar/android-sdk/r11: 127 files, 36M, built in 2 seconds
android sdkアップデートする
$ /usr/local/Cellar/android-sdk/r11/tools/android update sdk
GUIが立ち上がるので、とりあえずaccept all選んでやって小一時間動かしておく。(結構時間かかる)
その隙に他の作業をする。
conscriptインストール
$ curl https://raw.github.com/n8han/conscript/master/setup.sh | sh
~/bin/cs にインストールされる
giter8をインストール
$ ~/bin/cs n8han/giter8
~/bin/g8 にインストールされる
Androidアプリケーションのテンプレートを作成する
$ ~/bin/g8 jberkel/android-app
※自分の環境では依存関係が上手く解決できなかったので、commons-codec-1.3.jarをここから落としてきて、~/.m2/repository/commons-codec/commons-codec/1.3 の下に置いてやった。
アプリケーション名などを決定する。
とりあえず全てデフォルトにしておいた。
sbtのandroid-pluginをリポジトリに追加する
ただし、外部のmavenリポジトリは無いみたいなので、ローカルに自前で置かないとダメみたい
どこかのディレクトリにgithubからチェックアウトして、sbtで配置しておく。
$ git clone git://github.com/jberkel/android-plugin.git $ cd android-plugin $ sbt publish-local
テンプレートが間違っている場合は直す
android-pluginのバージョンが0.53になっていたので、githubのここのversionを見て、それに合わせておく。
project/plugins/build.sbtを以下のように修正
libraryDependencies += "org.scala-tools.sbt" %% "sbt-android-plugin" % "0.6.0-SNAPSHOT"
sbtのProjectの設定コードが間違っているので直す
なんかsbt0.10に対応しているんだかいないんだかわかんない・・・
とりあえずProjectの名前と配置の位置が逆なので直しておいた。
project/build.scalaを以下のように修正
26行目と27行目が逆
32行目と33行目が逆
import sbt._ import Keys._ import AndroidKeys._ object General { val settings = Defaults.defaultSettings ++ Seq ( name := "My Android Project", version := "0.1", scalaVersion := "2.9.0-1", platformName in Android := "android-10" ) lazy val fullAndroidSettings = General.settings ++ AndroidProject.androidSettings ++ TypedResources.settings ++ AndroidMarketPublish.settings ++ Seq ( keyalias in Android := "change-me", libraryDependencies += "org.scalatest" %% "scalatest" % "1.6.1" % "test" ) } object AndroidBuild extends Build { lazy val main = Project ( "My Android Project", file("."), settings = General.fullAndroidSettings ) lazy val tests = Project ( "tests", file("tests"), settings = General.settings ++ AndroidTest.androidSettings ) dependsOn main }
環境変数設定
~/.zshrcなどのシェルの設定ファイルにANDROID_HOMEを追加しておく。あと、PATHも通しておく。
export ANDROID_HOME=/usr/local/Cellar/android-sdk/r11 PATH=$ANDROID_HOME/bin:$PATH
デバイス登録する
※先ほどのGUIでのインストールが終わっていないと作業ができないので、終わるまで待つ。
デバイス一覧を見る
$ android list targets
こんな感じで見える。今回はソニエリのやつなので、idを覚えておく。
id: 16 or "Sony Ericsson Mobile Communications AB:EDK 1.1:10" Name: EDK 1.1 Type: Add-On Vendor: Sony Ericsson Mobile Communications AB Revision: 1 Description: XPERIA Device Based on Android 2.3.3 (API level 10) Libraries: * com.sonyericsson.media.infinite.extension_1 (com.sonyericsson.media.infinite.extension_1.jar) Library for Android Market filtering * com.sonyericsson.eventstream_1 (com.sonyericsson.eventstream.jar) Library for Android Market filtering * com.sonyericsson.eventstream_2 (com.sonyericsson.eventstream.jar) Library for Android Market filtering Skins: WVGA854, WQVGA400, HVGA, WQVGA432, WVGA800, QVGA, HVGA_XPERIA, WVGA_XPERIA (default)
sbt実行してエミュレータ起動する
$ sbt > compile > android:emulator-start sonyeri_device > start-emulator
次は実機でデバッグ
※Androidを持っていない人は急いで買ってくる
実機のUSBデバッグモードをオンにする
http://www.adakoda.com/android/000242.html を参考にする。
付属のUSBケーブルでMacに接続する。
sbtから
> install-device
をするとインストールされる。
最後に
実機で動くと結構興奮した。この感覚は久しぶりかもしれない。。
次はまともな開発をやっていきたい。