開發 Android App 的語言選擇不外乎 Java 。 但使用 Java 開發卻是一點都快樂不起來,那就改用 Scala 吧。
使用 Scala 開發 Android 之前得先建構好開發環境,接下來就按部就班的建立吧。
1. 下載JDK
到 http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u3-download-1501626.html 根據自己的環境下載合適的 JDK 。
ubuntu 的環境底下可以透過 apt-get install sun-java6-jdk 快速安裝。
2. 安裝 Scala Complier
先到 http://www.scala-lang.org/downloads 下載 Scala 的編譯器。
因為 Scala Compiler 本身就是使用 Java 撰寫,可以下載通用的版本 ( .tgz ),解開後就可以了。或是下載特定平台的版本,進行自動安裝。
3. 下載 eclipse
請到 http://www.eclipse.org/downloads/ 進行下載。
選擇 Eclipse IDE for Java Developers 版本即可。如果你有開發 Java EE 的需求,則可以選擇 Eclipse IDE for Java EE Developers 。 解開壓縮檔後直接執行目錄裡的 eclipse 就可以了,不用特別安裝就可直接執行了。
4. 安裝ADT ( Android Development Tools )
開啟 eclipse ,點選選單 Help > Install New Software
點選右上方的 Add,加入以下設定。

將 Developer Tool 選項打勾,一路 Next 到底就完成安裝嘍。
5. 安裝 Android ADK
點選選單 Window > Android SDK Manager
勾選你要下載的 SDK 版本,一般來說就下載你常用到的版本就行了,全部下載回來容量也是挺嚇人的。
6. 安裝 Scala IDE
一樣點選選單 Help > Install New Software
Name: Scala IDE
Location: http://download.scala-ide.org/releases-29/milestone/site
安裝 Scala IDE for Eclipse 這個項目就行了,Source Feature 就看你有沒有想看原始碼嘍。
7. 安裝 Ant
Ant是一個 java 的build工具。
ubuntu 的使用者可以透過 apt-get install ant 進行安裝。
或是到 http://ant.apache.org/bindownload.cgi 下載,解開即可。
8. 下載 Ant scala build rule
由於 Ant 的 build rule 實在又臭又長,直接下載整理好的 build rule 比較省事一些。
https://RickySu@github.com/RickySu/ant-android-scala.git 直接 clone 一份回來就對了。
完成基本安裝後,就可以開始建立專案。
點選選單 File > New > Project
選擇 Android 專案
SDK版本建議選擇 2.1 以上,如果想要搭配 Cordova ( 之前叫做 Phonegap , Callback … ) 作開發,版本得選擇 2.2 以上。
填好 Package Name ( Package Name 必須是個唯一的名稱,Android 是以Package Name區分不同的App),按下 Finish就完成專案的建立了。
接著在專案底下點選滑鼠右鍵 ,啟用 Scala IDE 支援
那我們先來個測試的 Scala Hello world
點選選單 File > New > Other
已目前的例子,Package Name 叫做 com.app.example.hello3,原本的 Java Activity 叫做Hello3Activity,所以我們建立一個 Hello3Activity 的 Scala Activity。
在 src 底下會看到 Hello3Activity.java 以及 Hello3Activity.scala 兩個檔案。
我們編輯一下Hello3Acitvity.scala
1 2 3 4 5 6 7 8 9 10 11 | package com.app.example.hello3 import android.app.Activity import android.os.Bundle import android.view.View class Hello3Activity extends Activity{ override def onCreate(savedInstanceState:Bundle){ super.onCreate(savedInstanceState) setContentView(R.layout.main) } } |
並且刪除掉原本的 Hello3Activity.java。
就開始 Run 嘍。
在Android模擬器中就會看到成果嘍
原因在於,Scala 的所有物件中都會包含一個 ScalaObject 的 Interface 。 這個 Interface 是定義在 scala-library.jar中。但是這個 jar 並沒被 加入到 APK 中。如果自己手動將 scala-library.jar 加入到專案的 libs 裡面,整個 APK 可是會肥到爆炸。 ( 這個 jar 可是有將近8MB) 因此我們得動用 Ant 以及 ProGuard 這兩個工具來進行編譯的動作。
Ant 是 java 專案使用的 build 工具。ProGuard 則是 java 的混淆間瘦身的工具,可以將編譯後的 .class 去除掉沒用到的部份打包成 .jar,順便也提供名稱混淆,防止被反編譯。
還記得前面 步驟8 的 build rule,把 ant-android-scala clone 回來後,將 local-example 目錄底下的 build.xml , local.properties 複製到專案的根目錄底下。
修改 local.properties 的內容
sdk.dir=/home/ricky/eclipse/android-sdk-linux ant.android.scala.dir=/home/ricky/scala-android/ant-android-scala scala.dir=/opt/scala-2.9.2
根據個人的實際的環境設定修改。
由於 eclipse 內建了一個 Ant ,也可以透過 console 端去執行 Ant ,這邊我們先介紹使用eclipse的 Ant 來執行 build 工作。
選擇 debug 執行 Run 後,就開始 build 出 debug 版本的 apk 了。
接著重複上面的動作, 改選擇 indestalld 就會把剛剛 buid 出來的 apk 安裝到模擬器中。
我們在模擬器上執行一下剛剛安裝進去的 apk 。
在 console 端執行 build 就簡單多了。
只要在專案根目錄底下執行
$ant debug $ant installd











