XcodeGen を試してみた
Xcode でファイルを追加したりすると、そのパスは設定ファイルの*.xcodeproj
に自動で記録されていきます。
このファイルはあくまで自動管理のため、例えばコンフリクトのマージ作業など、手動で編集するのは骨が折れます。
XcodeGen は、専用の設定ファイルにyaml 形式で記述すると*.xcodeproj
を生成してくれるツールです。
これを使うことで上記の煩わしさが軽減されるようです。
- XcodeGenによる新時代のiOSプロジェクト管理 - クックパッド開発者ブログ
- Xcode Previewsを用いたUIKitベースのプロジェクトの開発効率化 - Mercari Engineering Blog
ということで、自分も試してみようと思います。
試したこと
検証環境
基本的な設定は下記の記事となります。 macOS に自分好みのモバイルアプリ開発環境を整えてみた | もくもくログ
2020/02/02 時点ではXcode 11.3.1 が最新だったので、それにアップデートしました。
https://developer.apple.com/documentation/xcode_release_notes/xcode_11_3_1_release_notes
やってみた手順
XcodeGen の導入 → iOS プロジェクトの構築手順と段階を踏みました。 そして実際に実機インストールしてみて構成が切り替わるかを検証しました。
XcodeGen の導入手順
- Xcode 11.3.1 をインストールする(公式にもXcode 11 以上と書いてあったため)
brew install xcodegen
を実行する(Homebrew を採用している環境のため)
iOS プロジェクトの構築手順
- Xcode を起動し、プロジェクトを作成する
- "Create a new Xcode project" を選択する
- "Single View App" を選択する
- プロジェクト情報を設定する
- "Product Name" に"D" を設定する
- あとは適当に設定する
- コマンド入力できるところで、手順1の配置場所に移動する
- 手順2の場所で
project.yml
を新規作成する - 手順3のファイルにサンプルの記述をコピペして保存する
name: MyProject
options:
bundleIdPrefix: com.myapp
packages:
Yams:
url: https://github.com/jpsim/Yams
from: 2.0.0
targets:
MyApp:
type: application
platform: iOS
deploymentTarget: "10.0"
sources: [MyApp]
settings:
configs:
debug:
CUSTOM_BUILD_SETTING: my_debug_value
release:
CUSTOM_BUILD_SETTING: my_release_value
dependencies:
- target: MyFramework
- carthage: Alamofire
- framework: Vendor/MyFramework.framework
- sdk: Contacts.framework
- sdk: libc++.tbd
- package: Yams
MyFramework:
type: framework
platform: iOS
sources: [MyFramework]
project.yml
に手順1の設定を反映していく
name: D
options:
bundleIdPrefix: "手順1で設定したOrganization Identifier"
targets:
D:
type: application
platform: iOS
deploymentTarget: "13.0"
sources: [D]
settings:
configs:
debug:
CUSTOM_BUILD_SETTING: my_debug_value
release:
CUSTOM_BUILD_SETTING: my_release_value
xcodegen generate
を実行する- 手順6で生成したxcodeproj をXcode で開く
- 署名設定する
- 実機にインストールする
残り課題
- CocoaPods, Carthage などの依存関係の設定方法
- workspace ファイルがないけど、問題ないかの確認
- デバッグ用の設定、本番用の設定などの切り替え方法