Info.plistについて

目次

📱 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 との対応

AndroidiOS内容
android:labelCFBundleDisplayNameアプリ名
versionNameCFBundleShortVersionStringバージョン名
versionCodeCFBundleVersionビルド番号
<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 との対応

AndroidiOS内容
applicationIdPRODUCT_BUNDLE_IDENTIFIERアプリ名
minSdkIPHONEOS_DEPLOYMENT_TARGET最低OSバージョン
dependenciesframeworks/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
    (ビルド番号も自動反映)

📊 比較表

項目AndroidiOSFlutter管理
バージョンbuild.gradle.ktsInfo.plist + project.pbxproj✅ 自動
アプリ名AndroidManifest.xmlInfo.plist⚠️ 手動
アプリIDbuild.gradle.ktsproject.pbxproj⚠️ 手動
パーミッションAndroidManifest.xmlInfo.plist⚠️ 手動
ビルド設定build.gradle.ktsproject.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
AndroidAndroidManifest.xml
(アプリ情報)
build.gradle.kts
(ビルド設定)
iOSInfo.plist
(アプリ情報)
project.pbxproj
(ビルド設定)
Flutterpubspec.yaml
(両方に自動反映)

Flutter開発者の作業

  1. pubspec.yaml を編集(バージョンなど)
  2. flutter build(自動反映)
  3. 必要に応じて手動編集
  • AndroidManifest.xml(パーミッションなど)
  • Info.plist(パーミッションなど)
目次