hyoromoのブログ

iOS/AndroidもしくはCocos2dxネタを書いています

AdMob SDK から Google Play Services に切り替えた時に発生したエラーについて

2014/08/01から、AdMob SDKを追加した状態でGoole Playにアプリをアップする事が出来なくなりました。
http://adsense-ja.blogspot.jp/2014/03/android-google-admob-sdk.html

新規アプリだけではなく、既存アプリのアップデートでも対象に含まれるためその対応し、その時に発生したエラーをメモとして書き残します。

移行手順

AdMob SDKからの移行に際し、Google側が素晴らしい比較表を作成しているため、何ら問題なく移行手続きが行えました。詳しくは以下のリンク先参照。
https://developers.google.com/mobile-ads-sdk/docs/admob/play-migration

発生したエラー

移行完了後、Eclipseでデプロイすると以下の様なエラーが発生。

Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.ads.AdView" on path: DexPathList[[zip file "/data/app/hoge.aaaa-1.apk"],nativeLibraryDirectories=[/data/app-lib/hoge.aaaa-1, /vendor/lib, /system/lib]]

ClassNotFoundExceptionなのでLibrary追加方法やManifest記述を見直してみれど解決せず、、、結構時間を喰われました。

解決方法

結論をまず書くと、ADT 22 から ADT 23 へのアップデートで解決しました。

なんで私がアップデート漏れをしていたかと言うと、Eclipse上で「Check for Updates」してもアップデート対象なし状態を示したからです。
原因は「Install New Software...」で「https://dl-ssl.google.com/android/eclipse/」を調べると ADT がアップデート対象として一覧表示されますが、「コンフリクトしてるからアップデート出来ない」的なメッセージが表示されてアップデート出来ないからのようで。一旦ADT 22をアンインストールしてから、ADT 23をインストールする事で解決したしだいです。

感想

eclipse使って無ければ今回のような変なハマり方をしなかったのでしょうが、ちょっとしたメンテやCocos2d-xメインで新規開発しているとAndroid Studioに手を出したくなくてモンモンしちゃいます。