7
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

AndroidでAdMobの初期化時にクラッシュする

はじめに

前回の記事で大見得を切ったからには年末年始中に何か一つアプリを作ろうとしてハマったのでメモを残しておきます。

概要

下記の環境で発生した事象をまとめています。
・ 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は使わない人向けとなっているけど大丈夫なんだろうか…

AndroidManifest.xml
<manifest>
    <application>
           :
          (中略)
           :
           <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ADMOB_APP_ID"/>

    </application>
</manifest>

とか思ってたら英語版のドキュメントにはバッチリ書いてありました。
image.png

おわりに

Googleのお家芸である日本語版マニュアル最新版になっていない案件でした、これに懲りて英語版で見る癖つけていきましょう💪

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
7
Help us understand the problem. What are the problem?