最近覺得最好玩的東西,就是用 Scala 來寫 android 的程式了

對 Scala 陌生的人可以先看看,墳墓大 的簡報

Programming Android Application in Scala. from Brian Hsu


簡報很精彩,裡面我覺得重點就是第 8 頁,用 Java 來開發一點都沒有興奮的感覺,小宇宙燃燒不起來,學 scala 好玩的地方,就是可以慢慢地嘗試 function programing 的方法,又可以玩 android 的 application,算是蠻有趣的,比起 Haskell 算是軟很多,不會一下子腦筋轉不過去


在 andriod 上的設定也是相當的簡單,下面是一起搭配 sbt 來作 build 的方式

步驟

1. 下載安裝 scala http://www.scala-lang.org/downloads

2. 下載安裝 android sdk http://developer.android.com/sdk/index.html

3. 安裝 sbt http://code.google.com/p/simple-build-tool/wiki/Setup

4. git clone https://github.com/steve918/android-plugin.git

5. cd android-plugin

6. script/create_project foo com.example.android # #這樣就建立了一個 foo 的 andorid 專案資料夾

7. cd foo

8. export ANDROID_SDK_HOME=path/to/android_sdk # 要改成你真正的 SDK 位置

9. sbt package-debug # 編譯套件

10. ls target/scala_2.8.1/ # 看看有沒有 foo_2.8.1-0.1.apk,可以用 adb install foo_2.8.1-0.1.apk , 安裝到 emulator 上去看看

收工


參考文章

http://zegoggl.es/2009/12/building-android-apps-in-scala-with-sbt.html

另外還有直接用 ant build 的方式,用標準 andriod 指令建立專案,然後,在 build.xml 裡再 import build-scala.xml 的方式,來編譯 scala 的 andriod 專案,連結 http://lamp.epfl.ch/~michelou/android/scala-to-android.html

我自己比較喜歡,用 sbt 的方式,總覺得 xml 不是方便有效率的格式

另外有興趣,想用 scala 在 android 的專案,寫 testcase 也是用 sbt 的方式,可以參考,墳墓大的 github 範例專案 https://github.com/brianhsu/ScalaTestAndroidExample


PS:
1. 用 script/create_project 的話,必須把 create_project 裡面的 val pluginDef = val android = “org.scala-tools.sbt” % “sbt-android-plugin” % “0.5.1”

2. 也可以用 https://github.com/jberkel/android-plugin 的版本,只是 project/build/你的project.scala 裡面要自己重定 adbPath,因為 android SDK 2.3 位址換了

3. 如果有修改到 android-plugin 的話,記得用 sbt publish-local 安裝,才會裝這一個 local 修改過得版本

PS: eclipse 裝在 debian 上時,如果沒有要用 ipv6 可以把改 /etc/sysctl.conf

net.ipv6.bindv6only = 0

這樣 eclipse 要 update 的時候,就會用 ipv4