android-test icon indicating copy to clipboard operation
android-test copied to clipboard

Instrumentation Test compile failed by protobuf classes duplication

Open ganadist opened this issue 2 years ago • 1 comments

Description

  • I'm using protobuf/gRPC on my android app and I tried to use androidx espresso, but build was failed.
  • Since Protobuf 3.8.0, it introduced new javalite runtime (com.google.protobuf:protobuf-javalite), but espresso still uses too old javalite runtime(com.google.protobuf:protobuf-lite)

Steps to Reproduce

  • N/A

Expected Results

  • Compile unittest without error

Actual Results

  • Gradle shows following error message.
A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
> Duplicate class com.google.protobuf.AbstractMessageLite found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.AbstractMessageLite$Builder found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.AbstractMessageLite$Builder$LimitedInputStream found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.AbstractParser found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.AbstractProtobufList found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.BooleanArrayList found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.ByteBufferWriter found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.ByteOutput found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.ByteString found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.ByteString$1 found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.ByteString$ArraysByteArrayCopier found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.ByteString$BoundedByteString found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.ByteString$ByteArrayCopier found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.ByteString$ByteIterator found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.ByteString$CodedBuilder found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.ByteString$LeafByteString found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.ByteString$LiteralByteString found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.ByteString$Output found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.ByteString$SystemByteArrayCopier found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.CodedInputStream found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.CodedOutputStream found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.CodedOutputStream$1 found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javalite:3.22.2) and protobuf-lite-3.0.1 (com.google.protobuf:protobuf-lite:3.0.1)
  Duplicate class com.google.protobuf.CodedOutputStream$AbstractBufferedEncoder found in modules protobuf-javalite-3.22.2 (com.google.protobuf:protobuf-javal…

AndroidX Test and Android OS Versions

  • androidx.test.espresso:espresso-contrib:3.5.1
  • OS : Any

Link to a public git repo demonstrating the problem:

  • N/A

ganadist avatar May 04 '23 05:05 ganadist

Possible workaround: Add following line in build.gradle

   configurations.all {
        resolutionStrategy.dependencySubstitution {
            substitute(module("com.google.protobuf:protobuf-lite"))
                .using(module("com.google.protobuf:protobuf-javalite:3.22.2"))
        }
    }

ganadist avatar Aug 01 '23 04:08 ganadist