こんにちは間藤です。
iOS9がリリースされ、最近はXcode7を利用する機会も増えてきました。(今のところ状況に応じてXcode6と使い分けています)
ところで、既存のプロジェクトをXcode7で開くと、ビルド警告で推奨されるビルド設定を適用するように促されます。今回はこの警告に関して取り上げてみようと思います。
警告の内容
他の要素が入り込まないよう、まずXcode6でサンプルプロジェクトを新規に生成します。これに何の修正も加えないままそのプロジェクトをXcode7で開きます。すると以下のようなビルド警告が出ます。
これを選択すると、詳細を示すダイアログが表示されます。
最初の2つは、Bundle identifierの指定に関するものです。
3つ目の警告は、Swiftの単体テストに関する推奨設定のようです。
指摘に従って設定変更すると、ビルド設定が以下のように追加/変更されます。
Bundle identifierをconfiguration別に指定できるようになります。
また、Enable Testable設定がDebug configurationではYESに変更されます。
Bundle identifierの切り替え
これまでもBundle identifierの切り替えは可能でしたが、
今回ビルド設定にBundle identifierをconfiguration別に指定できるようになったので、わかりやすくなったのではないかと思います。
例えば、Staging環境用にconfigurationを追加し、
追加したconfigurationのBundle identifierを以下のように変更します。
さらに、Stagingスキーマを追加、
そして、以下のようなビルドスクリプトを用意して(エラーハンドリングは一切考慮してないのでご注意ください)、
SCHEME_NAME=$1 OUTPUT_PATH=~/build ARCHIVE_PATH=${OUTPUT_PATH}/ExampleApp.xcarchive IPA_PATH=${OUTPUT_PATH} xcodebuild archive -scheme ${SCHEME_NAME} -archivePath ${ARCHIVE_PATH} xcodebuild -exportArchive -archivePath "${ARCHIVE_PATH}" \ -exportPath "${IPA_PATH}" \ -exportOptionsPlist exportOptionsPlist.plist
ビルドを実行します。
$ ./build.sh Staging
念のため生成されたipaファイルを展開してplistの中身を確認します。
目論見通りになっているようです。
なお、上のスクリプトでは、新しく追加されたexportOptionsPlistオプションを使用しています。指定するplistに設定する内容は、
$ xcodebuild -h
で確認できます。iOS9で追加された「App Thinning」に関する項目などがあります。