TestFlight SDKをAdHocビルド時のみ有効となるようにプロジェクトに組み込む

TestFlight SDKをプロジェクトに組み込む際、公式のREADMEに記載された方法だと、全てのスキーム、全てのターゲットに対してTestFlight SDKが組み込まれます。

しかし実際に必要なのはAdHocビルド時のみで、Releaseビルドには含めたくありませんしDebugビルドにも不要です。

ビルドの際に、プロジェクト設定を変更していると、切替ミスなどが起きてしまいそうなので、そういったことが起きないような形でプロジェクトに組み込んでみました。

1. TestFlight SDKのファイルをプロジェクトに組み込む

ダウンロードしたTestFlight SDKにはいくつかのファイルが含まれていますが、実際に必要なのはこの2ファイルです。
2つのファイルをドラッグ&ドロップでプロジェクトに追加し、グループ化します。(グループ化は必須ではありません)

2. AdHoc用のConfigurationを作成する

プロジェクト設定画面を開いて、Configurationsの+ボタンを押して、Duplicate "Release" Configuration します。
複製したConfigurationをAdHocと改名します。

3. プロビジョニングプロファイルを設定する

新たに増えたAdHocと、既存のDebug、Releaseのそれぞれに適切なプロビジョニングプロファイルを設定します。
AdHoc時にはAdHoc用のプロビジョニングプロファイルを、Release時にはAppStore用のプロビジョニングプロファイルを設定します。

4. AdHoc Configuration時のみ、libTestFlight.aをリンクする

プロジェクト設定画面を開いて、Build SettingsタブのOther Linker Flagsの、AdHocに-lTestFlightと-lzを追加します。
1つ目でlibTestFlight.aがリンクされ、2つ目でlibz.dylibがリンクされることになります。

5. 開発、AdHoc用のスキームと、AppStore用のスキームを分ける

Manager Schemes... から、歯車アイコンを押しDuplicateを選択します。新たに出来たスキームは、「プロジェクト名+AppSotre」とし、AppStore用のスキームと分かるようにします。

開発、AdHoc用のスキームは、以下のようにArchive時のBuild ConfigurationをAdHocに設定します。

一方で、AppStore用のスキームは、以下のようにArchive時のBuild ConfigurationにReleaseと設定します。


6. 用途に応じてスキームを切り替える

2つのスキームを作成しました。
プロジェクト名だけの方は、開発、AdHoc用ですので、Debug実行も出来ますし、ArchiveすればTestFlight SDKが組み込まれたAdHocビルドが生成されます。
プロジェクト名+AppStoreの方は、ArchiveするとAppStore用のビルドが生成されます。


以上です。
毎回、プロジェクト設定を変えて、AdHoc用ビルドとAppStore用ビルドを切り替えたりしていましたが、スキームを分けることでスキームの切替に従ってそれぞれのビルドが出来るようになりました。

(参考)
TestFlight SDK公式ドキュメント https://testflightapp.com/sdk/doc/1.0/
TestFlightのSDKをAppStore申請用ではバイナリに含めなくする方法 - basuke の日記