gpt4 book ai didi

java - 重复的类com.google.api.Advice

转载 作者:行者123 更新时间:2023-12-03 05:19:39 25 4
gpt4 key购买 nike

我有两个支持grpc通讯的后端。
我为每个人创建了一个具有这个build.gradle的简单android项目

apply plugin: 'com.android.library'
apply plugin: 'com.google.protobuf'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
compileSdkVersion 23

defaultConfig {
versionCode 1
versionName rootProject.version
minSdkVersion 15
}
}

apply plugin: 'maven'

configurations {
pubReleaseCompile
}


android {
sourceSets {
main {
proto {
srcDir '../../protos/folder'
}
}
}

}

protobuf {

protoc { artifact = 'com.google.protobuf:protoc:3.12.2' }
generatedFilesBaseDir = "$projectDir/src/generated"
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 {
javalite {}
grpc {
option 'lite'
}
}
}
}
}

dependencies {
protobuf files('../protos')
implementation 'io.grpc:grpc-protobuf-lite:1.25.0'
implementation 'io.grpc:grpc-okhttp:1.25.0'
implementation 'io.grpc:grpc-stub:1.25.0'
implementation 'javax.annotation:javax.annotation-api:1.3.2'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

protobuf 'com.google.api.grpc:proto-google-common-protos:1.18.0'
}
客户端生成工作正常,但是当我尝试同时将它们都导入android应用程序时,会出现很多这样的错误 Duplicate class com.google.type.TimeZoneOrBuilder found in modules jetified-backend1-runtime.jar (backend1) and jetified-backend2-runtime.jar (backend2)看起来两个grpc客户端都具有相同的google类。
在我的Android应用中,我有以下build.gradle
    implementation ('backend1-client'){
exclude group: 'com.google.grpc', module: 'proto-google-common-protos'
}

implementation 'backend2-client'
我尝试了很多排除组组合,但没有一个起作用
我现在尝试从generateProtoTasks中排除google文件。有什么办法可以做到这一点?
编辑1:问题不在protos中。我认为问题在于两个后端的proto共享一些导入(例如import“google / api / annotations.proto”),然后生成重复的类
更新:我将所有proto合并到一个仓库中,并在那里产生了客户。这似乎有效。我可以将这个仓库导入我的android应用程序而不会出现问题。之所以能够做到这一点,是因为我拥有两个后端的所有权

最佳答案

两种解决方案是在同一导入下合并代码,或者以某种方式忽略Gradle中的该类(我不确定从.proto文件生成的代码是如何产生问题的):

android {
packagingOptions {
exclude '**/com.google.type.TimeZoneOrBuilder.class'
}
}

关于java - 重复的类com.google.api.Advice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64251854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com