最近想寫些 Android 的小程式,但是用 Java 實在是太無趣了,於是就想嘗試用 Scala 來做,分享一下怎麼入門的心得。

基本工具

我假設你已經安裝好下列工具 (標上我目前使用的版本):

  • Scala (2.10.3) 及 SBT (0.13.0)
  • IntelliJ 12
    • Scala plugin (0.22.302)
    • SBT plugin (1.5.1)

產生一個基本的 Scala Android App

  • 執行 android create project --target android-19 --path ./MyProject --package com.example.myproject --activity Main
  • 在 project 目錄下新建 project/plugins.sbt,內容如下 (注意中間的空白行不可省略):
addSbtPlugin("com.hanhuy.sbt" % "android-sdk-plugin" % "1.2.2")

addSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.6.0")
  • 在 project 目錄下新建 build.sbt,同樣中間空白行不可省略:
android.Plugin.androidBuild

name := "MyProject"
  • 執行 sbt android:package-debug,到這一步應該就能把 APK 建立出來了

把 Java 轉成 Scala

然後你可以試著把 android 幫你產生的 Java 手動改寫成 Scala (副檔名也要改 .scala):

package com.example.myproject;

import android.app.Activity;
import android.os.Bundle;

public class Main extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

變成:

package com.example.myproject

import android.app.Activity
import android.os.Bundle

class Main extends Activity {
    override def onCreate(savedInstanceState: Bundle) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.main)
    }
}

可以再跑一次 sbt android:package-debug 確認沒問題。

產生 IntelliJ Idea 的專案

因為我還是比較喜歡用 IntelliJ 來寫 Java/Scala,所以讓我們產生需要的 project 檔:

  • 執行 sbt gen-idea 產生專案
  • 用 IntelliJ 開啟專案
  • 新增一個 Run/Debug Configuration,類型是 Android Application
    • Module 記得要設定成 MyProject
    • Before Launch 的設定改成 Run SBT Action android:package-debug
  • 執行 Run 或是 Debug 沒問題就大功告成了

IntelliJ

進階

如果想要寫 Scala 風格的 Android 程式,可以參考 pocorall/scaloid

參考