目次
📱 iOS のファイル構造
iOSは3つのファイルで管理
iOS設定
├── Info.plist ← AndroidManifest.xml に相当
├── Runner.xcodeproj/
│ └── project.pbxproj ← build.gradle.kts に相当
└── Runner.xcconfig ← 追加のビルド設定
📄 1. Info.plist
📄 1. Info.plist
役割:AndroidManifest.xml とほぼ同じ
アプリの「戸籍」
<?xml version="1.0" encoding="UTF-8"?>
<dict>
<!-- アプリ名 -->
<key>CFBundleDisplayName</key>
<string>アプリの名前</string>
<!-- バージョン -->
<key>CFBundleShortVersionString</key>
<string>1.0.5</string>
<key>CFBundleVersion</key>
<string>6</string>
<!-- パーミッション -->
<key>NSCameraUsageDescription</key>
<string>写真を撮影するためにカメラを使用します</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>写真を選択するためにフォトライブラリにアクセスします</string>
</dict>
AndroidManifest.xml との対応
| Android | iOS | 内容 |
|---|---|---|
| android:label | CFBundleDisplayName | アプリ名 |
| versionName | CFBundleShortVersionString | バージョン名 |
| versionCode | CFBundleVersion | ビルド番号 |
<uses-permission> | NS***UsageDescription | パーミッション |
project.pbxproj
役割:
build.gradle.kts に相当
主な内容(XMLではなく独自形式):
// アプリID
PRODUCT_BUNDLE_IDENTIFIER = com.webtecnica.concert_manager
// ビルド設定
IPHONEOS_DEPLOYMENT_TARGET = 12.0 // 最低iOS 12.0
// 署名設定
CODE_SIGN_IDENTITY = "Apple Development"
DEVELOPMENT_TEAM = XXXXXXXXXX
AndroidManifest.xml との対応
| Android | iOS | 内容 |
|---|---|---|
| applicationId | PRODUCT_BUNDLE_IDENTIFIER | アプリ名 |
| minSdk | IPHONEOS_DEPLOYMENT_TARGET | 最低OSバージョン |
| dependencies | frameworks/libraries | ライブラリ |
🎯 重要な違い
Android(2ファイル)
build.gradle.kts
├── バージョン ✅
├── ビルド設定 ✅
└── ライブラリ ✅
AndroidManifest.xml
├── アプリ名 ✅
├── パーミッション ✅
└── 構成要素 ✅
“`
役割が明確に分離
iOS(実質2ファイル+α)
project.pbxproj
├── バージョン ✅(でもFlutterが自動管理)
├── ビルド設定 ✅
└── ライブラリ ✅
Info.plist
├── アプリ名 ✅
├── バージョン ✅(重複!)
├── パーミッション ✅
└── 設定情報 ✅
少し重複がある
🔄 Flutter での管理(重要!)
pubspec.yaml → 両プラットフォームに反映
version: 1.0.5+6
```
**↓ flutter build で自動反映**
```
Android:
build.gradle.kts
versionCode = 6
versionName = "1.0.5"
iOS:
Info.plist
CFBundleVersion = 6
CFBundleShortVersionString = 1.0.5
project.pbxproj
(ビルド番号も自動反映)
📊 比較表
| 項目 | Android | iOS | Flutter管理 |
|---|---|---|---|
| バージョン | build.gradle.kts | Info.plist + project.pbxproj | ✅ 自動 |
| アプリ名 | AndroidManifest.xml | Info.plist | ⚠️ 手動 |
| アプリID | build.gradle.kts | project.pbxproj | ⚠️ 手動 |
| パーミッション | AndroidManifest.xml | Info.plist | ⚠️ 手動 |
| ビルド設定 | build.gradle.kts | project.pbxproj | ⚠️ 手動 |
💡 実際の編集例
Android でアプリ名変更
xml
<application
android:label="アプリの名前"
iOS でアプリ名変更
xml
CFBundleDisplayName
アプリの名前
Android でパーミッション追加
xml
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.INTERNET" />
iOS でパーミッション追加
xml
NSCameraUsageDescription
写真を撮影するためにカメラを使用します
実務での編集頻度
めったに触らない
project.pbxproj → Xcodeが自動管理 → 直接編集は危険
たまに編集
Info.plist → パーミッション追加時 → アプリ名変更時
毎回編集
pubspec.yaml → バージョンアップ → Flutter が自動反映
💡 まとめ
ファイルの役割
| プラットフォーム | 設定ファイル1 | 設定ファイル2 |
|---|---|---|
| Android | AndroidManifest.xml (アプリ情報) | build.gradle.kts (ビルド設定) |
| iOS | Info.plist (アプリ情報) | project.pbxproj (ビルド設定) |
| Flutter | pubspec.yaml (両方に自動反映) | – |
Flutter開発者の作業
- pubspec.yaml を編集(バージョンなど)
↓ - flutter build(自動反映)
↓ - 必要に応じて手動編集
- AndroidManifest.xml(パーミッションなど)
- Info.plist(パーミッションなど)
