)

NomoLog

Log of my life and program

Android With Scala

Posted in Scala Tagged as Android, Scala

ScalaでAndroid

こちらを参考にしました! Scala + sbt-android + IntelliJ で快適Androidアプリ開発

以下に僕が詰まったところをまとめました!

詰まったところ

  1. compatibility-v4とcompatibility-v7-appcompatでエラーが出る
  2. ensime関連のエラーが出る
  3. OutOfMemoryのエラーが出る

compatibility-v4とcompatibility-v7-appcompatでエラーが出る

参考にしたサイトの手順に沿ってソースをコンパイルしようとすると

1
2
3
4
5
6
[warn]      ::::::::::::::::::::::::::::::::::::::::::::::
[warn]      ::          UNRESOLVED DEPENDENCIES         ::
[warn]      ::::::::::::::::::::::::::::::::::::::::::::::
[warn]      :: android.support#compatibility-v4;19: not found
[warn]      :: android.support#compatibility-v7-appcompat;19: not found
[warn]      ::::::::::::::::::::::::::::::::::::::::::::::

となってコンパイルできません。

自分の環境では<project_dir>/project/build.scalaの

1
2
3
4
5
6
7
8
9
10
11
12
13
// ======================================================================                                                                                                                             
34   // 依存関係
35   // ======================================================================
36   val libraryDependencies = Seq(
37
38     // Android Support Library v4 (jar)
39     "android.support" % "compatibility-v4" % "19",
40
41     // Android Support Library v7 (jar & apklib)
42     "android.support" % "compatibility-v7-appcompat" % "19",
43     apklib("android.support" % "compatibility-v7-appcompat" % "19")
44
45   )

の”19”の部分を”19.0.0”に変更したらうまくいきました。

ensime関連のエラーが出る

上記のエラーと似たような感じで、ensimeが見つからねえよ!と怒られるエラーが起きました。 これに関しては調べても解決策が見つからず、恐らく以前に入れたensimeがなにか悪さをしてるんだろーなーと思い sbtとscalaをインストールし直したところ直りました。

1
2
3
4
5
6
brew uninstall sbt
brew uninstall scala
rm -rf ~/.sbt
rm -rf ~/.ivy2
brew install sbt
brew instalo scala

わけわからなくなったら全部入れ替えちゃうのも手ですね。

OutOfMemoryのエラーが出る

これはeclipseでjavaやってたときもみたことあるエラーでした。 eclipseのときはeclipse.iniにメモリサイズを明示することで解決しましたがscalaでは~/.sbtconfigに

1
SBT_OPTS="-Dfile.encoding=UTF-8 -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m"  

とすることで解決しました。先頭のUTF-8のオプションは元々ついていたもので、後からCMSClassUnloadingとMaxPermSizeを追加しました。

IntelliJ IDEA 13でandroid support libraryの解決がうまくいかない

参考にしたサイトではIntelliJ 12を使っているようですが最新が13なので僕は13を使いました。

13はsbtのプロジェクトをそのままimportする機能がありsbt gen-ideaする必要がないのですが、今回の構成に限ってはIntelliJの機能でimport するのではなくsbt gen-ideaしてからIntelliJでopenするのが無難です。

まとめ

僕が詰まったのはこんなところです。 みなさん素晴らしいscalaライフを!

Comments