【问题标题】:Communication between android studio and Java server. Problem GRPCandroid studio 和 Java 服务器之间的通信。问题 GRPC
【发布时间】:2020-10-20 08:12:36
【问题描述】:

我需要在 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();
    }

有什么想法吗? ????

【问题讨论】:

    标签: java android grpc


    【解决方案1】:

    如果您查看 gRPC 存储库中的 hello world example,代码生成是由 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 中找到有关该插件如何工作的更多信息。

    【讨论】:

      最近更新 更多