当我添加
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 测试?
就我而言,这似乎是由最近更新的
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")
}
这是工作:
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"
}
这是工作:
androidTestImplementation("androidx.test.espresso:espresso-contrib:3.4.0")
{
exclude(group: "com.google.protobuf", module: "protobuf-lite")
}
正如所指出的,它是 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'
}
我最近在使用 React Native 运行 Android 排毒测试时遇到了非常类似的错误。排除 protobuf-lite 模块可以帮我解决这个问题。
改变:
androidTestImplementation('com.wix:detox:+')
致:
androidTestImplementation('com.wix:detox:+') { exclude module: "protobuf-lite" }
在
android/app/build.gradle
内部为我修复了它。
看起来您可能需要修改指定依赖项的方式并使用如下内容:
implementation(Deps.Firebase.performance)
{
exclude(group = "com.google.protobuf", module="protobuf-java")
}
来源:
https://github.com/firebase/firebase-android-sdk/issues/1907