読者です 読者をやめる 読者になる 読者になる

夢とガラクタの集積場

落ちこぼれ三流エンジニアである管理人の夢想=『夢』と、潰えた夢=『ガラクタ』の集積場です。

Scala2.9 Android Eclipseプラグイン導入失敗記(その2

おはようございます。

前回に引き続き。Eclipse 環境でScala2.9でAndroidの開発ができないのか、
について確認を行いました。

3.Eclipseプラグインに適用してみる

まずは、前回のラストで下記のようにAndroid用のScalaライブラリがビルドされました。

これを下記のように「scala-android.jar」とリネームします。
Scalaのライブラリフォルダに配置するので、混同しないための措置です。



リネームが完了したら、「Scalaをインストールしたディレクトリ配下のlibフォルダ」に
scala-android.jar」を配置します。

次はEclipseからプロジェクトを作成します。
ごくごく普通にAndroid用プロジェクトを作成します。

こんな感じで、Android用プロジェクトが作成されたことを確認します。

その後プロジェクトを右クリックして「Configure」→「Add Scala Nature」と選択します。
上記の操作によって、Eclipse側にこのプロジェクトがScalaのプロジェクトと認識され、
ファイル保存時にScalaによるコンパイルが行われるようになります。

んでもって、プロジェクトを右クリック→「Properties」を選択し、
「Builders」を確認します。
下記のようにScalaのビルド後にAndroid Package Builderが動作するようにします。
Scalaビルドによってclassファイルが生成されるからですね。

で、次はJavaのBuild Pathを確認し、Scalaライブラリを追加します。
JREのライブラリが入っていませんが、元々Androidプロジェクトでは
Android固有のライブラリしか読み込んでいないため、これで問題ないです。

4.ビルド、、というか、Dxで変換できません!(汗

で、適用したので早速実際にビルドできるか試しました。
すると・・・?

下記のメッセージが表示され、ビルドは失敗。

[2011-09-27 06:53:12 - ScalaTest] Dx 
trouble writing output: opcode == null
[2011-09-27 06:53:12 - ScalaTest] Conversion to Dalvik format failed with error 2

メッセージを見てみると、どうやらDxによって
Javaバイトコード(class)」→「Androidバイトコード(dx)」に変換する最中でこけている模様。

下記のページとかを見ると、「大きすぎるライブラリを変換しようとした場合に発生する可能性があるエラー」の模様。
#実際、Android-Scalaのライブラリはサイズ大きい。。。
または、実際にDxで変換できないコードなのか。。。ともあれ、その辺も含めて次回に〜
http://code.google.com/p/android/issues/detail?id=15603