【Android開発】Google Mobile Ads SDKのアップグレード

少し前からAdmobの管理画面を開くと、ホームの上部に

SDK のアップグレードはお済みですか?
2014年8月1日をもって、単体の Google Mobile Ads SDK(v6.4.1 以前)を使った新しいアプリや更新版アプリは Google Play で受け付けられなくなります。

てな感じの注意文言が出ていました。

現在公開中のアプリは、すべてv6.4.1をベースに作成しています。バージョンアップをしないのであれば今のままでもOKのようですが、結構頻繁に更新を行うため、SDKのアップグレードを行うことにしまた。

Googleにて「google-play-services admob」辺りで検索すれば、手順を詳細に説明したページが見つかるので、そちらは割愛してハマったところを記載します。

プロジェクトが実行できない

手順通りに設定を行い、Eclipse上で対象のプロジェクトを実行(エミュレータで起動)しようとすると、Eclipseがフリーズして「Unable to execute dex: GC overhead limit exceeded」とエラーが出る事象が発生。
切り分けを進めてみると、新しいSDK本体「google-play-services_lib」を対象のプロジェクトのライブラリとして紐づけるとこの現象が発生することが判明。

こちらは「eclipse.exe」と同じフォルダに存在する「eclipse.ini」の最後の二行を
-Xms40m
-Xmx512m
から、
-Xms512m
-Xmx1024m
に変更して、Eclipseを再起動することで解決できました。

proguardを使う場合のおまじない

ソース難読化のproguardを用いてビルドを行う場合は、下記のおまじないを「proguard-project.txt」に入れると良いようです。

-keep class * extends java.util.ListResourceBundle {
protected Object getContents();
}

-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}

-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}

-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}

——2014/08/07追記ここから——
本日リリースしたアンドロイドアプリ「野菜かな」では、上記のおまじないのみだと署名アプリのエクスポート時に下記のエラーが発生しました。

Proguard returned with error code 1. See console

出力されているエラーのメッセージを見ると「com.google.android.gms.*」が原因になっているっぽいことが判明。

ネットで検索していると海外のサイトで、「proguard-project.txt」の下部に下記のおまじないを追記するようにとの情報がありました。

-dontwarn com.google.android.gms.*
-ignorewarnings

早速対応してみるとビンゴ!
エラーは解消されて無事エクスポートすることができました。
「おまじない」などと言わずちゃんと中身を理解した方が良いのですが、とりあえず何とかなっているので必要になったらちゃんと調べたいと思います。。。
——2014/08/07追記ここまで——

署名アプリのエクスポート時にLintエラー

新しいSDKでのAdmobの組み込みおよび、表示確認も終わり、リリース用の署名アプリケーションをエクスポートしようとすると下記のエラーが発生。

Export aborted because fatal lint errors were found. …

とった対策は下記2点。

  1. Eclipseの「ウィンドウ>設定>Android>Lintエラー検査」にて、「MissingTranslation」のSeverityを「Fatal」から「Warning」に変更。
  2. 「google-play-services_lib/res/values-af/auth_strings.xml」を「google-play-services_lib/res/values/配下」にコピペ。

「2」の対応は、無理やり感がありますが、この対応で無事、リリース用の署名アプリケーションをエクスポートすることができました。

以上、ご参考まで

サブコンテンツ

このページの先頭へ