Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Instrumentation Test compile failed by protobuf classes duplication #1793

Open
ganadist opened this issue May 4, 2023 · 1 comment
Open

Comments

@ganadist
Copy link

ganadist commented May 4, 2023

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
Copy link
Author

ganadist commented Aug 1, 2023

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"))
        }
    }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant