ビルド設定ファイルを使ってXcodeのコードサイニングを設定する

iOSアプリのプロジェクトファイルで、オープンソースやサンプルコードなどとして配布する予定のときには、コードサイニングの設定をプロジェクトファイルに設定したくないことがあります。しかし、ローカルで作業中はコードサイニングの設定を行わないと、デバイスにインストールできないので設定が必要です。

このようなときには、コードサイニングの設定にビルド設定ファイルを使うと便利です。

目次

ビルド設定ファイルの作成

Xcodeのビルド設定ファイルの作成方法については、以下の記事を参照してください。

上記の記事を参考に、次の3つのビルド設定ファイルを作成します。

  • Debug.xcconfig
  • Release.xcconfig
  • Signing.xcconfig

Debug.xcconfigをデバッグビルド、Release.xcconfigをリリースビルドに設定します。

Debug.xcconfigRelease.xcconfigには以下の様に入力し、Signing.xcconfigをインクルードするようにします。

#include? "Signing.xcconfig"

コードサイニングを設定する

Xcodeでは、コードサイニングの設定は次の2箇所のいずれかで行います。

  • 各ターゲットのSigning & Capabilitiesタブ
  • Build SettingsタブのSigning

Signing & Capabilitiesタブ

各ターゲットのSigning & Capabilitiesタブはターゲット固有のコードサイニングの設定を行います。このタブで設定した値はターゲットのBuild SettingsSigningにも設定されます。

設定項目は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.xcconfigRelease.xcconfigSigning.xcconfigをインクルードするときに、#include?を使っています。#includeと違って、インクルードファイルが無くてもエラーになりません。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Akira Hayashiのアバター Akira Hayashi 代表・ソフトウェアエンジニア

アプリ開発が好きなアプリ開発者。このブログは学習メモを記事にしたテックブログです。仕事ではアプリ開発をメインに、技術書の執筆やセミナーの講師などもしています。業務や著書のサイトはこちらです→ アールケー開発

目次