java.lang.NoSuchMethodError:没有使用 Firebase 性能和 Espresso 仪器测试的静态方法 registerDefaultInstance

问题描述 投票:0回答:6

当我添加

implementation 'com.google.firebase:firebase-perf-ktx:19.1.0'
时,我无法启动浓缩咖啡仪器测试(“应用程序”方案构建正常)。当我尝试开始 Espresso 测试时,我有

Test running failed: Process crashed.
java.lang.NoSuchMethodError: No static method registerDefaultInstance(Ljava/lang/Class;Lcom/google/protobuf/GeneratedMessageLite;)V in class Lcom/google/protobuf/GeneratedMessageLite

但是如果我删除

implementation 'com.google.firebase:firebase-perf-ktx:19.1.0'
一切工作正常。 如何保留 Firebase 性能库和 Espresso Instrumented 测试?

android firebase android-espresso firebase-performance
6个回答
35
投票

就我而言,这似乎是由最近更新的

protobuf-lite:3.0.1
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.4.0'
依赖性引起的,我可以使用此排除来修复它

androidTestImplementation (androidx.test.espresso:espresso-contrib:3.4.0'){
    exclude module: "protobuf-lite"
}

乘坐KTX时

testImplementation('androidx.test.espresso:espresso-contrib:3.4.0') {
        exclude(module = "protobuf-lite")
    }

1
投票

这是工作:

androidTestImplementation('androidx.test.espresso:espresso-contrib:3.4.0') {
    exclude module: "protobuf-lite"
}
androidTestImplementation ('androidx.test.espresso:espresso-accessibility:3.4.0') {
    exclude module: "protobuf-lite"
}

0
投票

这是工作:

androidTestImplementation("androidx.test.espresso:espresso-contrib:3.4.0") 
{
    exclude(group: "com.google.protobuf", module: "protobuf-lite")
}

0
投票

正如所指出的,它是 protobuf-lite 运行时,它随 androidx.test.espresso:espresso-contrib dep 一起提供。

在检查依赖项时,似乎该 dep 在调试模式下运行仪器测试时发挥作用(debugAndroidTestRuntimeClasspath)

 ./gradlew app:dependencies

在应用程序 build.gradle 中添加以下行将在 debugAndroidTestRuntimeClasspath 配置中排除它,并且您的测试应该再次正常运行:)

configurations
{
    debugAndroidTestRuntimeClasspath.exclude group: 'com.google.protobuf' module: 'protobuf-lite'
}

0
投票

我最近在使用 React Native 运行 Android 排毒测试时遇到了非常类似的错误。排除 protobuf-lite 模块可以帮我解决这个问题。

改变:

androidTestImplementation('com.wix:detox:+')

致:

androidTestImplementation('com.wix:detox:+') { exclude module: "protobuf-lite" }

android/app/build.gradle
内部为我修复了它。


-1
投票

看起来您可能需要修改指定依赖项的方式并使用如下内容:

implementation(Deps.Firebase.performance)
    {
        exclude(group = "com.google.protobuf", module="protobuf-java")
    }

来源:

https://github.com/firebase/firebase-android-sdk/issues/1907

© www.soinside.com 2019 - 2024. All rights reserved.