protocolbuffers / protobuf

Protocol Buffers - Google's data interchange format
http://protobuf.dev
Other
65.52k stars 15.46k forks source link

Can't build android app with firebase and protobuf version higher than 4.26.1 #18127

Closed k-arabadzhiev closed 1 month ago

k-arabadzhiev commented 1 month ago

What version of protobuf and what language are you using? Version: anything higher than v4.26.1 Language: Java/Kotlin

What operating system (Linux, Windows, ...) and version? MacOS (M2)

What runtime / compiler are you using (e.g., python version or gcc version) gradle 8.7, JDK 17, protobuf-gradle-plugin v0.9.4

What did you do? Steps to reproduce the behavior:

  1. Implement dependencies for proto datastore:
    
    // build.gradle

plugins { id 'com.android.library' id 'com.google.protobuf' ... }

android {

compileOptions {
    coreLibraryDesugaringEnabled true
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

protobuf {
    protoc {
        artifact = "com.google.protobuf:protoc:4.28.0"
    }

    generateProtoTasks {
        all().each { task ->
            task.builtins {
                java {
                    option 'lite'
                }
                kotlin {
                    option 'lite'
                }
            }
        }
    }
}

}

dependencies { ...

// firebase
implementation platform("com.google.firebase:firebase-bom:33.2.0")
implementation 'com.google.firebase:firebase-inappmessaging-display'
implementation 'com.google.firebase:firebase-messaging'
implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.firebase:firebase-crashlytics'
implementation 'com.google.firebase:firebase-perf'
implementation 'com.google.firebase:firebase-installations'

// data store
implementation "androidx.datastore:datastore:1.1.1"
implementation "com.google.protobuf:protobuf-kotlin-lite:4.28.0"

}

// project build.gradle

buildscript { repositories { ... } dependencies { classpath "com.android.tools.build:gradle:8.5.0" classpath "com.google.gms:google-services:4.4.2" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.0" classpath "com.google.firebase:firebase-crashlytics-gradle:3.0.2" classpath "com.google.firebase:perf-plugin:1.4.1" classpath "com.google.protobuf:protobuf-gradle-plugin:0.9.4" } }


 2. The relevant firebase dependencies that were already in the project are listed above as well
 3. Build and run the app 

**What did you expect to see**
Successful build and running app

**What did you see instead?** Duplicate class errors

Execution failed for task ':app:checkMyAppStageDebugDuplicateClasses'.

A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable Duplicate class com.google.protobuf.DescriptorProtos found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$1 found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$DescriptorProto found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$DescriptorProto$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$DescriptorProto$ExtensionRange found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$DescriptorProto$ExtensionRange$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$DescriptorProto$ExtensionRangeOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$DescriptorProto$ReservedRange found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$DescriptorProto$ReservedRange$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$DescriptorProto$ReservedRangeOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$DescriptorProtoOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$EnumDescriptorProto found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$EnumDescriptorProto$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$EnumDescriptorProto$EnumReservedRange found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$EnumDescriptorProto$EnumReservedRange$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$EnumDescriptorProto$EnumReservedRangeOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$EnumDescriptorProtoOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$EnumOptions found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$EnumOptions$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$EnumOptionsOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$EnumValueDescriptorProto found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$EnumValueDescriptorProto$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$EnumValueDescriptorProtoOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$EnumValueOptions found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$EnumValueOptions$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$EnumValueOptionsOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$ExtensionRangeOptions found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$ExtensionRangeOptionsOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FieldDescriptorProto found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Label found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Label$1 found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Label$LabelVerifier found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Type found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Type$1 found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Type$TypeVerifier found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FieldDescriptorProtoOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FieldOptions found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FieldOptions$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FieldOptions$CType found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FieldOptions$CType$1 found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FieldOptions$CType$CTypeVerifier found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FieldOptions$JSType found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FieldOptions$JSType$1 found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FieldOptions$JSType$JSTypeVerifier found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FieldOptionsOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FileDescriptorProto found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FileDescriptorProto$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FileDescriptorProtoOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FileDescriptorSet found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FileDescriptorSet$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FileDescriptorSetOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FileOptions found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FileOptions$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FileOptions$OptimizeMode found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FileOptions$OptimizeMode$1 found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FileOptions$OptimizeMode$OptimizeModeVerifier found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$FileOptionsOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$GeneratedCodeInfo found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Annotation found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Annotation$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$AnnotationOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$GeneratedCodeInfoOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$MessageOptions found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$MessageOptions$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$MessageOptionsOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$MethodDescriptorProto found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$MethodDescriptorProto$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$MethodDescriptorProtoOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$MethodOptions found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$MethodOptions$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$MethodOptions$IdempotencyLevel found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$MethodOptions$IdempotencyLevel$1 found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$MethodOptions$IdempotencyLevel$IdempotencyLevelVerifier found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$MethodOptionsOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$OneofDescriptorProto found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$OneofDescriptorProto$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$OneofDescriptorProtoOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$OneofOptions found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$OneofOptions$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$OneofOptionsOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$ServiceDescriptorProto found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$ServiceDescriptorProto$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$ServiceDescriptorProtoOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$ServiceOptions found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$ServiceOptions$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$ServiceOptionsOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$SourceCodeInfo found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$SourceCodeInfo$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$SourceCodeInfo$Location found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$SourceCodeInfo$Location$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$SourceCodeInfo$LocationOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$SourceCodeInfoOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$UninterpretedOption found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$UninterpretedOption$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$UninterpretedOption$NamePart found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$UninterpretedOption$NamePart$Builder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$UninterpretedOption$NamePartOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0) Duplicate class com.google.protobuf.DescriptorProtos$UninterpretedOptionOrBuilder found in modules protobuf-javalite-4.28.0.jar -> jetified-protobuf-javalite-4.28.0 (com.google.protobuf:protobuf-javalite:4.28.0) and protolite-well-known-types-18.0.0.aar -> jetified-protolite-well-known-types-18.0.0-runtime (com.google.firebase:protolite-well-known-types:18.0.0)

Make sure you include information that can help us debug (full error message, exception listing, stack trace, logs). ✅

Anything else we should know about your project / environment

Initially I also had added the dependency:

      implementation "com.google.protobuf:protobuf-javalite:4.28.0"

But then with dependency analyzer I saw that it's part of protobuf-kotlin-lite, so I removed it. That didn't make a difference though.

I did a lot of googling around and seems like this is a quite common issue, unfortunately none of the proposed solutions (such as excluding certain artifacts from firebase) worked for me. They did result in different errors, but the project still didn't build. However, even if any of these solutions worked for building the project, my understanding is that firebase artifacts won't work properly, so I can't really consider these solutions seriously.

I also tried to replace implementation with protobuf and then I'm getting this error:

Execution failed for task ':core:generateDebugProto'.
> protoc: stdout: . stderr: src/google/protobuf/any.proto:158:10: "google.protobuf.Any.type_url" is already defined in file "google/protobuf/any.proto".
  src/google/protobuf/any.proto:161:9: "google.protobuf.Any.value" is already defined in file "google/protobuf/any.proto".
  src/google/protobuf/any.proto:128:9: "google.protobuf.Any" is already defined in file "google/protobuf/any.proto".

Couldn't figure out how to move forward from here, so as a last resort I decided to try older versions of protobuf and seems like v4.26.1 is the latest one that just works, without having to do any workarounds. v4.27.0 and higher cause the errors listed above.

Is there anything that could be done in order to use the latest protobuf version (at the time of writing, 4.28.0) without breaking firebase functionality?

googleberg commented 1 month ago

This appears to be a known issue: https://github.com/firebase/firebase-android-sdk/issues/5997 And the firebase team has a fix in progress: https://github.com/firebase/firebase-android-sdk/pull/5999 Unfortunately, the protobuf team doesn't have a workaround other than to wait for the firebase fix.