grpc-swift を Carthage 経由でインストールする方法
grpc-swift
grpc-swift は現時点(2018/2/2)では Carthage には対応していない
https://github.com/grpc/grpc-swift/issues/13
このブログではどうにかして、Carthage 経由でそれをインストールするための方法を説明する
動機としてはサポートされている SPM でのインストールがとても辛かったからというのが大きい
SPM のあれこれはこの手順を読んでもらえるといくつか雰囲気をつかめるかも
また下記の内容はタベリーのライセンスページをみて、grpc-swift を使っていたので ishkawa さんにコンタクトを取って教えてもらった。感謝!
手順
1.別で管理する
何はともあれ grpc-swift をフォークもしくは、
何かしら本流とは別のバージョン管理をする必要がある
これからいくつかの変更を加えるのが理由
2.xcodeproj の生成
以下のコマンドを grpc-swift で実行する
swift package generate-xcodeproj
これを実行すると SwiftGRPC.xcodeproj
というファイルが生成されるので開く
こちらのファイルもバージョン管理に入っていない場合はこれ以降で編集するので追加するといい
3. modulemap のパスの相対化
どうやら Swift Package Manager で設定された modulemap の header パスは実行環境の絶対パスが指定されるようなので、これを別環境でも動くように相対パスにする
以下を参考に BoringSSL と Czlib のそれを修正する
https://github.com/ishkawa/grpc-swift/blob/carthage-0.2.3/SwiftGRPC.xcodeproj/GeneratedModuleMap/BoringSSL/module.modulemap https://github.com/ishkawa/grpc-swift/blob/carthage-0.2.3/SwiftGRPC.xcodeproj/GeneratedModuleMap/Czlib/module.modulemap
4.zlib-example を消す
zlib-example
というビルドターゲットならびにスキームがあるので両方消す
これがあると依存関係で Carthage 実行時にこれもビルドされてしまい、エラーを吐き出す
5.SPM でインストールされた zlib を Git 管理下に置く
.build/checkouts
にあるので追加する
また指定されている zlib の URL は以下が指定されているが
https://github.com/Zewo/zlib.git
こちらは変わっていて以下になっている
https://github.com/ZewoGraveyard/CZlib.git
これが原因でエラーになった場合は一度書き換えるのがいい
6.それぞれのフレームワークのbundle identifierを正しく設定する
これを行わないと実機インストールができないので、適当に com.grpc.swift
などを以下のターゲットにつける
- gRPC
- CgRPC
- BoringSSL
- Czlib
終わりと補足
上記手順を踏むことでおそらく grpc-swift を Carthage でインストールすることが
できるようになるはず。残りやることはいつもの Carthage の手順のみ。
また直近のバージョンだと以下のエラーが頻発するので、現状だと 0.1.x 系を使うことがオススメ。