WindowsでのAndroid with Scalaは疲れる
Azyotter(Saostar)がNoClassDefFoundErrorとか吐いて改善策が思い当たらないのでScalaで作りなおしちゃえってなってのですが、環境づくりでへとへとになったというお話。とりあえずapk作るところまでできたので報告です。
Androidの開発はLinuxでやるべきなのかな…。
本当はEclipseでやりたかったけれど
.@azyobuzin ScalaでAndroidやるなら、最近はsbazじゃなくこれ github.com/jberkel/androi… 使ってやるのが主流ですよ
— Kenji Yoshidaさん (@xuwei_k) 5月 9, 2012
というお言葉を頂いたのでandroid-pluginでやることに。
前提事項
giter8ってなんだよ
公式ヘルプを参考にやってみることにしました。
sbtとかいうコンパイル環境?はGitHubのwikiでmsiで公開されてたのでそのままインストール。安心のWindows Installerはうれしいですね。
で、次にgiter8を入れます。公式ヘルプにやり方書いてありますね。よし!これをコマンドプロンプトに!…ってshってなんだよshって。shってどう考えてもLinuxで登場するアレじゃん。
という感じで死ぬかと思いましたが先人がいました。まぁそりゃいますよね。
Windowsでgiter8を使う - 新・たけぞう瀕死の日記
さっきの記事にも書いてありましたが、giter8はGitHub上のテンプレートを取ってくるやつみたいですね。なかなか面白い発想。
プロジェクト作成
公式ヘルプには
$ ~/bin/g8 jberkel/android-app # sbt 0.11.2
とか書いてあるので、giter8があるところ(C:\Users\UserName\bin とか)にPATH通してコマンドプロンプトで
g8 jberkel/android-app
でEnterキーをッターン!!
パッケージ名とかプロジェクト名とかAndroid APIのバージョンとかScalaのバージョンとか聞かれるので素直に答えましょう。
useProguardは大人の事情により使えないみたいなので「false」にします。[f:id:azyobuzin:20120510211732p:plain]
コメントでtrueじゃないと落ちると言われてまして、現状落ちてるのですが、trueにするとandroid:package-debugに失敗します><
どうしたらいいものか。
コンパイルの準備
あとはコード書いてコンパイルだ!
……死んだ。
非常に残念な感じになりました。not foundなんです存在しないんです。
で、こんな記事を見つけました。
hanhan's blog » scalaでandroid開発しようとしてくじけそうになったのでメモ
まあ、2011/6/12現在の話なので、時が立てばこんなことしなくてもよくなると思われる。
よくなってませんね!
というわけでGitHubからandroid-pluginのソースコード取ってきて
sbt update sbt publish-local
を実行します。
次にプロジェクトが入ってるフォルダのproject\plugins.sbtをテキストエディタで開いて
addSbtPlugin("org.scala-sbt" % "sbt-android-plugin" % "0.6.1")
を
addSbtPlugin("org.scala-sbt" % "sbt-android-plugin" % "0.6.2-SNAPSHOT")
にします。
バージョンはその時の最新版の数字を入れてください。
これでsbtが実行できるはずです。
あとは公式ヘルプに書いてあるように
> android:package-debug
でapk作成!
…ってそんな甘いもんじゃなかった…。
どうもScalaTestが見当たらないみたいです。元のテンプレート糞だろ。
というわけで、ScalaTestのダウンロードページにしたがって1.8.RC1に書き換えます。
project\build.scalaの
libraryDependencies += "org.scalatest" %% "scalatest" % "1.7.RC1" % "test"
を
libraryDependencies += "org.scalatest" %% "scalatest" % "1.8.RC1" % "test"
に書き換えます。
ついに完成
さぁついにこれでやっとapk生成できます!
sbtは一度exitしてもう一度sbtを起動し直します。
そして
> android:package-debug
やったね!!!
では、これからScalaの文法とかなんとか勉強するとします。思ったより変態言語臭漂ってる。