1. masaibar

    Posted

    masaibar
Changes in title
+AndroidでAdMobの初期化時にクラッシュする
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,83 @@
+## はじめに
+[前回の記事](https://qiita.com/masaibar/items/fdc1a7ee46de0edcd612#%E3%81%8A%E3%82%8F%E3%82%8A%E3%81%AB)で大見得を切ったからには年末年始中に何か一つアプリを作ろうとしてハマったのでメモを残しておきます。
+
+## 概要
+下記の環境で発生した事象をまとめています。
+・ Android Studio 3.2.1
+・ Kotlin 1.3.10
+・ firebase-ads: 17.1.2
+
+## やったこと
+https://firebase.google.com/docs/admob/android/quick-start?hl=ja の手順に従って下記を実行。
+
+### app/build.gradle
+依存関係を追加し、促されるままにアップデート
+
+```
+// implementation 'com.google.firebase:firebase-ads:16.0.1' ←アップデート前
+
+implementation 'com.google.firebase:firebase-ads:17.1.2'
+```
+
+### Application.kt
+SDKの初期化
+
+```Application.kt
+MobileAds.initialize(this, ADMOB_APP_ID)
+```
+
+
+しかしビルドしようとすると下記のエラーメッセージを吐いて落ちる
+
+```
+2019-01-01 17:15:30.332 30306-30306/? E/AndroidRuntime: FATAL EXCEPTION: main
+ Process: com.masaibar.sample, PID: 30306
+ java.lang.RuntimeException: Unable to get provider com.google.android.gms.ads.MobileAdsInitProvider: java.lang.IllegalStateException:
+
+ ******************************************************************************
+ * The Google Mobile Ads SDK was initialized incorrectly. AdMob publishers *
+ * should follow the instructions here: https://goo.gl/fQ2neu to add a valid *
+ * App ID inside the AndroidManifest. Google Ad Manager publishers should *
+ * follow instructions here: https://goo.gl/h17b6x. *
+ ******************************************************************************
+
+
+ at android.app.ActivityThread.installProvider(ActivityThread.java:6445)
+ at android.app.ActivityThread.installContentProviders(ActivityThread.java:5987)
+ at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5902)
+ at android.app.ActivityThread.access$1100(ActivityThread.java:200)
+ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656)
+ at android.os.Handler.dispatchMessage(Handler.java:106)
+ at android.os.Looper.loop(Looper.java:193)
+ at android.app.ActivityThread.main(ActivityThread.java:6718)
+ at java.lang.reflect.Method.invoke(Native Method)
+ at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
+ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
+ Caused by: java.lang.IllegalStateException:
+```
+
+## 対処方法
+とりあえずエラーメッセージ記載のURLに従ってAndroidManifest.xmlにmeta-dataを追加したら解決しました。
+よく見るとFirebaseのAdMobとはそもそもページが違い、よく読んでみるとAdMobを使いたい人のうちFirebaseは使わない人向けとなっているけど大丈夫なんだろうか…
+
+https://developers.google.com/admob/android/quick-start#update_your_androidmanifestxml
+
+```AndroidManifest.xml
+<manifest>
+ <application>
+ :
+ (中略)
+ :
+ <meta-data
+ android:name="com.google.android.gms.ads.APPLICATION_ID"
+ android:value="ADMOB_APP_ID"/>
+
+ </application>
+</manifest>
+```
+
+とか思ってたら[英語版のドキュメント](https://firebase.google.com/docs/admob/android/quick-start?hl=en)にはバッチリ書いてありました。
+![image.png](https://qiita-image-store.s3.amazonaws.com/0/68671/df759667-5a16-e69c-1f6b-8035db4346df.png)
+
+## おわりに
+Googleのお家芸である日本語版マニュアル最新版になっていない案件でした、これに懲りて英語版で見る癖つけていきましょう💪