事象
AdMobプラグインを入れたAndroidアプリが起動時にクラッシュする。
クラッシュログ
java.lang.NoSuchMethodError: No static method zzc(Landroid/os/Bundle;)Lcom/google/android/gms/measurement/internal/zzak; in class Lcom/google/android/gms/measurement/internal/zzak; or its super classes (declaration of 'com.google.android.gms.measurement.internal.zzak' appears in /data/app/[MY_APP_PACKAGE]-GDpCg5h9A1Zhci0PXdgzxA==/base.apk:classes5.dex)
at com.google.firebase.analytics.connector.AnalyticsConnectorImpl.getInstance(Unknown Source:20)
at com.google.firebase.analytics.connector.internal.zzb.create(Unknown Source:6)
at com.google.firebase.components.ComponentRuntime.lambda$new$0(com.google.firebase:firebase-common@@16.1.0:66)
at com.google.firebase.components.ComponentRuntime$$Lambda$1.get(Unknown Source:4)
at com.google.firebase.components.Lazy.get(com.google.firebase:firebase-common@@16.1.0:53)
at com.google.firebase.components.ComponentRuntime.initializeEagerComponents(com.google.firebase:firebase-common@@16.1.0:155)
at com.google.firebase.FirebaseApp.initializeAllApis(com.google.firebase:firebase-common@@16.1.0:779)
at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@16.1.0:369)
at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@16.1.0:332)
at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@16.1.0:316)
at com.google.firebase.provider.FirebaseInitProvider.onCreate(com.google.firebase:firebase-common@@16.1.0:53)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1927)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1902)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(com.google.firebase:firebase-common@@16.1.0:47)
at android.app.ActivityThread.installProvider(ActivityThread.java:6572)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:6127)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6037)
at android.app.ActivityThread.-wrap1(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
再現手順
-
firebase_admob 0.9.0+1
をpubspec.yaml
に記載してPackages getを実行。
pubspec.yaml
dependencies:
flutter:
sdk: flutter
firebase_admob: ^0.9.0+1
-
AndroidManifest.xml
にAdMobアプリIDを記載
AndroidManifest.xml
<manifest>
<application>
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="YOUR_ADMOB_APP_ID"/>
</application>
</manifest>
- ★Androidアプリをビルドして実行すると、起動時にアプリがクラッシュする。
暫定対応
firebase_admob
のバージョンを0.8.0+4
まで落としたところ事象は解消されました。
根本原因
調査の結果、firebase_core
パッケージを入れていなかったことが原因であると判明しました。
公式チュートリアルを見返したところ、注: iOS と Android のいずれのバージョンでも、すべての Flutter アプリには firebase_core プラグインが必要です。
と記載がありました。
解決策
firebase_core
をpubspec.yamlに追記し、念の為他のFirebase系ライブラリも全て最新のバージョンにアップデートしたところ、firebase_admob 0.9.0+1
でもクラッシュすることなく起動することができました。
pubspec.yaml
dependencies:
flutter:
sdk: flutter
firebase_core: ^0.4.0+6
firebase_admob: ^0.9.0+1
firebase_analytics: ^3.0.3
cloud_firestore: ^0.12.5+2