クイックスタート
このガイドでは、簡単な動作例を使用して、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
デバイスからクライアントアプリを起動します。
Nameボックスに「Alice」と入力し、Sendをクリックします。次の応答が表示されます。
Hello Alice
おめでとうございます!gRPCを使用してクライアント-サーバーアプリケーションを実行しました。
gRPCサービスを更新
このセクションでは、追加のサーバーメソッドを追加してアプリケーションを更新します。 gRPCサービスは、プロトコルバッファ を使用して定義されます。 .proto
ファイルでサービスを定義する方法の詳細については、基本チュートリアルを参照してください。今のところ、サーバーとクライアントスタブの両方に、クライアントからHelloRequest
パラメータを受け取り、サーバーからHelloReply
を返すSayHello()
RPCメソッドがあり、メソッドが次のように定義されていることだけを知っておく必要があります。
// 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;
}
protos/src/main/proto/io/grpc/examplesフォルダからhelloworld/hello_world.proto
を開き、新しい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;
}
ファイルを保存することを忘れないでください!
アプリを更新
サンプルをビルドすると、ビルドプロセスによって、生成されたgRPCクライアントおよびサーバークラスを含むHelloWorldProtoGrpcKt.kt
が再生成されます。これにより、リクエストとレスポンスの型を生成、シリアライズ、および取得するためのクラスも再生成されます。
ただし、サンプルアプリの手書き部分で新しいメソッドを実装して呼び出す必要があります。
サーバーを更新
Kotlinクイックスタートページのサーバーの更新に記載されている指示に従ってください。
クライアントを更新
次の手順を実行します。
client/src/main/kotlin/io/grpc/examplesフォルダから
helloworld/MainActivity.kt
を開きます。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
デバイスからクライアントアプリを起動します。
Messageボックスに「Alice」と入力し、Sendをクリックします。次の応答が表示されます。
Hello Alice Hello again Alice