Ant を使って、Scala で Android アプリを作成してみた。

環境

android_rules.xml について、参考にしたサイトより、さらに書き換えの必要があった。SDK に新しいものを使ったからだろう。

ant install とすれば、エミュや実機にアプリをインストール出来る。

  • エミュへの場合、先に emulator コマンドでエミュを立ち上げる必要がある。
  • 実機への場合、apk ファイルは署名を含む必要がある。
  • エミュや実機が2つ以上接続されている場合(> adb devices で確認できる)、インストールは不可能。

android_rules.xml への追加・変更点

まず、adb.exe の位置が変更されたので、次の追記が必要。

<property name="android-platform-tools" value="${sdk-location}/platform-tools" />
<property name="adb" value="${android-platform-tools}/adb${exe}" />

aapt.exe に明示的に -F オプションを与えないと apk ファイルが生成されないように思うので、そのために

 <property name="packaged-resource-file" value="${out-folder}/resouces.ap_" />

を追記し、

<aaptexec executable="${aapt}" command="package" manifest="AndroidManifest.xml"  assets="${asset-folder}" androidjar="${android-jar}" apkfolder="./" resourcefilename="${packaged-resource-file}" resources="${resource-folder}"> 
</aaptexec>

<apkbuilder outfolder="./"  apkFilepath="${out-debug-package}" resourcefile="${packaged-resource-file}" verbose="true" debugsigning="true">
  <dex path="${intermediate-dex}"/>
  <sourcefolder path="${source-folder}" />
  <jarfolder path="${external-libs-folder}" />
  <nativefolder path="${native-libs-folder}" />
</apkbuilder>

のように書き換え。debugsigning="true" は署名を付けるためのオプション。

scala 2.7.7.final と scala 2.8.1.final との相性

これらのバージョンだと、lib 以下に scala-android.jar があると、scala や scalac がコマンドラインで立ち上がらなくなる。

また、android_rules.xml 中で scala.home をこれらのバージョンのフォルダに書き換えると、共にコンパイルはうまくいくものの、scala 2.8.1.final の場合、proguard に関する警告が沢山でた。生成されるファイルサイズは変わらなかった。

scala-android.jar は結局使われていない。