当我添加implementation 'com.google.firebase:firebase-perf-ktx:19.1.0'
时,我无法启动浓缩咖啡仪器测试("app"方案构建(好的)。当我尝试启动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仪器测试?
在我的情况下,这似乎是由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-contribdeep而来。
当检查依赖关系时,在调试模式下运行instrumentation测试(debugAndroidTestRuntimeClasspath)时,这个深度似乎起作用
./gradlew app:dependencies
在应用程序构建中添加以下行。gradle将在debugAndroidTestRuntimeClasspath配置中排除它,您的测试应该再次运行良好:)
configurations
{
debugAndroidTestRuntimeClasspath.exclude group: 'com.google.protobuf' module: 'protobuf-lite'
}
我最近得到了一个非常类似的错误,而运行android排毒测试与react native。排除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