Flutter での Android ファイル管理

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たまに(権限追加時など) ⚠️


目次