Xcode プロジェクト基本設定 - shirajira/family-account-ios GitHub Wiki
前編:
Xcode プロジェクト新規作成
本稿では,開発初期によく設定する項目を雑多にまとめる。
プロジェクトの性質や運用方針によっては設定不要な項目もあるため,必要なものを適宜選択してください。
こちらを参考に設定してください。
Git 特定のファイルをコミット対象から除外
Xcode 左メニューにある Project navigator -> Project name -> PROJECT を開く。
PROJECT -> Info -> Deployment Target に,サポートする iOS の最低バージョンを設定する。
サポートする OS の範囲が広くなればなるほど開発コストも大きくなるので注意すること。
最新のメジャーバージョンのひとつ前くらいまでが現実的か。
PROJECT -> Info -> Localizations に,サポートする言語を設定する。
初期設定は英語のみ。
関連:
Xcode アプリのローカライズ
Xcode 左メニューにある Project navigator -> Project name -> TARGETS -> Project name(〜Tests ではないもの) を開く。
TARGETS -> General -> Identity に以下を設定する。
- Display Name ... ユーザに表示するアプリ名
- Bundle Identifier ... バンドルID
- Version ... アプリのバージョン番号
- Build ... 同一 Version のビルド番号
先ほど Deployment Target で指定した iOS のバージョンが表示されているはず。
サポートするデバイス(iPhone, iPad, Mac)にチェックを入れる。
Device Orientation にはサポートするデバイスの向きを設定する。
こちらを参考に設定してください。
Xcode テスト環境を設定する
SceneDelegate とは iOS 13 から実装された新しいライフサイクル。
これを活用すると,ひとつのアプリに対して複数のインスタンスを生成できるようになる。
SceneDelegate の実装は任意であるため,複数起動を想定しないのであればいっそ削除してしまったほうがヘルシーな構成になる。
筆者は問答無用で削除している。
ちなみに AppDelegate は必須。削除してはいけない。
Xcode で新規作成したプロジェクトには Build Configuration として Debug と Release が用意されている。
しかし Staging に相当する環境設定は用意されていないため,必要な場合は自分で追加する必要がある。
PROJECT -> Info -> Configurations の + から,ベースとする設定(Debug または Release)を選択して追加(複製)してください。
iOS 上では Bundle ID を変えることによって異なるアプリケーションとしてインストールすることができる。
異なる環境設定のアプリケーションを同一端末上にインストールしたい場合はこの設定が必要。
例えば以下のように設定することが多い。
環境 | Bundle ID |
---|---|
開発環境 | com.example.myapp.debug |
ステージング環境 | com.example.myapp.staging |
本番環境 | com.example.myapp |
TARGETS -> Build Settings -> Packaging -> Product Bundle Identifier から,各環境用の Bundle ID を設定してください。
環境によってアプリのアイコンを変更するとよりわかりやすい。
TARGETS -> Build Settings -> Asset Catalog Compiler - Options -> Asset Catalog App Icon Set Name から,各環境用のアイコンセットを選択してください。
アイコンセットはあらかじめ Assets.xcassets
以下に登録しておく必要がある。
以下のようなコード切り替えを実現するためには,環境ごとに専用のマクロを定義する必要がある。
#if DEBUG
print("Debug")
#elseif STAGING
print("Staging")
#else
print("Release")
#endif
TARGETS -> Build Settings -> Swift Compiler - Custom Flags -> Active Compilation Conditions
環境 | マクロ |
---|---|
Debug | DEBUG |
Staging | STAGING |
Release |
TARGETS -> Build Settings -> Swift Compiler - Custom Flags -> Other Swift Flags
環境 | マクロ |
---|---|
Debug | -D DEBUG |
Staging | -S STAGING |
Release |
*Release には何も設定しなくてOK。
米国の輸出コンプライアンスにより,独自の暗号化技術を用いている場合は適切なドキュメントを提出する必要がある。
App Store 審査提出時に使用していないことをいちいち回答しないといけないため,それをスキップするための設定となる。
なお,HTTPS など広く普及している暗号化技術はこのコンプライアンスの対象外となっている。
当然,独自の暗号化技術を採用している場合はこの設定はせずに,適切なドキュメントを Apple に提出しましょう。
Info.plist
を右クリックして,Open As > Source Code から ITSAppUsesNonExemptEncryption
キーを追加して false
を設定する。
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
または,Open As > Property List から,App Uses Non-Exempt Encryption を追加して NO を設定する。
参考:
App Store Connect の Missing Compliance をなくす方法 - Qiita
アーカイブ時のビルド設定を Release にする。
こうすることにより Release 環境のアプリケーションを App Store に提出することができる。
Edit Scheme... -> Archive -> Build Configuration を Release にする。