ios_app を追加
285
ios_app.md
Normal file
285
ios_app.md
Normal file
@@ -0,0 +1,285 @@
|
||||
# iOS App Store ビルドガイド
|
||||
|
||||
UE5プロジェクトをiOS App Storeにアップロードするための手順。
|
||||
|
||||
## 必要なもの
|
||||
|
||||
### Apple Developer 証明書
|
||||
|
||||
| 証明書 | 用途 |
|
||||
|--------|------|
|
||||
| Apple Distribution | アプリ署名 |
|
||||
|
||||
確認方法:
|
||||
```bash
|
||||
security find-identity -v -p codesigning
|
||||
```
|
||||
|
||||
### Provisioning Profile
|
||||
|
||||
1. [Apple Developer](https://developer.apple.com/account/resources/profiles/list) からダウンロード
|
||||
2. プロジェクトルートに `embedded.mobileprovision` として配置
|
||||
|
||||
```bash
|
||||
# 内容確認
|
||||
security cms -D -i embedded.mobileprovision
|
||||
```
|
||||
|
||||
### App Store Connect API Key
|
||||
|
||||
1. [App Store Connect](https://appstoreconnect.apple.com/access/integrations/api) で作成
|
||||
2. `.p8` ファイルをダウンロード
|
||||
3. Issuer ID と Key ID をメモ
|
||||
|
||||
## 設定ファイル
|
||||
|
||||
### .env
|
||||
|
||||
```bash
|
||||
# 署名証明書
|
||||
IOS_CERTIFICATE_NAME="Apple Distribution: Your Name (TEAMID)"
|
||||
DEVELOPMENT_TEAM="TEAMID"
|
||||
|
||||
# iOS Provisioning Profile
|
||||
MOBILEPROVISION="/path/to/embedded.mobileprovision"
|
||||
|
||||
# App Store Connect API
|
||||
ASC_ISSUER_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
|
||||
ASC_KEY_ID="XXXXXXXXXX"
|
||||
ASC_KEY_PATH="/path/to/XXXXXXXXXX.p8"
|
||||
```
|
||||
|
||||
### Config/DefaultEngine.ini
|
||||
|
||||
```ini
|
||||
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
|
||||
BundleDisplayName=AppName
|
||||
BundleIdentifier=com.example.app
|
||||
IOSTeamID=TEAMID
|
||||
BundleName=com.example.app
|
||||
MetalLanguageVersion=7
|
||||
MinimumiOSVersion=IOS_17
|
||||
bAutomaticSigning=True
|
||||
bSupportsPortraitOrientation=True
|
||||
bSupportsLandscapeLeftOrientation=False
|
||||
bSupportsLandscapeRightOrientation=False
|
||||
```
|
||||
|
||||
## ビルドワークフロー
|
||||
|
||||
```bash
|
||||
# 1. iOSビルド
|
||||
./bin/build.zsh ios
|
||||
|
||||
# 2. IPA作成(署名)
|
||||
./bin/build.zsh ipa
|
||||
|
||||
# 3. App Storeにアップロード
|
||||
./bin/build.zsh upload-ios
|
||||
```
|
||||
|
||||
## コマンド詳細
|
||||
|
||||
### ios - UE5ビルド
|
||||
|
||||
```bash
|
||||
./bin/build.zsh ios
|
||||
```
|
||||
|
||||
実行内容:
|
||||
- BuildCookRun でiOS向けビルド
|
||||
- `-iterate` で増分クック(高速化)
|
||||
- 出力: `IOS/*.xcarchive`
|
||||
|
||||
### ipa - IPA作成
|
||||
|
||||
```bash
|
||||
./bin/build.zsh ipa
|
||||
```
|
||||
|
||||
実行内容:
|
||||
1. 最新の xcarchive を検出
|
||||
2. Payload フォルダに .app をコピー
|
||||
3. embedded.mobileprovision を埋め込み
|
||||
4. Entitlements を抽出
|
||||
5. Frameworks を署名
|
||||
6. メインアプリを署名
|
||||
7. ZIP圧縮して .ipa を生成
|
||||
8. 出力: `build/Airse.ipa`
|
||||
|
||||
### upload-ios - アップロード
|
||||
|
||||
```bash
|
||||
./bin/build.zsh upload-ios
|
||||
```
|
||||
|
||||
実行内容:
|
||||
- `xcrun altool` でApp Store Connectにアップロード
|
||||
- API Key認証(推奨)またはユーザー名/パスワード認証
|
||||
|
||||
## 必須ファイル
|
||||
|
||||
```
|
||||
Project/
|
||||
├── .env # 環境変数
|
||||
├── embedded.mobileprovision # iOS用プロビジョニングプロファイル
|
||||
├── XXXXXXXXXX.p8 # App Store Connect API Key
|
||||
├── Build/
|
||||
│ └── IOS/
|
||||
│ └── Resources/
|
||||
│ └── Assets.xcassets/
|
||||
│ └── AppIcon.appiconset/ # アプリアイコン
|
||||
└── Config/
|
||||
└── DefaultEngine.ini # プロジェクト設定
|
||||
```
|
||||
|
||||
## アイコン設定
|
||||
|
||||
### アイコン生成
|
||||
|
||||
```bash
|
||||
./bin/build.zsh icon [source_image.png]
|
||||
```
|
||||
|
||||
デフォルトソース: `bin/icon/airse.png`
|
||||
|
||||
生成先: `Build/IOS/Resources/Assets.xcassets/AppIcon.appiconset/`
|
||||
|
||||
### 必要なアイコンサイズ
|
||||
|
||||
| ファイル名 | サイズ | 用途 |
|
||||
|-----------|--------|------|
|
||||
| IPhoneIcon60@2x.png | 120x120 | iPhone |
|
||||
| IPadIcon76@2x.png | 152x152 | iPad |
|
||||
| IPadIcon83.5@2x.png | 167x167 | iPad Pro |
|
||||
| Icon1024.png | 1024x1024 | App Store |
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
### No valid iOS code signing certificates found
|
||||
|
||||
**原因**: Apple Distribution証明書がない
|
||||
|
||||
**解決**:
|
||||
1. Keychain Access で証明書を確認
|
||||
2. なければ Apple Developer から作成・ダウンロード
|
||||
|
||||
### mobileprovision not found
|
||||
|
||||
**原因**: Provisioning Profileが配置されていない
|
||||
|
||||
**解決**:
|
||||
```bash
|
||||
# Apple Developer からダウンロードして配置
|
||||
cp ~/Downloads/profile.mobileprovision embedded.mobileprovision
|
||||
```
|
||||
|
||||
### The bundle identifier does not match
|
||||
|
||||
**原因**: Bundle IDがProvisioning Profileと一致しない
|
||||
|
||||
**解決**:
|
||||
1. `DefaultEngine.ini` の `BundleIdentifier` を確認
|
||||
2. Provisioning Profileが正しいBundle IDで作成されているか確認
|
||||
|
||||
### クック失敗 (ExitCode=25)
|
||||
|
||||
**原因**: アセットのクックエラー
|
||||
|
||||
**解決**:
|
||||
1. `-iterate` を外してフルクック
|
||||
2. エラーログを確認: `build_ios.log`
|
||||
|
||||
### アップロード失敗
|
||||
|
||||
**原因**: API Keyの設定ミス
|
||||
|
||||
**解決**:
|
||||
1. `.env` の ASC_* 変数を確認
|
||||
2. `.p8` ファイルのパスを確認
|
||||
3. altool は `AuthKey_<KEY_ID>.p8` という名前を期待する
|
||||
|
||||
## 署名の仕組み
|
||||
|
||||
### 手動署名フロー
|
||||
|
||||
```
|
||||
1. Provisioning Profile から Entitlements を抽出
|
||||
security cms -D -i embedded.mobileprovision > profile.plist
|
||||
PlistBuddy -x -c "Print :Entitlements" profile.plist > entitlements.plist
|
||||
|
||||
2. Frameworks を署名(あれば)
|
||||
codesign -f -s "$CERT" Framework.framework
|
||||
|
||||
3. メインアプリを署名
|
||||
codesign -f -s "$CERT" --entitlements entitlements.plist App.app
|
||||
|
||||
4. IPA作成
|
||||
zip -r App.ipa Payload/
|
||||
```
|
||||
|
||||
### 自動署名 vs 手動署名
|
||||
|
||||
| 項目 | 自動署名 | 手動署名 |
|
||||
|------|---------|---------|
|
||||
| 設定 | `bAutomaticSigning=True` | `bAutomaticSigning=False` |
|
||||
| Profile | Xcode管理 | 手動配置 |
|
||||
| 柔軟性 | 低 | 高 |
|
||||
| CI/CD | 困難 | 容易 |
|
||||
|
||||
## デバイス要件
|
||||
|
||||
### 最小iOSバージョン
|
||||
|
||||
`DefaultEngine.ini`:
|
||||
```ini
|
||||
MinimumiOSVersion=IOS_17
|
||||
```
|
||||
|
||||
選択肢:
|
||||
- `IOS_15` - iOS 15以上
|
||||
- `IOS_16` - iOS 16以上
|
||||
- `IOS_17` - iOS 17以上(推奨)
|
||||
|
||||
### 対応向き
|
||||
|
||||
```ini
|
||||
bSupportsPortraitOrientation=True
|
||||
bSupportsLandscapeLeftOrientation=False
|
||||
bSupportsLandscapeRightOrientation=False
|
||||
```
|
||||
|
||||
## ビルドログ
|
||||
|
||||
ログファイルの場所:
|
||||
- UE5ビルドログ: `build_ios.log`
|
||||
- Xcodeログ: `~/Library/Logs/Unreal Engine/LocalBuildLogs/`
|
||||
|
||||
## Mac vs iOS の違い
|
||||
|
||||
| 項目 | Mac | iOS |
|
||||
|------|-----|-----|
|
||||
| 出力形式 | .pkg | .ipa |
|
||||
| Profile | .provisionprofile | .mobileprovision |
|
||||
| Sandbox | 必須(EpicWebHelper署名) | 不要 |
|
||||
| Assets.car | 再ビルド必要 | UE5が生成 |
|
||||
| アップロード | `-t macos` | `-t ios` |
|
||||
|
||||
## 参考コマンド
|
||||
|
||||
```bash
|
||||
# 証明書一覧
|
||||
security find-identity -v -p codesigning
|
||||
|
||||
# Provisioning profile の内容確認
|
||||
security cms -D -i embedded.mobileprovision
|
||||
|
||||
# IPA の内容確認
|
||||
unzip -l Airse.ipa
|
||||
|
||||
# アプリの署名確認
|
||||
codesign -dv --verbose=4 Payload/Airse.app
|
||||
|
||||
# Entitlements 確認
|
||||
codesign -d --entitlements - Payload/Airse.app
|
||||
```
|
||||
Reference in New Issue
Block a user