android開発してるとjava.lang.VerifyError起きるよね

VerifyErrorって?

android開発してるとたまにVerifyErrorと出会います。
例外でなくて、エラーですね。
コンソールやDDMSを見てもあまり分からないエラーです。

どんな時に起こる?

使えないAPIを使おうとした時に起こります。

Android SDKバージョン編
  • targetを8(android 2.2)minSdkVersionを4(android 1.6)で開発しているアプリ
  • android.media.MediaScannerConnection.scanFileを使う
  • android 2.2の端末で実行すると、正常に動作する
  • Android 1.6の端末で実行すると、VerifyErrorが発生する

MediaScannerConnection#scanFileはSince API Level 8なので1.6の端末にはそのメソッドがないためエラーになります。

外部ライブラリ編
  • java sdk 1.6でライブラリを作る
  • java.util.util.Arrays.copyOfを使う
  • ライブラリを参照するandroidアプリに作る
  • copyOfメソッドを使っている場所でVerifyErrorが発生する

androidjava sdk 1.5をベースにしているので*1java sdk 1.6から追加されたメソッドを使おうとするとエラーになります
これに関してはjava sdk 1.5でライブラリを作れば簡単に回避できますね。

VerifyErrorって聞いただけじゃ、対処法よく分かんないよね

他にもこんなことしたら起こるよってあったら教えてください

*1:でしたよね?違ったらツッコミください