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
と違って、インクルードファイルがなくてもエラーになりません。