Xcode
Overview
Xcodeについて記載しているセクション。
Project (.xcodeproj)
iOSやwatchOSなど複数Targetsをグループ化するのが Project
Targetのベースとなる設定はProjectの build settings で行い、Target固有の設定はそれぞれのTarget内の build settings でやる感じです。
XcodeはProjectを開き、Targetをビルドする、ということですね。
Workspace (.xcworkspace)
複数のProjectを同じレベルで束ねることができるのが Workspace
PackegeMangerにCocoapodsを使用している場合はよく見る。
xcodeproj vs xcworkspace
以上のことから、使い分けとしては以下のようになります。
- 1つのメインプロジェクトがあり、そこからの参照しかない場合は Subproject として組み込む
- 複数のプロジェクトからの依存がある場合、 Workspace として束ねる
Team
Xcodeに登録済みの「Apple ID」を選択する。
シュミレーターで動作確認をする場合には設定の必要はないが、実機転送を行う際には設定が必要。
Product
これはビルドされたバイナリ(例:Runner.app)が入る場所。 実行可能な成果物を Xcode が一時的に表示する。
Runner
Flutter プロジェクトにおいて、Runner は iOS 側の Xcode プロジェクトであり、Flutter で書かれたアプリの iOS 実装をビルド・署名・配布するための入り口となる部分。
主に以下のような役割を担う。
Runner.xcodeproj- Xcode プロジェクト本体(依存関係なしの単体構成)
Runner.xcworkspace- CocoaPods で管理された依存ライブラリ(Pods)を含む統合プロジェクト
- Flutter では基本的にこちらを開く必要がある。
この Runner プロジェクトには、アプリの以下のような設定が含まれている。
- バンドルID(例:com.example.app)
- バージョン番号(Version / Build)
- サポートするデバイスや向き(iPhone/iPad、Portrait/Landscape)
- 実行対象(ターゲット)およびコード署名設定(Team / Provisioning Profile)
この Runner は Xcode プロジェクトのターゲット名 にもなっており、アプリのビルドや署名はこのターゲットを元に行われる。
生成される構成の例(ios/配下)
ios/
├── Runner/
│ ├── AppDelegate.swift # エントリーポイント
│ ├── Assets.xcassets/ # アイコンや画像などのアセット
│ ├── Info.plist # アプリの設定(バージョン、権限など)
│ └── main.m(Obj-C)or main.swift
├── Runner.xcodeproj/ # Xcode プロジェクト(構成ファイル)
├── Runner.xcworkspace/ # CocoaPods 対応時に生成される統合プロジェクト
├── Podfile # CocoaPods 設定ファイル
└── Pods/ # CocoaPods による依存ライブラリ
Pods
Pods は CocoaPods を通して導入された外部ライブラリ群で、Flutter プラグイン(firebase, url_launcher など)の iOS 側依存をまとめて管理する役割を持つ。
通常、Flutter プロジェクトでは自動的に生成され、開発者は pubspec.yaml にプラグインを追加するだけで iOS 側にも反映される。
CocoaPods によって管理されている依存ライブラリ(例:RevenueCat SDK、Firebaseなど) 自動生成されるため、基本的には直接触らないことが多い。
関連ファイル
Podfile: 依存関係の定義ファイルPods/: 実際にインストールされたライブラリ群Development Pods: 開発中またはローカルで直接参照している PodFrameworks: ビルド後にリンクされる iOS フレームワークTargets Support Files: 各 Pod のビルド設定情報
CocoaPods を利用している場合は必ず
Runner.xcworkspaceを開くようにし、.xcodeprojは使わないように注意する。