快速入门
本指南通过一个简单可用的示例,帮助您在 Android 上开始使用 Kotlin gRPC。
快速入门
先决条件
Kotlin 1.3 或更高版本
JDK 7 或更高版本
Android SDK,API 级别 16 或更高
安装 Android Studio 或 Android 命令行工具。
通过设置以下环境变量,让其他工具和脚本知道您的 Android SDK 所在位置
export ANDROID_SDK_ROOT="<path-to-your-android-sdk>"
一台配置了 USB 调试 的 Android 设备,或一个 Android 虚拟设备
注意
gRPC Kotlin 不支持在 Android 设备上运行服务器。对于本快速入门,Android 客户端应用将连接到在本地(非 Android)计算机上运行的服务器。获取示例代码
示例代码是 grpc-kotlin 仓库的一部分。
将仓库下载为 zip 文件 并解压,或者克隆仓库
git clone https://github.com/grpc/grpc-kotlin
切换到 examples 目录
cd grpc-kotlin/examples
运行示例
编译服务器
./gradlew installDist
运行服务器
./server/build/install/server/bin/hello-world-server Server started, listening on 50051
在另一个终端中,构建客户端并将其安装到您的设备上
./gradlew :android:installDebug
从您的设备启动客户端应用。
在名称框中输入“Alice”并点击发送。您将看到以下响应
Hello Alice
恭喜!您刚刚运行了一个使用 gRPC 的客户端-服务器应用程序。
更新 gRPC 服务
在本节中,您将通过添加一个额外的服务器方法来更新应用程序。gRPC 服务使用 协议缓冲区 定义。要了解如何在 .proto
文件中定义服务的更多信息,请参阅 基础教程。目前,您只需要知道服务器和客户端存根都有一个 SayHello()
RPC 方法,该方法从客户端接收 HelloRequest
参数,并从服务器返回 HelloReply
,并且该方法的定义如下
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
打开 helloworld/hello_world.proto
文件,位于 protos/src/main/proto/io/grpc/examples 文件夹中,并添加一个新的 SayHelloAgain()
方法,具有相同的请求和响应类型
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
// Sends another greeting
rpc SayHelloAgain (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
记得保存文件!
更新应用程序
当您构建示例时,构建过程会重新生成 HelloWorldProtoGrpcKt.kt
,其中包含生成的 gRPC 客户端和服务器类。这还会重新生成用于填充、序列化和检索我们请求和响应类型的类。
但是,您仍然需要在示例应用程序的手写部分中实现和调用新方法。
更新服务器
按照 Kotlin 快速入门页面中 更新服务器 提供的说明进行操作。
更新客户端
按照以下步骤操作
打开
helloworld/MainActivity.kt
文件,位于 client/src/main/kotlin/io/grpc/examples 文件夹中。找到包含调用
sayHello()
的函数。您将看到以下代码行val response = greeter.sayHello(request) responseText.text = response.message
添加对
sayHelloAgain()
的调用,并更改响应消息的创建方式。用以下代码替换上述代码行val response = greeter.sayHello(request) val againResponse = greeter.sayHelloAgain(request) val message = "${response.message}\n${againResponse.message}" responseText.text = message
运行更新后的应用程序
像之前一样运行客户端和服务器。在 examples
目录下执行以下命令:
编译服务器
./gradlew installDist
运行服务器
./server/build/install/server/bin/hello-world-server Server started, listening on 50051
在另一个终端中,构建客户端并将其安装到您的设备上
./gradlew :android:installDebug
从您的设备启动客户端应用。
在消息框中输入“Alice”并点击发送。您将看到以下响应
Hello Alice Hello again Alice