sbtでScala+Android その2

前回に引き続きsbt+Android。いろいろ触ってみて困った点など3点ほど。

minSdkVersionがないとコンパイルエラー

AndroidManifest.xmlにminSdkVersionがないと警告ではなく、なぜかいきなりjava.util.NoSuchElementExceptionが投げられるスパルタ仕様。
以下をAndroidManifest.xmlに追加すればよい。("7"はAndroid-2.1の場合)

<uses-sdk android:minSdkVersion="7"></uses-sdk>

create_projectで作った場合はデフォルトで記載されているようだ。

外部ライブラリの使用

外部のライブラリjarを使用したい場合は、プロジェクト直下にlibディレクトリを作ってそこにjarを置いてやればOK。
前回の例だとHelloAndroid/libというディレクトリを作ればよい。


これはAndroid-Pluginというよりsbtで外部ライブラリを使うための標準の方法のようだ。

maps.jarにパスが通らない

どうもmaps.jarがおいてあるパスの指定がデフォルトだと正しくないので上書きしてやる必要がある。
前回の例だとproject/build/HelloAndroid.scalaのclass MainProjectに以下を追加。

override def addonsPath = androidSdkPath / "add-ons" / "google_apis-7_r01" / "libs"

google_apis以下は使用しているバージョンに合わせる。(上の例はAndroid-2.1)


ただしScala+maps.jarはコンパイラが依存関係の解決に失敗するので対策が必要。詳しくは以前の記事参照。
Scala+AndroidでGoogle Mapsがコンパイルエラーになる(解決編?)