まめージェント

Android, GAE, AngularJSの技術ネタ中心。Twitter: @mame01112

Base64エンコード/デコードでNoSuchMethodError on Android

Base64エンコード/デコードを使ったときの話。

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をインポートして使うことができました。