FlutterでiOSアプリアイコンを変更したのに反映されないときの対処法
個人的なメモ。(本記事の作成には生成AIを活用しています)
Flutterでアプリアイコンの差し替えを行う際、便利な flutter_launcher_icons
パッケージを使用することが多いですが、iOSのビルド後にアイコンが反映されないケースがありました。
今回は、実際に自分のプロジェクトで起こった事例をもとに、原因と対処方法をまとめます。
🛠 発生した問題
flutter pub run flutter_launcher_icons
を実行しても、Androidではアイコンが正しく変更されているのに、iOSアプリではアイコンが変更されないという状況に。
🔍 原因の調査
ios/Runner/Assets.xcassets ディレクトリを確認したところ
• AppIcon.appiconset は古いまま
• AppIcon-prod.appiconset は新しいアイコンに更新されていた
つまり、flavorごとのアイコンセット(AppIcon-prod.appiconset)は更新されているが、iOSが参照するデフォルトのAppIconは古いままだったということです。
✅ 解決方法
- flutter_launcher_icons の再確認
pubspec.yaml に flavor を指定している場合は、以下のような構成になっていることがあります。
flutter_launcher_icons:
android: true
ios: true
image_path: "assets/icon.png"
flavor: prod
このような場合、AppIcon-prod.appiconset のように flavor 別にアイコンが生成されます。
- Xcodeで使われるアイコンセットの確認
Flutterプロジェクトの iOS 部分(ios/Runner.xcodeproj)を Xcode で開き、“Asset Catalog” 内で使用されている AppIcon が AppIcon になっていることを確認。
→ つまり、Xcode の設定で使っているのは AppIcon.appiconset なので、このセットが更新されていなければアイコンは変更されない。
- 手動で AppIcon.appiconset を更新
今回の対応としては、以下の手順で手動で解決しました。
- flutter_launcher_icons により生成された AppIcon-prod.appiconset の中身を確認
- AppIcon.appiconset の中身を削除
- AppIcon-prod.appiconset の内容を AppIcon.appiconset にコピー
- 必要に応じて flutter clean → flutter pub get → flutter build ios
🎉 結果
手動で AppIcon.appiconset を差し替えることで、iOSでもアイコンが正しく反映されるようになりました。
✍️ まとめ
- flutter_launcher_icons は便利だが、flavor を使っている場合は生成先に注意
- Xcode が参照するアイコンセットは AppIcon.appiconset(変更されていない可能性あり)
- 必要であれば、手動で差し替えることで解決可能
手動で差し替えなくても適用できる方法があれば良いのですが・・
もしご存知の方がいらっしゃればコメントいただけますと幸いですm(_ _)m
Discussion