AdmobをGoogle Play services対応する方法
従来のadmobをいれる場合は、admob sdkをダウンロードして、GoogleAdMobAdsSdk-6.4.1.jarを AndroidProject/libs フォルダにいれていましたが、Google Play Service という仕組みが導入されてからはこちらを利用することができます。利用する場合の利点は以下のようなものがあります。一番大きな特徴としては、いままで Admob server側のインタフェースの変更などがあった場合に admob SDKをいれなおして、アプリをビルド、google playへの再アップロードが必要でしたが、その界面をGoogle Play Service が担ってくれるようになるため、admob SDKの更新に伴うアプリの修正、再アップロードなどが不要になる点です。
- 自動的なadmob 機能の更新
- 位置情報に基づいた広告機能の提供
- 柔軟で強力なツール群の利用
Google Play Serviceへの対応方法
- 既存のadmob SDK(libs/GoogleAdMobAdsSdk-6.4.1.jar)の削除
/extras/google/google_play_services/libproject/google-play-services_lib を eclipse に import - AndroidManifest.xml への meta-data の追加(*1)
- [既存admob]import com.google.ads.* の削除
- [既存admob]AdView adView = new AdView(activity, AdSize.BANNER, “YOUR_AD_UNIT_ID”); の削除
- import com.google.android.gms.ads.* の import
- AdView()の更新対応(*2)
- AdRequest()の更新対応(*3)
(*1)
(*2)
AdView adView = new AdView(activity); adView.setAdUnitId("YOUR_AD_UNIT_ID"); adView.setAdSize(AdSize.BANNER);
(*3)
AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest);
Google Play への更新版のアップロード
上記の対応を行って、更新版アプリをGoogle Playへアップロードできます。更新する場合はいつものようにandroid:versionCode,android:versionNameも数字をあげてapkを作って、同じ鍵で署名をしてアップロードしましょう。
jenkinsなどのCIでビルド・テストを実行するためにコマンドラインからビルドする準備
アプリプロジェクト向けのbuild.xmlの作成方法
android update project --path ./ --target "android-19" --subprojects
android update lib-project -p .
アプリのテストプロジェクトを作っている場合は以下のようになります。(アプリプロジェクトのフォルダから実行)
android update test-project --path tests --main ..
ビルドはいつものようにアプリプロジェクトのディレクトリで以下のコマンドで実行できます。
ant clean debug install
テストプロジェクトもある場合は以下のようにできます。
ant clean emma debug install; cd tests; ant clean emma debug install test
参考情報
admob google play service sample AndroidManifest.xml
admob google play service BannerCode
/** * Example of including a Google banner ad in code and listening for ad events. */ public class BannerCodeActivity extends Activity { private AdView mAdView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_banner_code_ad_listener); mAdView = new AdView(this); mAdView.setAdUnitId(getResources().getString(R.string.ad_unit_id)); mAdView.setAdSize(AdSize.BANNER); mAdView.setAdListener(new ToastAdListener(this)); RelativeLayout layout = (RelativeLayout) findViewById(R.id.mainLayout); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); layout.addView(mAdView, params); mAdView.loadAd(new AdRequest.Builder().build()); }
admob google play service BannerXml
public class BannerXmlActivity extends Activity { private AdView mAdView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_banner_xml); mAdView = (AdView) findViewById(R.id.adView); mAdView.setAdListener(new ToastAdListener(this)); mAdView.loadAd(new AdRequest.Builder().build()); }