From a8cb1c80eb4449d724cb5541d0ab832779137b27 Mon Sep 17 00:00:00 2001 From: "Johan T. Halseth" Date: Tue, 9 Jul 2019 15:36:56 +0200 Subject: [PATCH] mobile: add README --- mobile/README.md | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 mobile/README.md diff --git a/mobile/README.md b/mobile/README.md new file mode 100644 index 00000000000..219fe13843b --- /dev/null +++ b/mobile/README.md @@ -0,0 +1,55 @@ +## Building mobile libraries + +### Prerequisites +#### protoc +Install the dependencies for genarating protobuf definitions as stated in [lnrpc docs]( +../lnrpc/README.md#generate-protobuf-definitions) + +#### gomobile +Follow [gomobile](https://github.com/golang/go/wiki/Mobile) in order to intall `gomobile` and dependencies. + +Remember to run `gomobile init` (otherwise the `lnd` build might just hang). + +Note that `gomobile` only supports building projects from `GOPATH` at this point. + +#### falafel +Install [`falafel`](https://github.com/halseth/falafel): +``` +go get -u -v github.com/halseth/falafel +``` + +### Building `lnd` for iOS +``` +make ios +``` + +### Building `lnd` for Android +``` +make android +``` + +`make mobile` will build both iOS and Android libs. + +### Libraries +After the build has succeeded, the libraries will be found in `mobile/build/ios/Lndmobile.framework` and `mobile/build/android/Lndmobile.aar`. Reference your platforms' SDK documentation for how to add the library to your project. + +#### Generating proto definitions for your language. +In order to call the methods in the generated library, the serialized proto for the given RPC call must be provided. Similarly, the response will be a serialized proto. + +In order to generate protobuf definitions for your language of choice, add the proto plugin to the `protoc` invocations found in [`gen_protos.sh`](../lnrpc/gen_protos.sh). For instance to generate protos for Swift, add `--swift_out=.` and run `make rpc`. + +### Options +Similar to lnd, subservers can be conditionally compiled with the build by setting the tags argument: + +``` +make ios tags="routerrpc" +``` + +To support subservers that have APIs with name conflicts, pass the "prefix" flag. This will add the subserver name as a prefix to each method name: + +``` +make ios tags="routerrpc" prefix=1 +``` + +### API docs +TODO(halseth)