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ルールに直して・・・とか、めんどうなことになりそうなので、今回はパス。


同じカテゴリのエントリ
1.Lift再入門 / 8.javascriptからsubmitできない / 7.Ajax Form / 6.Radio、Checkboxについて / 5.行列型の編集FORM / 4.サーバーサイドバリデーションとサーバサイド関数 / 3.ログインFORM - S.param使ったら負け / 2.Snippetメソッドとして許される型 / sbt0.12.xで依存jar抽出タスク / scala2.10+lift2.5+NetBeans7.2 / Scalaで入門関数プログラミング / reactive-webを試してみました / Lift2.2M1のテンプレート機能 / Scala Compiler Plugin / View Bound/Context Bound / ScalaZa01参加してきました / Akka Frameworkチュートリアルの次 / Akka Frameworkチュートリアルその2 / Akka Frameworkチュートリアル / LiftでJCaptcha / Url Rewrite Filter / sbt-android-plugin / Android SDK for Scala / 祝Lift2.0リリース / Liftの携帯対応まとめ / Scala2.8への移行 / Lift 2.0-scala280-SNAPSHOT/sbt0.7.1 / Scalaお絵かき環境 - Kojo / Lift+Quartzでバッチ / Scala&Liftを採用した理由 / Liftでdate_select系ヘルパーを作る / LiftでAjax / LiftのSubmitかしこい / lift-mapperのpaginateを使う / snippetをspecする / Lift Mapperを拡張する / LiftのDBをMySQLに / Liftプロジェクト環境を整える / Scala本読み比べてみました / NetBeans6.7&scala / じつはScalaはライトな言語 / Scalaバザ~ル / lift1.0所感 / specsを読む / implicit def / ScalaならNetBeansがサイコー / scala勉強会@東北がスタート / それでも俺はLiftをやるってのか / Scala&Liftセットアップ / ブログリニューアル /
コメント
匿名さん
2010/10/15
androidでsbt+scalaを使うのに参考にさせていただきました。
create_projectをcygwinのshellから使う方法ですが、
exec scala -deprecation "$0" "$@"

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

コメントしてください

closed.