Admob からメール「最新版の SDK にアップグレードしてください」

Android で Admob 利用のアプリ開発者にはメールがきてるはず.

受信トレイ

8/1 にサービス終了するという古い Admob SDK ライブラリの件っぽい.

Android 向け Google AdMob SDK(単体版)のサポート終了について
Play ストアでは、単体版の Google AdMob SDK を利用する新規アプリやアップデートされたアプリの受付を 2014 年 8 月 1 日をもって終了いたします。この単体版の SDK は広告 ID をサポートしていないため、この日以降は Google Play 広告ポリシーに準拠したものではなくなります。

で, 「新しい Admob の実装をしなさい」という話のよう.

そのときの利点は以下であると書いてある.

端末識別子を全面的にサポート
Google の iOS や Google Play 向けのサービス SDK で、Android 広告 ID などの匿名の端末識別子が全面的にサポートされるようになりました。こうした識別子が使えるようになることで、マーケティング担当者は価値の高いユーザー に的確にアプローチして接点を持つことが可能となり、開発者は eCPM や広告掲載率の向上によって収益性を高めることができます。

シームレスな自動アップデート(Android)
このたび Google Mobile Ads SDK が Google Play サービスに完全に統合されました。これにより、アプリで AdMob のマイナー アップデートとパフォーマンスの改善が自動化されるようになり、APK のアップデートや Play ストアへの再送信が不要になります。

けどまあ, 利点がなくても 8/1 には変更実装しなければならないということなので実際にやってみよう, と.

Google が指定するリファレンスページは以下.

Downloads - Google Mobile Ads SDK — Google Developers

スタート ガイド - Google Mobile Ads SDK — Google Developers

Google Play 開発者サービスへの移行 - Google Mobile Ads SDK — Google Developers

ざっと見て変更項目は3つっぽい.

1. ライブラリ参照先の変更
2. AndroidManifest.xml の変更
3. ソースコードの変更

とりま, やってみた.

1. ライブラリ参照先の変更

以前読み込んでいた

libs/GoogleAdMobAdsSdk-x.x.x.jar

を捨てて, IDEの設定で参照先を変える.

build.gradle

dependencies {
  ...
  compile 'com.google.android.gms:play-services:4.4.52'
}

ここでこんなエラーメッセージが.

Error:
     uses-sdk:minSdkVersion 8 cannot be smaller than version 8 declared in library com.google.android.gms:play-services:4.4.52

要件
* 最新の Android SDK を使用していることと、Android のバージョン v3.2 以降でコンパイル(project.properties の target に android-13 を設定)していることをご確認ください。
* Android 向け Google Mobile Ads SDK では、Android 2.3 以降のランタイムが必要です(android:minSdkVersion を AndroidManifest.xml で 9 以降に設定)。これにより、最新バージョンの Android SDK で作成でき、アプリは以前のバージョンの Android(2.3 以降)でも引き続き稼働します。

API8は対応してないっぽいので, 9以上に.

Android_Studio__Preview__0_6_0

Preview__0_6_0

2. AndroidManifest.xml の変更

        <!-- for new ad libraries gms -->
        <!--
                <activity
                    android:name="com.google.ads.AdActivity"
                    android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" >
                </activity>
        -->
        <activity android:name="com.google.android.gms.ads.AdActivity"
                  android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
        <meta-data android:name="com.google.android.gms.version"
                   android:value="@integer/google_play_services_version"/>

    </application>

3. ソースコードの変更

メインの AdView, AdRequest インスタンスの生成記述を変更.

onDestroy() だけではなく onResume(), onPause() のとこにも記述を追加する.

// import com.google.ads.*;	
import com.google.android.gms.ads.*;
...

    public void onCreate(Bundle savedInstanceState) {
      ...
      // adView = new AdView(this, AdSize.BANNER, my_ad_unit_id);
      adView = new AdView(this);
      adView.setAdUnitId(my_ad_unit_id);
      adView.setAdSize(AdSize.BANNER);

      //adView.loadAd(new AdRequest());
      AdRequest request = new AdRequest.Builder()
          .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
          .build();
      adView.loadAd(request);
      ...

    @Override
    protected void onResume() {
      super.onResume();
      adView.resume(); // new ad gms
      ...

    @Override
    protected void onPause() {
      adView.pause(); // for new ad gms
      super.onPause();
      ...

まとめ

基本的に, 変更記述が必要になるのは, AndroidStudio の場合

- build.gradle
- AndroidManifest.xml
- MainActivity.java (利用しているActivity)

のみで可能.ライブラリjarを捨てることによる変更などは build.gradle の記述で対応できると思っていいはず.

なんかいろいろドキュメントはあるが, この一つの表からやっていくのが分かりやすい.

左が旧, 右が新.

Google_Play_開発者サービスへの移行_-_Google_Mobile_Ads_SDK_—_Google_Developers

Google Play 開発者サービスへの移行 - Google Mobile Ads SDK — Google Developers

なんか問題あれば, さらに詳細ドキュメントを読んでいく, と.

API8 を対応させるともう少し手間がかかるだろうがもういいか.


関連ワード:  AndroidAndroidStudioニュースライブラリ速報開発