iOSアプリのプロジェクトファイルで、オープンソースやサンプルコードなどとして配布する予定のときには、コードサイニングの設定をプロジェクトファイルに設定したくないことがあります。しかし、ローカルで作業中はコードサイニングの設定を行わないと、デバイスにインストールできないので設定が必要です。
このようなときには、コードサイニングの設定にビルド設定ファイルを使うと便利です。
ビルド設定ファイルの作成
Xcodeのビルド設定ファイルの作成方法については、以下の記事を参照してください。

上記の記事を参考に、次の3つのビルド設定ファイルを作成します。
Debug.xcconfig
Release.xcconfig
Signing.xcconfig
Debug.xcconfig
をデバッグビルド、Release.xcconfig
をリリースビルドに設定します。
Debug.xcconfig
とRelease.xcconfig
には以下の様に入力し、Signing.xcconfig
をインクルードするようにします。
#include? "Signing.xcconfig"
コードサイニングを設定する
Xcodeでは、コードサイニングの設定は次の2箇所のいずれかで行います。
- 各ターゲットの
Signing & Capabilities
タブ Build Settings
タブのSigning
Signing & Capabilitiesタブ
各ターゲットのSigning & Capabilities
タブはターゲット固有のコードサイニングの設定を行います。このタブで設定した値はターゲットのBuild Settings
のSigning
にも設定されます。

設定項目はSigning
にまとまっています。
設定項目 | 説明 |
---|---|
Automatically manage signing | Xcode管理にするか |
Team | デベロッパーチーム |
Bundle Identifier | バンドル識別子 |
Provisioning Profile | プロビジョニングプロファイル |
Signing Certificate | 証明書 |
Build Settingsタブ
Build Settings
タブのSigning
にコードサイニング関連の設定がまとまっています。Signing & Capabilities
タブとBuild Settings
タブは同期するようになっています。Build Settings
タブで設定を変更すると、Signing & Capabilities
タブにも反映されます。
また、Signing & Capabilities
タブはプロジェクトの設定にはありませんが、Build Settings
タブはプロジェクトの設定にも入っています。
私は通常は、ターゲットの設定では設定せず、プロジェクトの設定のBuild Settings
タブで設定するようにしています。理由は、プロジェクトに含まれる全ターゲットで同じコードサイニング設定を使用するためです。

コードサイニングに関する設定は次のものです。
設定項目 | 説明 |
---|---|
Code Signing Identity | 証明書 |
Code Signing Style | Xcode管理にするか |
Development Team | デベロッパーチーム |
Provisioning Profile | プロビジョニングプロファイル |
プロジェクトファイルの設定をクリアする
ビルド設定ファイルでコードサイニングの設定を変更する前に、プロジェクトファイルに設定されている値をクリアします。Xcodeはプロジェクトファイルとビルド設定ファイルの両方に設定が書かれていると、プロジェクトファイルの設定を優先します。
次のように操作します。
(1) プロジェクトの設定のBuild Settings
タブのSigning
内の以下の設定で、太字になっているものがあるか確認します。
Code Signing Identity
Development Team
Code Signing Style
Provisioning Profile
(2) 太字になっている項目を選択し、Delete
キーを押します。太字になっている項目は、継承した値、または、デフォルト値から変更されている項目で、Delete
キーでクリアすることで、設定がクリアされます。
(3) 同様の操作をターゲットの設定についても行います。
ビルド設定ファイルを編集する
Signing.xcconfig
を編集して、コードサイニングを設定します。設定する項目は次の4つです。
CODE_SIGN_STYLE
DEVELOPMENT_TEAM
CODE_SIGN_IDENTITY
PROVISIONING_PROFILE_SPECIFIER
CODE_SIGN_STYLE
CODE_SIGN_STYLE
はXcode管理かどうかを設定します。次のいずれかの値を指定します。
Automatic
:Automatically manage signing
をオンにするManual
:Automatically manage signing
をオフにする
DEVELOPMENT_TEAM
DEVELOPMENT_TEAM
はデベロッパーチームを設定します。値はチームIDです。チームIDはAppleデベロッパーサイトのアカウント情報のMembership Details
ページのTeam ID
に書かれています。
CODE_SIGN_IDENTITY
CODE_SIGN_IDENTITY
はコードサイニングに使用する証明書を設定します。Xcodeで表示される名称を指定します。例えば、Automatic
の場合はApple Development
などです。キーチェーンに入っている証明書の場合はDeveloper ID Application: Akira Hayashi (XXXXXXXXXX)
のようにチームIDまで含めます。(XXXXXXXXXX
は実際にはチームID)
PROVISIONING_PROFILE_SPECIFIER
PROVISIONING_PROFILE_SPECIFIER
はプロビジョニングプロファイルを指定します。プロビジョニングプロファイル名、または、UUIDで指定します。
設定ファイルの例
次のコードは、Signing.xcconfig
のファイル例です。
CODE_SIGN_STYLE = Automatic
DEVELOPMENT_TEAM = ABCDEFGHIJ
CODE_SIGN_IDENTITY = Apple Development
PROVISIONING_PROFILE_SPECIFIER = ExampleProfile
Gitの管理対象から除外する
配布するファイルにコードサイニングの設定が入らないようにすることを目的にしているので、Signing.xccconfig
をGitの管理対象から外します。Gitのリポジトリに含まれないので、ファイルが無いときにビルド出来ない可能性があるので、Debug.xcconfig
とRelease.xcconfig
でSigning.xcconfig
をインクルードするときに、#include?
を使っています。#include
と違って、インクルードファイルが無くてもエラーになりません。