在com.google.android.gms.internal.firebase-perf.zzw上出现NoClassDefFoundError错误

21

我从Firebase Crashlytics收到了许多崩溃报告,我认为这与firebase-perf有关。

Fatal Exception: java.lang.NoClassDefFoundError: com.google.android.gms.internal.firebase-perf.zzw
   at com.google.firebase.perf.metrics.Trace.start(Unknown Source:44)
   at com.google.android.gms.internal.firebase-perf.zze.onActivityStarted(Unknown Source:48)
   at android.app.Application.dispatchActivityStarted(Application.java:205)
   at android.app.Activity.onStart(Activity.java:1150)

已经使用最新版本的Firebase和Google Play服务。

在Firebase测试实验室中不会崩溃。但是大约1%的用户面临此问题。

这是否与GMS Core缺失有关?如果是,如何正确处理,以避免在这些设备上崩溃?

--- 更新 ---

项目build.gradle

buildscript {
    repositories {
        google()
        maven {
            url 'https://maven.fabric.io/public'
        }
        jcenter()

    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0-alpha04'
        classpath 'com.google.gms:google-services:4.0.1' // google-services plugin
        classpath 'com.google.firebase:firebase-plugins:1.1.5'
        classpath 'io.fabric.tools:gradle:1.25.4'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

应用程序 build.gradle

apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.firebase-perf'
apply plugin: 'com.google.android.gms.oss-licenses-plugin'
apply plugin: 'io.fabric'

android {
    compileSdkVersion 28
    buildToolsVersion '28.0.2'
    useLibrary 'org.apache.http.legacy'

    defaultConfig {
        applicationId "MASKED"
        minSdkVersion 18
        targetSdkVersion 28
        versionCode "MASKED"
        versionName "MASKED"
        resConfigs "en"
        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true
        dataBinding {
            enabled = true
        }
    }


    buildTypes {
        release {
            minifyEnabled true
            shrinkResources false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    lintOptions {
        abortOnError false
        textReport true
        textOutput 'stdout'
        checkReleaseBuilds false

    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    testImplementation 'junit:junit:4.12'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-rc01'
    implementation 'androidx.annotation:annotation:1.0.0-rc01'
    implementation 'androidx.appcompat:appcompat:1.0.0-rc01'
    implementation 'androidx.leanback:leanback:1.0.0-rc01'
    implementation 'androidx.cardview:cardview:1.0.0-rc01'
    implementation 'androidx.gridlayout:gridlayout:1.0.0-rc01'
    implementation 'androidx.multidex:multidex:2.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.2'

    implementation 'com.google.firebase:firebase-core:16.0.1'
    implementation 'com.google.firebase:firebase-ads:15.0.1'
    implementation 'com.google.firebase:firebase-config:16.0.0'
    implementation 'com.google.firebase:firebase-perf:16.0.0'

    implementation 'com.google.android.material:material:1.0.0-rc01'
    implementation 'com.google.android.gms:play-services-oss-licenses:16.0.0'
    implementation 'com.google.android:flexbox:1.0.0'
    implementation 'com.google.code.gson:gson:2.8.2'
    implementation 'com.crashlytics.sdk.android:crashlytics:2.9.4'

}

// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'


2
你好!我来自Firebase性能监控团队。我有几个问题,以帮助我们找出这个错误所在。
  1. 当您在Android Studio上运行或通过Crashlytics在生产应用程序上运行时,是否遇到此问题?
  2. 如果是Crashlytics,您是否使用Android App Bundles(https://developer.android.com/platform/technology/app-bundle/)?
- mike_haney
@mike_haney 我们正在遭受相同的崩溃问题。 - Lars Blumberg
@mike_haney 我在生产和调试模式下都遇到了崩溃问题,每次打开应用程序都会发生。这是在我更新了com.google.firebase:firebase-perf:16.1.0之后开始的,我正在回滚到16.0.0版本。堆栈跟踪指向一个包含FirebaseAnalytics的logEvent方法的行,并且在调试构建中说我没有从我的Application类显式调用FirebaseApp.initializeApp(this)。 - EdgarMarcoPolo
@mike_haney 我手头有一个设备,我可以在它上面重现所有应用程序的错误。 - Demetrio Guilardi
请务必在下面的回答中通知@Tejas,他是解决这些问题的工程师。 - mike_haney
显示剩余6条评论
2个回答

9

Firebase的支持团队刚刚向我确认了这是一个bug。他们正在解决这个问题(尽管他们还没有复现出来)。因此,我们应该期待在未来的Firebase版本中修复这个问题。


Firebase支持团队有没有提出任何解决问题的建议?我还没有找到需要降级的库或工具,以恢复到正常的配置。 - Bob Snyder
他们没有说。我会问。 - niqueco
3
我已将com.google.firebase:firebase-perf升级至16.1.0后,我的用户也开始遇到崩溃问题,我只能回退至16.0.0版本。 - KgaboL
1
@niqueco,我们能否得到一个错误报告的链接? - Minas Mina
2
@MinasMina 没有错误报告。我与Firebase支持团队进行了交流。他们确认了问题,但无法重现。昨天我收到了最后一封电子邮件,说因为他们仍然无法在本地重现它,所以他们将关闭我的报告并“监视”情况。 (?) - niqueco
2
我正在面对完全相同的问题。版本是16.1.0。要重现,请启动应用并等待30分钟。然后应用程序将再也无法启动。 - Demetrio Guilardi

6

更新:请升级至Firebase性能版本16.2.5以解决此问题。


1
更新:删除 multidex 后问题似乎已经解决。 - Fung
1
我可以重现这个错误!!!我手头有一个设备,我可以在任何地方重现它。 - Demetrio Guilardi
1
@所有人 - 请尝试使用Firebase性能SDK的16.2.0版本 - 我们已经为其添加了一个潜在的修复。谢谢! - Tejas
1
@Tejas 这个问题在16.2.0版本中仍然存在。使用com.google.firebase:firebase-plugins:1.1.5。 - Luke Brandon Farrell
1
我们已经找到了问题并正在修复 - 一旦我们能够发布修复版本,我会更新答案! - Tejas
显示剩余12条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接