致命异常:ScioFrontendApi 在使用适用于 Android 应用程序的 Firebase 升级 Google Play 服务时

Posted

技术标签:

【中文标题】致命异常:ScioFrontendApi 在使用适用于 Android 应用程序的 Firebase 升级 Google Play 服务时【英文标题】:Fatal exception: ScioFrontendApi when upgrading google play services with firebase for android app 【发布时间】:2021-07-18 10:03:36 【问题描述】:

我从我的 firebase 帐户下载了新的 google-services.json 并将其正确放置。 这是 FirebaseInstallations 迁移过程的一部分:https://github.com/firebase/firebase-android-sdk/blob/master/firebase-installations/REQUIRED_FIREBASE_OPTIONS_ANDROID.md#what-do-i-need-to-do

2021-04-24 17:34:21.486 9619-9642/in.mycompany.myapp E/AndroidRuntime: FATAL EXCEPTION: ScionFrontendApi
    Process: in.mycompany.myapp, PID: 9619
    java.lang.VerifyError: Verifier rejected class com.google.android.gms.measurement.internal.zzfp: void com.google.android.gms.measurement.internal.zzfp.zzN(java.lang.String, int, java.lang.Throwable, byte[], java.util.Map) failed to verify: void com.google.android.gms.measurement.internal.zzfp.zzN(java.lang.String, int, java.lang.Throwable, byte[], java.util.Map): [0x37] 'this' arg must be initialized (declaration of 'com.google.android.gms.measurement.internal.zzfp' appears in /data/app/in.mycompany.myapp-zfkLQ-CtTDdM7bRGUt2Hog==/base.apk)
        at com.google.android.gms.measurement.internal.zzfp.zzC(Unknown Source:0)
        at com.google.android.gms.measurement.internal.AppMeasurementDynamiteService.initialize(com.google.android.gms:play-services-measurement-sdk@@18.0.3:2)
        at com.google.android.gms.internal.measurement.zzal.zza(com.google.android.gms:play-services-measurement-sdk-api@@18.0.3:12)
        at com.google.android.gms.internal.measurement.zzbh.run(com.google.android.gms:play-services-measurement-sdk-api@@18.0.3:2)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

我的应用依赖项 (app/build.gradle) 如下所示:

implementation project(':react-native-gesture-handler')
implementation project(':react-native-fs')
implementation project(':react-native-video')
implementation project(':react-native-branch')
implementation jscFlavor
implementation project(':react-native-image-picker')
implementation project(':react-native-scan-barcode')
implementation project(':react-native-bluetooth-escpos-printer')
implementation project(':react-native-image-to-base64')
implementation project(':react-native-mp-android-chart')
implementation project(':react-native-doc-viewer')
implementation project(':react-native-fetch-blob')
implementation project(':react-native-shimmer')
implementation(project(':react-native-device-info'))
implementation project(':react-native-code-push')
implementation project(':react-native-linear-gradient')
implementation project(':react-native-webview')
implementation fileTree(include: ['*.jar'], dir: 'libs')
// From node_modules
implementation project(':react-native-file-chooser')
implementation('com.google.android.material:material:1.0.0') 
    force = true;

implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
debugImplementation("com.facebook.flipper:flipper:$FLIPPER_VERSION") 
  exclude group:'com.facebook.fbjni'

debugImplementation("com.facebook.flipper:flipper-network-plugin:$FLIPPER_VERSION") 
    exclude group:'com.facebook.flipper'
    exclude group:'com.squareup.okhttp3', module:'okhttp'

debugImplementation("com.facebook.flipper:flipper-fresco-plugin:$FLIPPER_VERSION") 
    exclude group:'com.facebook.flipper'

implementation 'androidx.multidex:multidex:2.0.1'
implementation platform('com.google.firebase:firebase-bom:27.0.0')
implementation 'com.google.firebase:firebase-messaging'
implementation 'com.google.firebase:firebase-core'
implementation 'com.google.firebase:firebase-config'
implementation 'com.google.firebase:firebase-analytics'


implementation 'com.google.code.gson:gson:2.7'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation ('com.squareup.okhttp3:okhttp:3.11.0')
    force = true;

implementation 'com.google.android.gms:play-services-tagmanager:17.0.0'
implementation project(':react-native-android-circles')
implementation 'com.facebook.fresco:fresco:1.13.0'
implementation 'com.facebook.fresco:animated-gif:1.13.0'
implementation(project(':react-native-maps'))
implementation('com.google.android.gms:play-services-base:17.6.0')
implementation('com.google.android.gms:play-services-maps:17.0.0')
implementation 'com.newrelic.agent.android:android-agent:5.19.1'

implementation 'com.facebook.stetho:stetho:1.5.1'
implementation 'com.facebook.stetho:stetho-okhttp3:1.5.1'
implementation 'com.facebook.stetho:stetho-js-rhino:1.5.1'
androidTestImplementation('com.wix:detox:+')

我的根应用程序 build.gradle 如下所示:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript 
    repositories 
        google()
        jcenter()
        mavenCentral()
    
    dependencies 
        classpath 'com.android.tools.build:gradle:3.5.3'
        classpath 'com.google.gms:google-services:4.3.5'
        classpath "com.newrelic.agent.android:agent-gradle-plugin:5.19.1"
        classpath 'com.google.android.gms:strict-version-matcher-plugin:1.2.2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    


subprojects 
    afterEvaluate project ->
        if (project.hasProperty("android")) 
            android 
                buildToolsVersion '29.0.3'
                defaultConfig 
                    minSdkVersion 18
                    targetSdkVersion 29
                
            
        
    


allprojects 
    repositories 
        google()
        maven  url "https://www.jitpack.io" 
        mavenLocal()
        maven 
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        
        maven 
            url("$rootDir/../node_modules/jsc-android/dist")
        
        jcenter()
        maven  url 'https://www.jitpack.io' 
        maven 
            // All of Detox' artifacts are provided via the npm module
            url "$rootDir/../node_modules/detox/Detox-android"
        
    

【问题讨论】:

【参考方案1】:

显然,firebase 和 google play 服务的版本范围是不同的。

firebase bom 27 & 26 正在拉入 firebase-analytics-18.0.3,而 com.google.android.gms:play-services-measurement:18.0.3 正在拉入,但我的 gms 依赖项(如 com.google.android.gms:play-services-tagmanager:17.0.0)本来希望使用 17 范围内的测量依赖项。

因此将 firebase bom 版本减少到 25 对我来说是可行的。

调试是通过./gradlew :app:dependencies --configuration productionReleaseRuntimeClasspath完成的

【讨论】:

以上是关于致命异常:ScioFrontendApi 在使用适用于 Android 应用程序的 Firebase 升级 Google Play 服务时的主要内容,如果未能解决你的问题,请参考以下文章

Pytest:Windows 致命异常:访问冲突

致命异常 - 在 Camera.release() 被称为 HTC ONE M9 之后正在使用相机

获取 Android 运行时:致命异常

致命错误:未捕获的异常“异常”;需要 CURL PHP 扩展 Google_Client.php

在android应用程序中出现致命异常

iOS 14 致命异常:在当前数据模型中找不到 NSInternalInconsistencyException 路径