2014/09/11時点
タイトル通り。
今ならずいぶん簡単にできますよ~ということをアピールします。
なお私、JavaでのAndroid開発はやったことはありません...。
※注意
利用しているpfn/android-sdk-pluginはバージョンアップが激しいです。情報がすぐに古くなる可能性が有ります。
この手法のメリットは、下記です
- Scalaで書ける(Better Java, OOPxFP)
- sbtによるビルド管理(パッケージの追加など、比較的楽)
#検証環境
- MacOSX 10.9.4
- IntelliJ IDEA 14 EAP(Scalaプラグインインストール済み)
- GenyMotion(エミュレータ)
#事前準備
- android sdk インストール
- sbtインストール
#プロジェクトの作成
- 基本、ココの手順に沿って行くだけですが、一応順番に。
##ひな形ファイルの用意
sbtプロジェクトを配置するディレクトリつくって、その配下にsbtプラグインの記述をします。
$ mkdir [path/to/project]
$ mkdir [path/to/project]/project
$ cd [path/to/project]
$ vi project/plugins.sbt
addSbtPlugin("com.hanhuy.sbt" % "android-sdk-plugin" % "1.3.5")
resolvers += Resolver.sbtPluginRepo("snapshots")
addSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.7.0-SNAPSHOT")
↑IntelliJ用のプラグインも入れてます
##コマンドでプロジェクトのひな形作成
sbtコマンドと拡張コマンドで、プロジェクトのひな形を作ります
$ cd [path/to/project]
$ sbt
#~~~~~sbtコンソールが起動していろいろ入る
> gen-android android-19 com.takudo.hogehoge takudotest
gen-androidの引数は
- APIレベル
- パッケージ名
- 名称
の順で↑の例のように渡す。
※この後 [error] java.lang.NoClassDefFoundError: sbt/Plugins が発生、sbtのバージョンを0.13.5に変更することでエラーが出なくなる
sbt.version=0.13.5
##IntelliJ用設定ファイルを作る
$ sbt
> gen-idea
IntelliJで開いてみる
File > Openからプロジェクトのディレクトリを選択する
##エミュレータで動かしてみる
sbt でビルド
sbtコンソールでデバッグ用パッケージを作成します。
> ~android:package-debug
(頭の~でファイルの変更を監視してコンパイルかけてくれるようになります)
IntelliJ SDK設定
IntelliJのSDK設定ができていないはずなので、選択します
File > ProjectStructure
IntelliJデバッグ設定
IntelliJのデバッグのEditConfigurationsで、
下記のようにデバッグ設定を作ります。
デバッグ実行
虫のアイコンをクリックするとデバイス選択画面が出るので、GenyMotionで動かしているエミュレータを選択します。
おー動いた!
ブレイクポイントでも止まります。
でもまだこれJavaのソースなんで、Scalaで書きます。
#Scalaでソースコード書いてみる
とりあえずデフォルトで出来上がるJavaのMainActivityをそっくりScalaに移植します。
src/main配下に、
src/main/scala/[パッケージ]/MainActivity.scala
を作りましょう。
(Javaのソースコードをコピーして、scalaのファイルに貼り付けると面白いので試してみてください)
scalaのコードはこんなかんじだと思います。
package [パッケージ]
import android.app.Activity
import android.os.Bundle
class MainActivity extends Activity {
/** Called when the activity is first created. */
override def onCreate(savedInstanceState: Bundle) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main)
}
}
で、忘れずにjavaのファイルを消しておきましょう
src/main/java/[パッケージ]/MainActivity.java
では虫アイコンからデバッグ開始!
ブレークポイントでも止まります。
以上です。
Android始めたばかりというのもありますが、Scalaっぽいimmutableな書き方がしづらい場面が多々ある気がしています。
今後進めていく上で、Scalaでの開発上の良いプラクティスがあれば共有したいなと思っています。