2013/11/14

Android SDK をアップデートしたら BufferOverflowException が出るようになった

最近、ちょっと古い Android Project を Eclipse で実行しようとすると以下のようなエラーが起こるようになりました。

Android Console の出力
[2013-11-14 22:04:14 - Dex Loader] Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
[2013-11-14 22:04:14 - LifeCycleTest] Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.

調べてみると、Eclipse を再起動してみろとか、いろいろ書かれているのですが…

私の環境では再起動してもダメで、以下のように Project Build Target を最新にしてやるとうまく動くようになりました。

Project → Properties → Android → Project Build Target


エラーの内容からすると、生成された dex ファイルに問題がある様子。
ということは、Build に失敗しているわけで、心当たりを探してみると、一つ思い当たることが。

先日、Android SDK のバージョンを 19Android 4.4 KitKat にした時に、古い Android SDK Build-tools を全て Delete したのです。
Android SDK Build-tools Rev. 19 以外が Not installed


時間が無くて調べきれていませんが、対応する Android SDK Build-tools が無いと、正しく dex ファイルが生成できないのではないかと思われます。


追記
ちょっと気になったので確認してみましたが、結論としては Android SDK Build-tools は関係なく、現時点(2013/11/14) の最新SDK Android SDK Tools Rev. 22.3
Android SDK Platform-tools Rev. 19
では Project Build Target が API 15Android 4.0.3 以前の Project のビルドにはことごとく失敗します。
Android SDK をアップデートしたら、Project Build Target もアップデートしないといけないようです。

そもそも、Project Build Target のバージョンはなるべく最新に保ち、Deprecated なものなどに気を配って開発していくべきですので、あまり問題はないと思いますが、リリース直前の複数のプロジェクトを抱えているとやっかいなことになりそうです。
まぁ、そういう場合は SDK のインストールディレクトリから分けるべきなのでしょう。。。

0 件のコメント: