【現象】
Androidアプリ実行中にVerifyErrorが発生して思った動作をしない.
【環境】
Android 2.2~向け
eclipse (AndroidSDK)利用
【背景】
1.Androidアプリにおいて,weka.jarをライブラリとして利用するアプリを開発中.
2.実行してみるとFilteredClassifierのインスタンス生成部でVerifyError.
3.エラーをよく見てみると,BeansInfo.javaが見つからないらしい.
4.検索したところ,AndroidSDKにはJavaやJavaxの一部のクラスが含まれていないらしい.特にbeans.jarが含まれていないことが原因と思われる.
【解決へ】
1.こちらやこちらなどを参照したところ,beans.jarを含めてrepackageすればいい的な雰囲気.
2.ただしbeans.jarはもう公式には公開されてないらしい...こちらより.
3.apache harmonyから適当にDLすればなんとかなるかも?こちら.
4.単純にDownloadsからapache harmonyをダウンロードしようとしても,もう公開されておらず,Archivesへ...こちら.
5.よくわからないながら,M12→apache-harmony-5.0-hdk-r885602-windows-x86-32-snapshot.zipをダウンロードし解凍.jdk->jre->lib->beans.jarをゲット.
6.単純にlibsに突っ込んでビルドするも失敗.
7.先ほどのサイトの手順でやるもなぜか失敗...そもそもantって何っていう状態から開始したので,コマンドラインからのJavaビルドツールantと,ADKをコマンドラインから利用できるようにインストール.
8.こちらのサイトの手順を試してみる.
※ただし以下コードのみ修正する.
9.これでやっとビルド完了...
【感想】
まとめてみるとこんなものですが,ここにたどり着くまでに3日かかる...
AndroidSDKを単純なJavaとしてライブラリを利用する際は注意が必要ということが分かりました.
なお,別でgoogle-play-services_libも読み込んで使っていましたが,これも間でエラーになったりといろいろありました.結局はgoogle-play-servicesのプロジェクトから.jarファイルをとってきてlibsに突っ込んだところエラーは消えました.(動作未確認)