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

著書紹介

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

この記事を書いた人

Akira Hayashi (林 晃)のアバター Akira Hayashi (林 晃) Representative(代表), Software Engineer(ソフトウェアエンジニア)

アールケー開発代表。Appleプラットフォーム向けの開発を専門としているソフトウェアエンジニア。ソフトウェアの受託開発、技術書執筆、技術指導・セミナー講師。note, Medium, LinkedIn
-
Representative of RK Kaihatsu. Software Engineer Specializing in Development for the Apple Platform. Specializing in contract software development, technical writing, and serving as a tech workshop lecturer. note, Medium, LinkedIn

目次