いつの間にかGoogleMaps SDKをCarthage経由でいれられるようになっていました。
個人的にCocoaPodsで管理するライブラリを減らしたいと思っていたところなのでこれは助かりますね。
上記リンクに書いてあるとおりにプロジェクトファイルをいじればOKなのですが、XcodeGenを使っている場合はプロジェクトファイルではなく設定ファイルを書き換える必要があります。
追記した内容としてはこんな形です。
targets: HogeHogeApp: type: application platform: iOS sources: - path: HogeHogeApp - path: Carthage/Build/iOS/GoogleMaps.framework/Resources/GoogleMaps.bundle optional: true type: folder dependencies: - carthage: GoogleMaps embed: false - carthage: GoogleMapsBase embed: false - carthage: GoogleMapsCore embed: false - sdk: libc++.tbd - sdk: libz.tbd settings: base: OTHER_LDFLAGS: $(inherited) $(OTHER_LDFLAGS) -ObjC
それぞれ追記した内容の説明。
1. GoogleMaps, GoogleMapsBase, GoogleMapsCoreのリンク
dependencies: - carthage: GoogleMaps embed: false - carthage: GoogleMapsBase embed: false - carthage: GoogleMapsCore embed: false
Carthageでビルドするとこれらのフレームワークを吐き出すので、dependenciesに指定します。
プレミアムプランを利用している場合はGoogleMapsM4Bの追加も必要です。
dependencies: ... - sdk: libc++.tbd - sdk: libz.tbd
依存関係の解決として必要になるのでこれも指定します。
3. Other Linker FlagsにObjCを追加
settings: base: OTHER_LDFLAGS: $(inherited) $(OTHER_LDFLAGS) -ObjC
ドキュメントに記載があったのでそのまま追加。
4. GoogleMaps.bundleをワークスペースに追加
sources: - path: HogeHogeApp - path: Carthage/Build/iOS/GoogleMaps.framework/Resources/GoogleMaps.bundle optional: true type: folder
こちらもドキュメントに記載がありますが、この作業を行わないとビルドは通っても起動時にGoogle Maps SDKが例外を吐いて落っこちますので必ずやりましょう。