2

我想在 Android 上写一个 Grpc 客户端。我按照这个教程

这是我的外部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
// ...

With Feature... 是我在 protoc 文件中定义的类。请帮我弄清楚我的代码有什么问题。

谢谢

4

1 回答 1

1

如果您io.grpc.routeguideexample.Feature在代码中定义了 Java 类,这将与route_guide.proto文件中生成的类名冲突,从而导致您描述的错误。您可以更改您自己FeatureFeatureDatabase类的名称或包,或更改route_guide.proto以使用不同的 Java 包名称。通常,您可以查找一个目录,build/generated/source/proto/.../javalite/io/grpc/routeguideexample/以查看从您的 proto 文件中实际生成的代码。

于 2017-06-28T19:22:02.500 回答