Base64エンコード/デコードでNoSuchMethodError on Android
Android + GAEでBase64エンコード/デコードしたときに、
org.apache.commons.codec.binary.Base64をインポートして使っていたら、
GAEでは問題ない一方で、Androidだと、
Base64.encodeBase64String();
と
Base64.decodeBase64();
のそれぞれで
実行時にjava.lang.NoSuchMethodErrorのExceptionが発生しました。
現在のorg.apache.commons.codecの最新バージョンは1.9なんですが、
どうやら、Androidには古いバージョンのorg.apache.commons.codecが含まれている模様。
そのせいで、メソッド名のConflictが起こり、NoSuchMethodErrorとなっているらしい。
ということで、上記のメソッドの代わりに、それぞれ
Base64.decode(String, Base64.DEFAULT);
new String(Base64.encodeToString(byteArray, Base64.DEFAULT));
を使うことにより対応しました。
小ハマりする人もいるかな?ということでメモ。
ちなみにGAEの方は、org.apache.commons.codecの
最新のjarをインポートして使うことができました。