今度はScalaでHelloAndroid
ClojureでJVM上の言語に手を出したついでにコップ本も読んでみたところまんまとScalaにはまる。
というわけで前回に引き続き今回はScalaでAndroidアプリ作成にチャレンジ。
今回参考にしたサイト
事前に用意しておくもの
AndroidSDKとかは入っているものとして、
- proguard
必要のないclassを省いてjarのダウンサイジングをしてくれるらしい。apkのサイズがかなり小さくなる。
手元のdebian環境ではapt-getでインストール。
debianのScalaパッケージにはsbazがなかったのでScalaのサイト(http://www.scala-lang.org/downloads)から実行環境を取得展開して
$ ./bin/sbaz install scala-android
プロジェクト作成
前回書いたので省略。
$ android create project --target 11 --path ./HelloScala --activity HelloScala --package org.example.helloscala
プロジェクトのScala化
Scala用のantファイルをダウンロード。
$ wget http://github.com/phueper/AndroidScalaAntTest/raw/master/android_rules.xml
中身は環境に合わせて変更する。(scala.homeとか)
build.xmlへandroid_rules.xmlをインポート
$ diff -u build.xml.orig build.xml --- build.xml.orig 2010-04-02 22:14:48.000000000 +0900 +++ build.xml 2010-04-03 01:44:37.000000000 +0900 @@ -62,6 +62,9 @@ This will ensure that the properties are setup correctly but that your customized build steps are used. --> - <setup /> + <setup import="false" /> + + <!-- import my android_rules.xml file --> + <import file="android_rules.xml" /> </project>
HelloScala.javaをHelloScala.scalaに置き換える。
package org.example.helloscala import android.os.Bundle import android.app.Activity import android.widget.TextView class HelloScala extends Activity { override def onCreate(savedInstanceState: Bundle) { super.onCreate(savedInstanceState) val tv = new TextView(this) tv.setText("Hello Android, it's me, Scala!") setContentView(tv) } }