我想在Android上编写一个Grpc客户端。我关注higher precedence
这是我的外build.gradle
个文件:
apply plugin: 'java'
apply plugin: 'com.google.protobuf'
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.0"
}
}
protobuf {
protoc {
artifact = "com.google.protobuf:protoc:3.2.0"
}
plugins {
grpc {
artifact = 'io.grpc:protoc-gen-grpc-java:1.3.0'
}
}
generateProtoTasks {
all()*.plugins {
grpc {}
}
}
}
allprojects {
repositories {
jcenter()
mavenLocal()
}
}
这是我的内部文件build.gradle
文件:
dependencies {
compile 'com.android.support:appcompat-v7:23.+'
// You need to build grpc-java to obtain these libraries below.
compile 'io.grpc:grpc-okhttp:1.3.0' // CURRENT_GRPC_VERSION
compile 'io.grpc:grpc-protobuf-lite:1.3.0' // CURRENT_GRPC_VERSION
compile 'io.grpc:grpc-stub:1.3.0' // CURRENT_GRPC_VERSION
compile 'javax.annotation:javax.annotation-api:1.2'
}
当我尝试构建项目时,我总是遇到错误:
Error:(14, 15) error: duplicate class: io.grpc.routeguideexample.Feature
Error:(13, 15) error: duplicate class: io.grpc.routeguideexample.FeatureDatabase
// ...
使用Feature
...是我在protoc文件中定义的类。请帮我弄清楚我的代码中有什么问题。
由于
答案 0 :(得分:0)
如果您在代码中定义了Java类io.grpc.routeguideexample.Feature
,则会与route_guide.proto
文件中生成的类名冲突,从而导致您所描述的错误。您可以更改自己的Feature
和FeatureDatabase
类的名称或包,也可以更改route_guide.proto
以使用其他Java包名称。通常,您可以查找类似build/generated/source/proto/.../javalite/io/grpc/routeguideexample/
的目录,以查看原始文件中实际生成的代码。