アプリは無料が原則
最近のAndroidアプリは、無料版が多くなってきて、利用者側からすると、喜ばしい傾向でです。
本来、ソフトとかアプリというものは、原則として無料であるべき、という、過去の話を思い出します。
Admobとは
無料の代わりとして、Admobという広告が表示されるアプリが増えています。
広告によって少しだけ収益が得られるシステムで、アプリ開発者にとって、配布は無料でも、広告収入を得ることができて嬉しいです。
Admobを自作アプリに入れようと思い、いろいろ調べました。
プログラムコードとして書こうとすると、かなり面倒そうなので、簡単にレイアウトに挿入する方法、XMLファイルの変更のみでAdmob広告を掲載する方法を記載します。
Admobの使い方、設置方法
最初にAdmobを掲載するアプリのパブリッシャーIDを取得しておきます。
パブリッシャーIDはメモしておきましょう。
Eclipseで、広告を掲載するアプリを開き、開発できる状態にして、エミュレータも起動してください。
最初にAdmob用の外部ファイルを取り込みます。
パッケージエクスプローラーのプロジェクト名を右クリック
ビルド・パス → 外部アーカイブの追加
Admob登録時にダウンロードしたファイル(GoogleAdMobAdsSDK-6.2.1.jar)を取り込みます。
(GoogleAdMobAdsSDK-6.2.1.jar)は2012年12月時点のバージョンです。
すると、参照ライブラリーとして追加されます。
もう一度、パッケージエクスプローラーのプロジェクト名を右クリックして、(下の方にある)プロパティを表示します。
Javaのビルド・パス → 順序およびエクスポート → Admobのjarファイル(GoogleAdMobAdsSDK-6.2.1.jar)にチェックを入れる。
AndroidManifest.xml で com.google.ads.AdActivity を宣言する
AndroidManifest.xmlを開き、(下部のタブもAndroidManifest.xml)
</application> の上に次の宣言を入れる。
<activity android:name=”com.google.ads.AdActivity”
android:configChanges=”keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize”/>
(参考サイト https://developers.google.com/mobile-ads-sdk/docs/android/fundamentals?hl=ja#adactivity)
広告リクエストを行うには INTERNET と ACCESS_NETWORK_STATE のネットワーク権限が必要なため、これらについてもマニフェストで宣言する。
</manifest> の上に次の2行を入れる。
<uses-permission android:name=”android.permission.INTERNET”/>
<uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE”/>
修正後は随時保存してください。
バージョンエラー
すると、ターゲットのバージョンが低いとエラーが出ると思います。
String types not allowed(at ‘configChanges’ with value・・・
これらは、AdmobのSDKで使うAPIプログラムバージョンの違いによってエラーが出ます。
ターゲットのバージョンを高くします。
プロジェクト名を右クリックしてプロパティ画面になります。
Androidを選び、プロジェクト・ビルド・ターゲット画面で、Android3.2を選択します。
Android1.6やAndroid2.1などの低いバージョンで開発してから、最後にAdmobを挿入する時だけバージョンをAndroid3.2に設定すれば、3.2よりも低いバージョンで動作するアプリになります。
プロジェクトをクリーンするとエラーが消えると思います。
レイアウトを開くとエラー
何度か躓いたことをメモしておきます。
レイアウトを開こうとするとエラーが出てしまい、その後プロジェクトのクリーンやリフレッシュしても一向にエラーが消えず、パッケージエクスプローラーの gen ディレクトリ以下に存在するはずの R.java が消失している状況が発生しました。
原因は不明なのですが、どうやらEclipse自体が、キャッシュで設定ファイルを持っていて、それが影響しているようにも見えました。
解決策は、Eclipseを一度終了させ、通常のEclipse起動ではなくて eclipse.exe -clean.cmd の方でキャッシュをクリーンして起動すると治りました。
レイアウトの変更などで動作がおかしくなった場合試すと良いですね。
ここで、また、Rファイルが影響しているらしくエラーがいろいろ出て、インポート文からRの部分を削除したら解決???。意味がわからないので同じ症状が出たら追及しようと思います。
AndroidManifest.xml での設定を終えたら、後は、広告を掲載しようとする画面のレイアウトファイルに修正を入れるだけです。通常はアプリが起動する最初の画面なので、レイアウトのメイン画面が一般的だと思います。
広告を頭の方(上の方)に入れる場合には、レイアウト画面のXMLファイルを開くと最初に次のような宣言部分があります。
<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
この次に広告の宣言部分を挿入します。
xmlns:ads=”http://schemas.android.com/apk/lib/com.google.ads”
次に広告を入れたい場所に次の宣言を挿入します。
<com.google.ads.AdView android:id=”@+id/adView”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
ads:adUnitId=”MY_AD_UNIT_ID”
ads:adSize=”BANNER”
ads:testDevices=”TEST_EMULATOR, TEST_DEVICE_ID”
ads:loadAdOnCreate=”true”/>