У меня есть две мои собственные библиотеки Android libA и libB, которые используют protobuf. Когда я добавляю один из них в свой проект приложения для Android, все в порядке, но если я добавляю оба, у меня возникает ошибка при создании проекта приложения:
Duplicate class com.google.api.Advice found in modules classes.jar (libA) and classes.jar (libB)
Duplicate class com.google.api.Advice$1 found in modules classes.jar (libA) and classes.jar (libB)
Duplicate class com.google.api.Advice$Builder found in modules classes.jar (libA) and classes.jar (libB)
Duplicate class com.google.api.AdviceOrBuilder found in modules classes.jar (libA) and classes.jar (libB)
Duplicate class com.google.api.AnnotationsProto found in modules classes.jar (libA) and classes.jar (libB)
Duplicate class com.google.api.AuthProto found in modules classes.jar (libA) and classes.jar (libB)
Duplicate class com.google.api.AuthProvider found in modules classes.jar (libA) and classes.jar (libB)
Duplicate class com.google.api.AuthProvider$1 found in modules classes.jar (libA) and classes.jar (libB)
Duplicate class com.google.api.AuthProvider$Builder found in modules classes.jar (libA) and classes.jar (libB)
Duplicate class com.google.api.AuthProviderOrBuilder found in modules classes.jar (libA) and classes.jar (libB)
Duplicate class com.google.api.AuthRequirement found in modules classes.jar (libA) and classes.jar (libB)
.................
Я использую Gradle в проектах библиотек и проектах приложений. Я добавляю библиотеки в проект приложения как:
dependencies {
implementation "com.libA"
implementation "com.libB"
}
В обеих библиотеках у меня почти одинаковый конфиг:
apply plugin: 'com.android.library'
apply plugin: 'com.google.protobuf'
apply from: rootProject.file("gradle/versions.gradle")
android {
compileSdkVersion versions.sdk.compile
defaultConfig {
minSdkVersion versions.min
targetSdkVersion versions.compile
versionCode versions.code
versionName versions.name
}
sourceSets {
main {
jni.srcDirs = []
jniLibs.srcDirs = ['src/main/libs']
}
}
}
protobuf {
protoc {
artifact = "com.google.protobuf:protoc:3.6.1"
}
plugins {
javalite {
artifact = "com.google.protobuf:protoc-gen-javalite:3.0.0"
}
grpc {
artifact = "io.grpc:protoc-gen-grpc-java:1.25.0"
}
}
generateProtoTasks {
all().each { task ->
task.plugins {
task.builtins {
remove java
}
javalite {}
grpc {
// Options added to --grpc_out
option 'lite'
}
}
}
}
}
dependencies {
protobuf "com.google.protobuf:protobuf-lite:3.0.1"
protobuf "com.google.api.grpc:proto-google-common-protos:1.12.0"
implementation "io.grpc:grpc-okhttp:1.25.0"
implementation "io.grpc:grpc-protobuf-lite:1.25.0"
implementation "io.grpc:grpc-stub:1.25.0"
//other dependencies
}
В результате у меня одинаковые классы в обеих зависимостях (скриншот одного из них), это выдает повторяющуюся ошибку: библиотеки
Исключение группы/модуля не помогает. Как я могу решить эту проблему?