sbtでScala+Android

以前紹介したScala+Androidのスライドにあったsbt+Androidを試してみたけど、これは良い!
セットアップは簡単だし、その上一度セットアップしてしまえば、あとは1コマンドでsbt+Androidなプロジェクトが作れてしまう。

ところでsbtって?

sbt(simple-build-tool)Scala製のビルドツール。Scalaは当然のことながらJavaのビルドにも対応している。
プラグインによる機能拡張にも対応していて、今回はその機能拡張の1つであるAndroid-Pluginを使用する。


sbtについてはここらへんを見れば概要がわかるはず。
http://blog.8-p.info/2010/4-sbt-scala
http://d.hatena.ne.jp/yojik/20100328/1269770903

sbtセットアップ

http://code.google.com/p/simple-build-tool/wiki/Setup ここにある通りやれば問題ない。

  1. パスの通ったディレクトリにsbt-launch.jarをコピーする
  2. 同じディレクトリにsbtというファイルを作る。中身はこう
    java -Xmx512M -jar `dirname $0`/sbt-launch.jar "$@"
  3. sbtに実行属性をつけておく
    $ chmod u+x ./sbt

sbt-androidセットアップ


以下のコマンドでOK

$ git clone http://github.com/jberkel/android-plugin.git
$ cd sbt-android
$ sbt publish-local


追記(2010/07/19):上記セットアップは不要だった。下にあるcreate_projectさえあればsbt-android-plugin.jarは勝手にダウンロードしてきてくれる。


あとはandroidプロジェクト作成スクリプトcreate_projectをパスの通ったディレクトリにダウンロードして実行属性をつけておく。

androidプロジェクトの作成とビルド

冒頭でも書いたとおりプロジェクトの雛形は1コマンドで作成できてしまう。例えば以下の通り。

$ create_project HelloAndroid org.papamitra.helloandroid --platform android-2.1 --scala-version 2.8.0.RC7 --activity HelloAndroid

作成されるディレクトリの構成はこんな感じ。

$ tree -n HelloAndroid
HelloAndroid/
├── project
│   ├── build
│   │   └── HelloAndroid.scala
│   ├── build.properties
│   └── plugins
│       └── Plugins.scala
├── src
│   ├── main
│   │   ├── AndroidManifest.xml
│   │   ├── assets
│   │   ├── java
│   │   ├── res
│   │   │   ├── drawable
│   │   │   │   └── app_icon.png
│   │   │   ├── layout
│   │   │   ├── values
│   │   │   │   └── strings.xml
│   │   │   └── xml
│   │   └── scala
│   │       └── Activity.scala
│   └── test
│       └── scala
│           └── Specs.scala
└── tests
    └── src
        └── main
            ├── AndroidManifest.xml
            ├── assets
            ├── res
            └── scala
                └── UnitTests.scala

sbtを実行すると、scalaやproguardなんかを勝手にダウンロードして環境を構築してくれる。

$ cd HelloAndroid
$ sbt

あとはsbtのプロンプトから

> compile

コンパイル

インストールは

> install-emulator
> install-device

上がエミュレータ用で下が実機用。