首页 > 解决方案 > android studio 和 Java 服务器之间的通信。问题 GRPC

问题描述

我需要在 android studio 应用程序和 java 服务器之间建立通信,我尝试了 XMLRPC 但它不起作用,我目前正在尝试 GRPC 但不明白如何从 android studio 上的 proto 文件生成代码。

这是我在服务器端的代码,

public class HelloWorldServer extends HelloServiceGrpc.HelloServiceImplBase {

    @Override
    public void hello( HelloRequest request, StreamObserver<HelloResponse> responseObserver){
        String greeting = new StringBuilder()
                .append("Hello, ")
                .append(request.getFirstName())
                .append(" ")
                .append(request.getLastName())
                .toString();

        HelloResponse response = HelloResponse.newBuilder()
                .setGreeting(greeting)
                .build();

        responseObserver.onNext(response);
        responseObserver.onCompleted();
    }

任何想法 ?

标签: javaandroidgrpc

解决方案


如果您查看gRPC 存储库中的hello world 示例,代码生成是由protobuf-gradle-plugin完成的

apply plugin: 'com.google.protobuf'

...

protobuf {
    protoc { artifact = 'com.google.protobuf:protoc:3.12.0' }
    plugins {
        grpc { 
            artifact = 'io.grpc:protoc-gen-grpc-java:1.34.0-SNAPSHOT' // CURRENT_GRPC_VERSION
        }
    }
    generateProtoTasks {
        all().each { task ->
            task.builtins {
                java { option 'lite' }
            }
            task.plugins {
                grpc { // Options added to --grpc_out
                    option 'lite' 
                }
            }
        }
    }
}

在示例中,proto 文件被放入src/main/proto,这是插件将拾取的源 proto 文件的默认位置(或更正式地说,SourceDirectorySet)。

应用 protobuf-gradle-plugin 会自动将 gradle 任务添加到为您生成代码的构建中。生成的代码也将由插件提供给 Java 编译。所以你基本上不需要手动做任何事情。您可以在其README中找到有关该插件如何工作的更多信息。


推荐阅读