序
Scalaを使って、Androidアプリ開発環境を構築することを考えた場合、
1.Eclipse + Google ADTプラグイン + scala-plugin
2.Scala-IDE(これもEclipseの派生)
3.sbt + android-plugin
などの方法があります。
最近では、2のScala-IDEが使いやすいと思ったので、
そのインストール手順を説明します。
1と2はある意味同じものと言えるが(scala-pluginがScala-IDEの開発元が開発したものなので)、
scala-pluginのバージョンより、Scala-IDEのバージョンのほうが新しい(と思われる)せいか使い勝手がいいように感じる。
前提
以下のものがすでにインストール済み。
・Scala
・Android SDK
私が使用しているPCはMac
Scala-IDEをインストールする
まずはじめに、Scala-IDEをhttp://scala-ide.org/download/sdk.htmからダウンロードして解凍します。
解凍した中身は、ほぼEclipseそのものです。
AndroidProguardScalaプラグインのインストール
上記フォルダの中の、Eclipse.Appを起動します。
メニューの
"Help" -> "Install New Software…"
で、"Work with:"の欄に
https://androidproguardscala.s3.amazonaws.com/UpdateSiteForAndroidProguardScala
を入力して「Add…」ボタンをクリック。
Name:には適当に AndroidProguardScala とでも入れておきます。
「OK」を押し、ちょっと待つとリストに"AndroidProguardScala - Scala development on Android"が表示されますので、チェックボックスにチェックして"Next"。
もう1回、"Next"を押すと、ライセンスが表示されますので承諾して"Finish"。
Warningが出たりしますが、各自の責任で"OK"してください。
インストールが終わったら再起動です。
Google ADTプラグインのインストール
メニューの、"Help" -> "Install New Software…"を選択して、"Work with:"欄に
https://dl-ssl.google.com/android/eclipse/
を入力して、以下同様にインストールします。
AndroidProguardScalaとGoogle ADTをインストールする順番は
どちらが先でも構わないと思います。
プロジェクトを作成してみる
Fileメニューから、"New" -> "Other…"を選択します。
"Android Application Project"を選択して"Next"。
Applicationの名前などを入力して、プロジェクトを作成します。
このとき、アイコンやメインのActivityを変更できますが、最初は何もしないでデフォルトのままでいいと思われます。
無事にプロジェクトが作成されると、以下のような画面になります。
"Run" -> "Debug As …" -> "Android Application"で、実機(あるいはエミュレータ)で動作確認してみましょう。
Scalaのプロジェクトに変更する
このままでは、Javaのプロジェクトになっていますので、これをScalaのプロジェクトに変更しましょう。
Package Explorer でプロジェクトを選択して、右クリック->"Configure" -> "Add Scala Nature" でScalaプロジェクトだと認識させることが出来ます。
このとき一緒に、右クリック->"Add AndroidProguardScala Nature"もしておきましょう。
メインのActivityをScalaで書き直す
srcフォルダを開くと、MainActivity.java というファイルがあります。
もう一度、拡張子を見直してみます。
".java" ですね。
Scalaでアプリを作りたいのに、".java"では興ざめです。
これを、Scalaで書き直してみます。
とりあえず、"MainActivity.java"は削除してしまいます。
新たに、"File" -> "New" -> Scala Class"で、クラス名を"MainActivity"にして新しいScalaのクラスを作成します。
コードは以下。
import android.os.Bundle
import android.app.Activity
import android.view.Menu
class MainActivity extends Activity {
override protected def onCreate(savedInstanceState: Bundle) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override def onCreateOptionsMenu(menu: Menu): Boolean = {
getMenuInflater().inflate(R.menu.main, menu)
true
}
}
もう一度、"Run" -> "Debug As …" -> "Android Application"で、実機(あるいはエミュレータ)で動作確認してみましょう。
sbtを使っている人にはおなじみのTypedActivityは使えなさそうです。
また、TRクラスも存在しないようです。Javaと同じようにRクラスで我慢しましょう。