sbt-android-plugin

先日書いたAndroid SDK for ScalaではANTを使った開発方法を紹介したのですが、こっちがデファクトになっては困る気がする(Scala使いならやっぱりsbtでしょ!)ので、sbt(simple-build-tool)を使ったScala Androidの開発方法について。

このエントリの内容は全部、昨日のScala@東北の内容についてです。Viewerが少なかったのがもったいないので、エントリにおこしておきました。

Scala東北 第86回勉強会の内容

sbt-android-plugin

sbt-android-pluginを使ったAndroid開発の方法は、id:papamitraさんがまとめてくださってます。

Android SDK for Scalaでは手作業でファイルコピーなどが必要でしたが、sbtではそういうのは一切不要で簡単。

これを使って、私のテキトーで途中で投げ出したテトリス実装Scalandrisを、ymnkさんがビジュアルのかっこいい完成版を作ってくださいました!
完全版 Scalandris


以下、sbt-android-pluginを実際に使ってみます。

create_projectで新規プロジェクト作成

create_project シェルを持ってくる。(sbt-android-pluginの本体はsbtで取得するので不要)
http://github.com/jberkel/android-plugin/raw/master/script/create_project

Unix系のOSなら、

 ./create_project HelloProject scalatohoku.example.hello \
  --platform android-8 \
  --scala-version 2.8.0 \
  --activity HelloActivity

 ※--platformの値は、ANDROID_SDK_HOME/platforms/にある、いずれかに合わせる。

Windowsなら(Cygwin使っても動かなかった。。)、create_projectをちょっと直して、Scalaオブジェクトにしてしまえばよい。

-- #!/bin/sh (シェバング削除)
-- exec scala -deprecation "$0" "$@"
-- !#

++ object CreateProject { //シェルをオブジェクトにしてしまう。
++ def main( args:Array[String] ){
++ val e = args.elements // "e" の定義位置を変える。

: 以下同じ

-- val e = args.elements

: 以下同じ

++ }
++ }

として、

 > scalac create_project
 > scala -cp . CreateProject \
   HelloProject scalatohoku.example.hello \
    --platform android-8 \
    --scala-version 2.8.0 \
    --activity HelloActivity

とすれば動きます。object版のcreate_projectはこちらのgistに貼っておきました。

Android SDK for Scalaで紹介した方法とは異なり、最初からScalaのソースコードを準備してくれるところが良いです。

ビルド&インストール

sbtをダウンロードして、環境に合わせてシェルやバッチファイルを作成

環境変数 $ANDROID_SDK_HOME を設定したら、

 > sbt update package-debug

を実行して、必要なjarをかき集める。sbt-android-pluginもこの時点でインストールされます。

 > sbt
 sbt> compile
 sbt> install-emulator

などと開発できます。

※Windowsで動かしてるとちょっとsbtが不安定かもしれない。。

TypedResource

Scala版のRクラス(レイアウト定義)を生成してくれて、Scalaでレイアウト操作する記述がラクでタイプセーフになる機能です。気が利いている。

使い方:
papamitra : sbt-android-pluginで型安全にリソース取得



もちろんAndroid SDK for ScalaにはAndroidサンプルのScala翻訳版が付属してるので大変参考になると思いますが、AndroidもScalaも理解してきたら、Scalaユーザーにとってはこちらのsbt-android-pluginの方が手に馴染む感じです。
Scala+Androidの開発環境としてはこちらが本命になるかもしれません。

ここまで書いててふと気がついたのですが、Scala IDE for Eclipseとの併用はどうやるといいでしょうかね。。
Androidプロジェクト作って、フォルダ構成をsbtルールに直して・・・とか、めんどうなことになりそうなので、今回はパス。


コメント
匿名さん
2010/10/15
androidでsbt+scalaを使うのに参考にさせていただきました。
create_projectをcygwinのshellから使う方法ですが、
exec scala -deprecation "$0" "$@"

exec scala -deprecation `cygpath -w "$0"` "$@"
と修正することで、うまくいきました。
情報まで。

コメントしてください
お名前:
入力しなければ「匿名さん」。20字以内。

メール:
入力しても表示しません

URL:
入力すればリンクが貼れます


コメント: