Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Firebase Libraries, Instrumented Test - No static method registerDefaultInstance(Ljava/lang/Class;Lcom/google/protobuf/GeneratedMessageLite

Trying to run instrumented tests in Android Studio results in a

Test running failed: Process crashed.

In greater detail in the logcat

E: FATAL EXCEPTION: main
    Process: com.nikolam.colorme.debug, PID: 19841
    java.lang.NoSuchMethodError: No static method registerDefaultInstance(Ljava/lang/Class;Lcom/google/protobuf/GeneratedMessageLite;)V in class Lcom/google/protobuf/GeneratedMessageLite; or its super classes (declaration of 'com.google.protobuf.GeneratedMessageLite' appears in /data/app/com.nikolam.colorme.debug.test-lZqsu6pVWp2DVtFzU1uYgg==/base.apk)
        at com.google.firebase.perf.v1.ApplicationInfo.<clinit>(ApplicationInfo.java:1085)
        at com.google.firebase.perf.v1.ApplicationInfo.newBuilder(ApplicationInfo.java:533)
        at com.google.firebase.perf.transport.TransportManager.<init>(TransportManager.java:139)
        at com.google.firebase.perf.transport.TransportManager.<clinit>(TransportManager.java:91)
        at com.google.firebase.perf.transport.TransportManager.getInstance(TransportManager.java:149)
        at com.google.firebase.perf.internal.AppStateMonitor.getInstance(AppStateMonitor.java:64)
        at com.google.firebase.perf.provider.FirebasePerfProvider.attachInfo(FirebasePerfProvider.java:65)
        at android.app.ActivityThread.installProvider(ActivityThread.java:6983)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:6528)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6445)
        at android.app.ActivityThread.access$1300(ActivityThread.java:219)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1859)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

The closest thing I found was this issue on github but I tried multiple setups of excluding the protobuf java from my dependancies. I tried to exclude it from all projects, just from the app module, from all modules except the app module and so on. I use Firebase performance in multiple modules.

I tried finding the protobuf-java and here is where I found it

lintClassPath - The lint embedded classpath
\--- com.android.tools.lint:lint-gradle:27.1.0
     +--- com.android.tools:sdk-common:27.1.0
     |    +--- com.android.tools:sdklib:27.1.0
     |    |    +--- com.android.tools.layoutlib:layoutlib-api:27.1.0
     |    |    |    +--- com.android.tools:common:27.1.0
     |    |    |    |    +--- com.android.tools:annotations:27.1.0
     |    |    |    |    +--- com.google.guava:guava:28.1-jre
     |    |    |    |    |    +--- com.google.guava:failureaccess:1.0.1
     |    |    |    |    |    +--- com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
     |    |    |    |    |    +--- com.google.code.findbugs:jsr305:3.0.2
     |    |    |    |    |    +--- org.checkerframework:checker-qual:2.8.1
     |    |    |    |    |    +--- com.google.errorprone:error_prone_annotations:2.3.2
     |    |    |    |    |    +--- com.google.j2objc:j2objc-annotations:1.3
     |    |    |    |    |    \--- org.codehaus.mojo:animal-sniffer-annotations:1.18
     |    |    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72
     |    |    |    |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.72
     |    |    |    |         |    +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.72
     |    |    |    |         |    \--- org.jetbrains:annotations:13.0
     |    |    |    |         \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72
     |    |    |    |              \--- org.jetbrains.kotlin:kotlin-stdlib:1.3.72 (*)
     |    |    |    +--- net.sf.kxml:kxml2:2.3.0
     |    |    |    +--- com.android.tools:annotations:27.1.0
     |    |    |    \--- org.jetbrains:annotations:13.0
     |    |    +--- com.android.tools:dvlib:27.1.0
     |    |    |    \--- com.android.tools:common:27.1.0 (*)
     |    |    +--- com.android.tools:repository:27.1.0
     |    |    |    +--- com.android.tools:common:27.1.0 (*)
     |    |    |    +--- com.sun.activation:javax.activation:1.2.0
     |    |    |    +--- org.apache.commons:commons-compress:1.12
     |    |    |    +--- org.glassfish.jaxb:jaxb-runtime:2.3.1
     |    |    |    |    +--- javax.xml.bind:jaxb-api:2.3.1
     |    |    |    |    |    \--- javax.activation:javax.activation-api:1.2.0
     |    |    |    |    +--- org.glassfish.jaxb:txw2:2.3.1
     |    |    |    |    +--- com.sun.istack:istack-commons-runtime:3.0.7
     |    |    |    |    +--- org.jvnet.staxex:stax-ex:1.8
     |    |    |    |    +--- com.sun.xml.fastinfoset:FastInfoset:1.2.15
     |    |    |    |    \--- javax.activation:javax.activation-api:1.2.0
     |    |    |    +--- com.google.jimfs:jimfs:1.1
     |    |    |    |    \--- com.google.guava:guava:18.0 -> 28.1-jre (*)
     |    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    |    +--- com.google.code.gson:gson:2.8.5
     |    |    +--- org.apache.commons:commons-compress:1.12
     |    |    +--- org.apache.httpcomponents:httpmime:4.5.6
     |    |    |    \--- org.apache.httpcomponents:httpclient:4.5.6
     |    |    |         +--- org.apache.httpcomponents:httpcore:4.4.10
     |    |    |         +--- commons-logging:commons-logging:1.2
     |    |    |         \--- commons-codec:commons-codec:1.10
     |    |    \--- org.apache.httpcomponents:httpcore:4.4.10
     |    +--- com.android.tools.build:builder-test-api:4.1.0
     |    |    \--- com.android.tools.ddms:ddmlib:27.1.0
     |    |         +--- com.android.tools:common:27.1.0 (*)
     |    |         +--- net.sf.kxml:kxml2:2.3.0
     |    |         \--- com.google.protobuf:protobuf-java:3.10.0
     |    +--- com.android.tools.build:builder-model:4.1.0
     |    |    +--- com.android.tools:annotations:27.1.0
     |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    +--- com.android.tools.ddms:ddmlib:27.1.0 (*)
     |    +--- com.android.tools.analytics-library:shared:27.1.0
     |    |    +--- com.android.tools.analytics-library:protos:27.1.0
     |    |    |    \--- com.google.protobuf:protobuf-java:3.10.0
     |    |    +--- com.android.tools:annotations:27.1.0
     |    |    +--- com.android.tools:common:27.1.0 (*)
     |    |    +--- com.google.guava:guava:28.1-jre (*)
     |    |    +--- com.google.code.gson:gson:2.8.5
     |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    +--- org.bouncycastle:bcpkix-jdk15on:1.56
     |    |    \--- org.bouncycastle:bcprov-jdk15on:1.56
     |    +--- org.bouncycastle:bcprov-jdk15on:1.56
     |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    +--- org.jetbrains.kotlin:kotlin-reflect:1.3.72
     |    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.3.72 (*)
     |    +--- com.google.protobuf:protobuf-java:3.10.0  -- HERE 
     |    +--- javax.inject:javax.inject:1
     |    +--- org.jetbrains.trove4j:trove4j:20160824
     |    \--- com.android.tools.build:aapt2-proto:4.1.0-alpha01-6193524
     |         \--- com.google.protobuf:protobuf-java:3.10.0 -- HERE 
     +--- com.android.tools.build:builder:4.1.0
     |    +--- com.android.tools.build:builder-model:4.1.0 (*)
     |    +--- com.android.tools.build:builder-test-api:4.1.0 (*)
     |    +--- com.android.tools:sdklib:27.1.0 (*)
     |    +--- com.android.tools:sdk-common:27.1.0 (*)
     |    +--- com.android.tools:common:27.1.0 (*)
     |    +--- com.android.tools.build:manifest-merger:27.1.0
     |    |    +--- com.android.tools:common:27.1.0 (*)
     |    |    +--- com.android.tools:sdklib:27.1.0 (*)
     |    |    +--- com.android.tools:sdk-common:27.1.0 (*)
     |    |    +--- com.google.code.gson:gson:2.8.5
     |    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    |    \--- net.sf.kxml:kxml2:2.3.0
     |    +--- com.android.tools.ddms:ddmlib:27.1.0 (*)
     |    +--- com.android:zipflinger:4.1.0
     |    |    \--- com.android.tools:common:27.1.0 (*)
     |    +--- com.android:signflinger:4.1.0
     |    |    +--- com.android.tools.build:apksig:4.1.0
     |    |    \--- com.android:zipflinger:4.1.0 (*)
     |    +--- com.android.tools.analytics-library:protos:27.1.0 (*)
     |    +--- com.android.tools.analytics-library:tracker:27.1.0
     |    |    +--- com.android.tools:annotations:27.1.0
     |    |    +--- com.android.tools:common:27.1.0 (*)
     |    |    +--- com.android.tools.analytics-library:protos:27.1.0 (*)
     |    |    +--- com.android.tools.analytics-library:shared:27.1.0 (*)
     |    |    +--- com.google.protobuf:protobuf-java:3.10.0
     |    |    +--- com.google.guava:guava:28.1-jre (*)
     |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    +--- com.android.tools.build:apksig:4.1.0
     |    +--- com.android.tools.build:apkzlib:4.1.0
     |    |    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.2
     |    |    +--- com.google.guava:guava:23.0 -> 28.1-jre (*)
     |    |    +--- org.bouncycastle:bcpkix-jdk15on:1.56 (*)
     |    |    +--- org.bouncycastle:bcprov-jdk15on:1.56
     |    |    \--- com.android.tools.build:apksig:4.1.0
     |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    +--- com.squareup:javawriter:2.5.0
     |    +--- org.bouncycastle:bcpkix-jdk15on:1.56 (*)
     |    +--- org.bouncycastle:bcprov-jdk15on:1.56
     |    +--- org.ow2.asm:asm:7.0
     |    +--- org.ow2.asm:asm-tree:7.0
     |    |    \--- org.ow2.asm:asm:7.0
     |    +--- javax.inject:javax.inject:1
     |    +--- org.ow2.asm:asm-commons:7.0
     |    |    +--- org.ow2.asm:asm:7.0
     |    |    +--- org.ow2.asm:asm-tree:7.0 (*)
     |    |    \--- org.ow2.asm:asm-analysis:7.0
     |    |         \--- org.ow2.asm:asm-tree:7.0 (*)
     |    +--- org.ow2.asm:asm-util:7.0
     |    |    +--- org.ow2.asm:asm:7.0
     |    |    +--- org.ow2.asm:asm-tree:7.0 (*)
     |    |    \--- org.ow2.asm:asm-analysis:7.0 (*)
     |    +--- it.unimi.dsi:fastutil:7.2.0
     |    +--- net.sf.jopt-simple:jopt-simple:4.9
     |    \--- com.googlecode.json-simple:json-simple:1.1
     +--- com.android.tools.build:builder-model:4.1.0 (*)
     +--- com.android.tools.external.com-intellij:intellij-core:27.1.0
     |    \--- org.jetbrains.trove4j:trove4j:20160824
     +--- com.android.tools.external.com-intellij:kotlin-compiler:27.1.0
     +--- com.android.tools.external.org-jetbrains:uast:27.1.0
     +--- com.android.tools.build:manifest-merger:27.1.0 (*)
     +--- com.android.tools.lint:lint:27.1.0
     |    +--- com.android.tools.lint:lint-checks:27.1.0
     |    |    +--- com.android.tools.lint:lint-api:27.1.0
     |    |    |    +--- com.android.tools:sdk-common:27.1.0 (*)
     |    |    |    +--- com.android.tools.lint:lint-model:27.1.0
     |    |    |    |    +--- com.android.tools:common:27.1.0 (*)
     |    |    |    |    +--- com.android.tools:sdk-common:27.1.0 (*)
     |    |    |    |    +--- com.android.tools.build:builder-model:4.1.0 (*)
     |    |    |    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    |    |    |    \--- net.sf.kxml:kxml2:2.3.0
     |    |    |    +--- com.google.guava:guava:28.1-jre (*)
     |    |    |    +--- com.android.tools.external.com-intellij:intellij-core:27.1.0 (*)
     |    |    |    +--- com.android.tools.external.com-intellij:kotlin-compiler:27.1.0
     |    |    |    +--- com.android.tools.external.org-jetbrains:uast:27.1.0
     |    |    |    +--- com.android.tools.build:manifest-merger:27.1.0 (*)
     |    |    |    +--- org.ow2.asm:asm:7.0
     |    |    |    +--- org.ow2.asm:asm-tree:7.0 (*)
     |    |    |    +--- org.jetbrains.kotlin:kotlin-reflect:1.3.72 (*)
     |    |    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    |    |    \--- com.android.tools.build:builder-model:4.1.0 (*)
     |    |    +--- com.google.guava:guava:28.1-jre (*)
     |    |    +--- com.android.tools.external.com-intellij:intellij-core:27.1.0 (*)
     |    |    +--- com.android.tools.external.com-intellij:kotlin-compiler:27.1.0
     |    |    +--- com.android.tools.external.org-jetbrains:uast:27.1.0
     |    |    \--- org.ow2.asm:asm-analysis:7.0 (*)
     |    +--- com.google.guava:guava:28.1-jre (*)
     |    +--- com.android.tools.external.org-jetbrains:uast:27.1.0
     |    +--- com.android.tools.external.com-intellij:kotlin-compiler:27.1.0
     |    +--- com.android.tools.build:manifest-merger:27.1.0 (*)
     |    +--- com.android.tools.analytics-library:shared:27.1.0 (*)
     |    +--- com.android.tools.analytics-library:protos:27.1.0 (*)
     |    +--- com.android.tools.analytics-library:tracker:27.1.0 (*)
     |    +--- org.jetbrains.kotlin:kotlin-reflect:1.3.72 (*)
     |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     +--- com.android.tools.lint:lint-gradle-api:27.1.0
     |    +--- com.android.tools:sdklib:27.1.0 (*)
     |    +--- com.android.tools.lint:lint-model:27.1.0 (*)
     |    +--- com.android.tools.build:gradle-api:4.1.0
     |    |    +--- com.android.tools.build:builder-test-api:4.1.0 (*)
     |    |    +--- com.google.guava:guava:28.1-jre (*)
     |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    +--- org.jetbrains.kotlin:kotlin-reflect:1.3.72 (*)
     |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    \--- com.google.guava:guava:28.1-jre (*)
     +--- com.android:zipflinger:4.1.0 (*)
     +--- org.codehaus.groovy:groovy-all:2.4.15
     +--- org.jetbrains.kotlin:kotlin-reflect:1.3.72 (*)
     \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)

Other Firebase libraries depend on

com.google.protobuf:protobuf-javalite:3.14.0

The whole dependencies.log is large so I dont know how to post it

like image 269
Nikola-Milovic Avatar asked Dec 13 '22 07:12

Nikola-Milovic


1 Answers

In my case it seems to be caused by protobuf-lite:3.0.1 dependency from recently updated androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.4.0' which I was able to fix with this exclude

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

and it's working for my needs (I use this library only for DrawerActions), however it is not very elegant solution.

Given the date of your post it's probably caused by something else (since the mentioned library was updated few days ago), unless you were using some alpha version.

I recommend to check recently updated dependencies in your gradle file. You can also compare differences in output of ./gradlew :app:dependencies | grep protobuf before and after that dependency change and then examine the full dependency tree for the cause.

like image 54
Almighty Avatar answered Apr 28 '23 14:04

Almighty