【Swift】XcodeGenの使い方!プロジェクト(.xcodeproj)管理ツール

この記事からわかること
- XcodeGenの使い方と導入方法
- プロジェクトファイル(.xcodeproj)の管理方法
- project.ymlの記述方法
- Cannot code sign because the target does not have an Info.plist file and one is not being generated automaticallyの解決
index
[open]
\ アプリをリリースしました /
XcodeGenとは?
XcodeGenとはXcodeのプロジェクトファイル(.xcodeproj)を自動生成するコマンドラインツールです。1人での開発では発生しにくいですが、共同開発をする際にプロジェクトファイル(.xcodeproj)がコンフリクトすることがあり、その解消はややこしくわかりづらい部分が多いです。
XcodeGenを使用することでプロジェクトファイル(.xcodeproj)の設定情報を別のYAML形式のテキストファイルとして保持しておくことでそのファイルを元に何度でもプロジェクトファイル(.xcodeproj)を自動生成できるようになります。中身も見やすいためコンフリクトが起きても修正が容易く、誰でも同じ設定のプロジェクトファイル(.xcodeproj)が生成できるので環境の違いが生まれにくくなります。
設定できること
XcodeGenで生成するYAML形式のテキストファイルは「project.yml」になっていることが多いです。このファイル内にプロジェクトの設定を自身で記述していく必要があります。
設定できること
- ターゲット
- 構成
- スキーム
- カスタムビルド設定
- etc..
設定できることが多岐に渡りますが、それぞれ細かい記法があるので詳細は公式リファレンスを確認してください。
導入方法
XcodeGenはコマンドラインツールなのでプロジェクトごとにではなく、ターミナルに導入していきます。導入するにはパッケージ管理システムであるHomebrewやmintなどを使用します。
Homebrew
おすすめ記事:Homebrew(ホームブルー)のインストール方法
mint
Mintを使用する場合はコマンドの前にmint run [パッケージ名]
をつける必要があるので注意してください。
project.ymlの設置
「project.yml」は自動生成されないので自分で用意する必要があり余す。プロジェクト内に移動し以下コマンドで空のファイルを生成します。
中に以下のようにXcodeプロジェクトで必要な情報を記述します。細かいところは後述します。
プロジェクトファイル(.xcodeproj)の自動生成
「project.yml」を設置できたらxcodegen generate
コマンドを使用してプロジェクトファイル(.xcodeproj)を生成します。すでに存在する場合でも自動生成されたものに置き換わります。
成功すると以下のようなログが出力されます。
これで生成が完了したのでプロジェクトファイルを開いてみてください。正常にビルドできるはずです。
※「Cannot code sign because the target does not have an Info.plist file and one is not being generated automatically」というエラーが出たらこちらを確認してください。
project.ymlに設定できる値と記述方法
基本的にビルドするために必要な設定を紹介していきます。詳細は公式リアファレンスを参照してください。
プロジェクト名
BundleID
BundleIDはbundleIdPrefix
で始まり部分のみを指定でき、プロジェクト名と繋がり、com.dev.XcodeGenTest
となります。
Localizations
プロジェクトのLocalizationsもここから指定できます。
ターゲット
プロジェクト内のターゲットごとに細かい設定を変更できます。sources
がないとターゲットがどこのディレクトリ内を参照したら良いか識別できないので忘れないようにしてください。
info.plist
info.plist内のキーと値も設定することが可能です。Swift UIでXcodeGenを使用してみたところ、明示的にinfo.plistの設定を記述しないとエラーになるようです。これはSwift UIにはデフォルトで「info.plist」が存在しないことが原因のようです。
上記は以下の記事を参考にさせていただきました。
GitHub:マクネコアユ/SwiftUISampleWithXcodeGen
バージョンやビルド番号
プロジェクト内でのアプリのバージョンやビルド番号、開発チームは以下のように指定できます。
Cannot code sign because the target does not have an Info.plist file and one is not being generated automatically
Swift UIでXcodeGenを使用中にビルドしようとしたら以下のようなエラーが発生しました。
翻訳
これはSwift UIにはデフォルトで「info.plist」が存在しないことが原因のようで明示的にinfo.plistの設定をproject.ymlに記述しないとエラーになるようです。
ご覧いただきありがとうございました。