Flutterの特徴:「半自動管理」
Flutterは2層構造です:
Flutter層(Dart)
↓
Native層(Android/iOS)
目次
Flutterプロジェクトの構造
concert_manager_app/
├── lib/ ← Dartコード(Flutter)
├── android/ ← Android設定
│ ├── app/
│ │ ├── build.gradle.kts ← ここ!
│ │ └── src/main/
│ │ └── AndroidManifest.xml ← ここ!
├── ios/ ← iOS設定
└── pubspec.yaml ← Flutter設定(重要!)
pubspec.yaml(Flutter側の設定)
Flutterの「マスター設定ファイル」
name: concert_manager_app
description: イベント管理アプリ
version: 1.0.5+6 # ここが重要!
dependencies:
flutter:
sdk: flutter
http: ^1.1.0
shared_preferences: ^2.2.2
image_picker: ^1.0.5
version の意味
version: 1.0.5+6
↑ ↑
versionName versionCode
この1行が、Android・iOS両方に反映されます!
🔄 Flutterコマンドでの自動管理
① バージョン変更時
# pubspec.yaml を編集
version: 1.0.4+5 → 1.0.5+6
# ビルド時に自動反映
flutter build apk
flutter build appbundle
flutter build ios
Flutter が自動的に:
Android: build.gradle.kts の versionCode/versionName を更新
iOS: Info.plist の CFBundleVersion を更新
② パッケージ追加時
flutter pub add image_picker
Flutter が自動的に:
pubspec.yaml に追加
必要な権限を AndroidManifest.xml に追加(プラグインによる)
iOS の Info.plist にも追加
🛠️ 手動編集が必要な場合
ケース1: パーミッション追加
Flutterプラグインが自動で追加しない場合
# 手動で編集(bash)
open android/app/src/main/AndroidManifest.xml
# xml
<uses-permission android:name="android.permission.INTERNET" />
ケース2: アプリ名変更
pubspec.yaml では変更できません
# 手動で編集(bash)
open android/app/src/main/AndroidManifest.xml
# xml
<application
android:label="アプリの名前" ← ここを変更
ケース3: アプリID変更
プロジェクト作成時に決まるので、後から変更は大変
# 複数ファイルを編集する必要がある
android/app/build.gradle.kts
android/app/src/main/AndroidManifest.xml
android/app/src/main/kotlin/... (パッケージ構造)
→ 通常は変更しない!
実際の作業フロー
パターンA: 通常のバージョンアップ
# ① pubspec.yamlを編集
version: 1.0.5+6 → 1.0.6+7
# ② ビルド(自動的に反映)
flutter build appbundle --release
→ build.gradle.kts は触らない!
パターンB: パーミッション追加
# ① Flutterプラグインを追加
flutter pub add permission_handler
# ② 自動で権限が追加される場合もあるが、
# 念のため AndroidManifest.xml を確認
# ③ 必要なら手動で追加
パターンC: アプリ名変更
# ① AndroidManifest.xml を編集
android:label="アプリの名前"
# ② iOS も編集
ios/Runner/Info.plist
CFBundleDisplayName = "アプリの名前"
# ③ ビルド
flutter build appbundle --release
📊 管理方法の比較表
| 項目 | pubspec.yaml | ネイティブファイル | 自動/手動 |
| バージョン | ✅ ここで管理 | 自動反映 | 自動✅ |
| パッケージ | ✅ ここで管理 | 自動反映 | 自動 ✅ |
| アプリ名 | ❌ | ✅ 手動編集 | 手動 ⚠️ |
| アプリID | ❌ | ✅ 手動編集 | 手動 ⚠️ |
| アイコン | ❌ | ✅ 手動編集 | 手動 ⚠️ |
| パーミッション | ❌ | ✅ 手動編集 | 半自動 ⚠️ |
🎯 まとめ
Flutter の管理哲学
“`
Flutterで管理できるものは Flutterで
↓
ネイティブでしか管理できないものは手動で
編集頻度
| ファイル | 編集頻度 |
| pubspec.yaml | 毎回 🔄 |
| build.gradle.kts | ほぼ触らない ⭕ |
| AndroidManifest.xml | たまに(権限追加時など) ⚠️ |
