Flutter集成Firebase Analytics启动崩溃,报ScionFrontendApi致命异常
Flutter Firebase Analytics 接入Android后崩溃问题
问题情况
已将Firebase接入Android项目,但使用Firebase Analytics时应用发生崩溃。
依赖版本
firebase_core: ^2.10.0 firebase_analytics: ^10.2.0
初始化代码
// ... WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); FirebaseAnalytics analytics = FirebaseAnalytics.instance;
报错日志
FATAL EXCEPTION: ScionFrontendApi E/AndroidRuntime(14198): Process: PID: 14198 E/AndroidRuntime(14198): java.lang.ExceptionInInitializerError E/AndroidRuntime(14198): at com.google.android.gms.measurement.internal.v2.<init>(com.google.android.gms:play-services-measurement-impl@@21.2.2:4) E/AndroidRuntime(14198): at com.google.android.gms.measurement.internal.V1.<init>(com.google.android.gms:play-services-measurement-impl@@21.2.2:26) E/AndroidRuntime(14198): at com.google.android.gms.measurement.internal.V1.G(com.google.android.gms:play-services-measurement-impl@@21.2.2:7) E/AndroidRuntime(14198): at com.google.android.gms.measurement.internal.AppMeasurementDynamiteService.initialize(com.google.android.gms:play-services-measurement-sdk@@21.2.2:4) E/AndroidRuntime(14198): at com.google.android.gms.internal.measurement.l0.a(com.google.android.gms:play-services-measurement-sdk-api@@21.2.2:15) E/AndroidRuntime(14198): at com.google.android.gms.internal.measurement.t0.run(com.google.android.gms:play-services-measurement-sdk-api@@21.2.2:2) E/AndroidRuntime(14198): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) E/AndroidRuntime(14198): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) E/AndroidRuntime(14198): at java.lang.Thread.run(Thread.java:1012) E/AndroidRuntime(14198): Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodException: com.google.android.gms.measurement.internal.i.values [] E/AndroidRuntime(14198): at java.lang.Enum.enumValues(Enum.java:272) E/AndroidRuntime(14198): at java.lang.Enum.-$$Nest$smenumValues(Unknown Source:0) E/AndroidRuntime(14198): at java.lang.Enum$1.create(Enum.java:279) E/AndroidRuntime(14198): at java.lang.Enum$1.create(Enum.java:277) E/AndroidRuntime(14198): at libcore.util.BasicLruCache.get(BasicLruCache.java:63) E/AndroidRuntime(14198): at java.lang.Enum.getSharedConstants(Enum.java:291) E/AndroidRuntime(14198): at java.lang.Class.getEnumConstantsShared(Class.java:2461) E/AndroidRuntime(14198): at java.util.EnumMap.getKeyUniverse(EnumMap.java:754) E/AndroidRuntime(14198): at java.util.EnumMap.<init>(EnumMap.java:134) E/AndroidRuntime(14198): at R2.c.<init>(com.google.android.gms:play-services-measurement-impl@@21.2.2:1) E/AndroidRuntime(14198): at R2.c.<clinit>(com.google.android.gms:play-services-measurement-impl@@21.2.2:1) E/AndroidRuntime(14198): ... 9 more
解决方案
这个错误由Firebase依赖版本不兼容或Android构建依赖冲突导致,可尝试以下步骤修复:
更新Firebase依赖到最新稳定版:
打开pubspec.yaml,将firebase_core和firebase_analytics替换为当前最新稳定版本,执行flutter pub upgrade拉取更新。强制统一Google Play服务版本:
在Android模块级build.gradle(通常是android/app/build.gradle)中添加配置,强制所有Google Play服务相关依赖使用同一版本:android { // 保留原有配置 configurations.all { resolutionStrategy { force 'com.google.android.gms:play-services-measurement-impl:21.5.0' force 'com.google.android.gms:play-services-measurement-sdk:21.5.0' force 'com.google.android.gms:play-services-measurement-sdk-api:21.5.0' } } }版本号可根据当前最新Play服务版本调整,确保三个依赖版本一致。
清理构建缓存后重新构建:
依次执行以下命令:flutter clean flutter pub get cd android && ./gradlew clean && cd .. flutter run检查混淆规则(若开启混淆):
若项目启用代码混淆,在proguard-rules.pro中添加Firebase Analytics的混淆规则:-keep class com.google.android.gms.measurement.** { *; } -keep enum com.google.android.gms.measurement.** { *; }
内容的提问来源于stack exchange,提问作者Amin Azizzadeh
相关产品推荐
相关产品推荐

