2013年8月13日火曜日

[Android] AdMobライブラリをアップデートしたらClassNotFoundException

少し前にAndroid4.3が発表され、開発環境も新しくなっているだろうと思い久しぶりにAndroid SDK Managerを立ち上げて最新の状態にしたところ、アプリが起動直後にエラーで落ちるようになってしまいました。

LogCatを見てみるとこんなログが(パッケージ名などは伏せてあります)。

java.lang.ClassNotFoundException: Didn't find class "aaa.bbb.ccc.XyzActivity" on path: DexPathList[[zip file "/data/app/aaa.bbb.ccc-1.apk"],nativeLibraryDirectories=[/data/app-lib/aaa.bbb.ccc-1, /vendor/lib, /system/lib]]

調べてみると、どうやらこれはSDKと一緒にアップデートしたAdMobのライブラリが関係していることがわかりました。

実はこれ、以前にもはまったことがあり、自分への備忘録として解決方法を書いておきます。

AdMobライブラリのアップデート手順


AdMobのライブラリはバージョンが上がる度にjarのファイル名も変更されるため、その都度Java Build Pathも変更しなくてはなりません。

1. Eclipse上でProject - Properties - Java Build PathでLibrariesのタブを選択
2. 古いjarをRemove, そしてAdd External jars...で新しいjarを指定

これでビルドは通るようになるのですが、このままだと上記のエラーが発生してしまいます。

1, 2の手順に加えて、

3. Librariesの隣のOrder and Exportタブを選択
4. 2.で追加したjarのチェックボックスをON

を行うことでエラーが解決しました。

理由はよくわかっていないのですが、AdMobに限らずjarを追加する際は同様の現象が起こると思われますので、次回以降は気をつけようと思います。

0 件のコメント:

コメントを投稿