FlutterのプロジェクトをiOSアプリとして動かそうとすると、ビルドまでは成功するのに、端末にインストールしようとすると
Could not run build/ios/iphoneos/Runner.app on ******.
という謎のエラーが出て失敗してしまう場合があります。
この時、エラーメッセージに
Try launching Xcode and selecting “Product > Run” to fix the problem: (XCodeを開いて「Product => Run」して問題を修正してみたら)
と書いてあるので、以下の要領でそのとおりにやってみても、、
Unable to install “Runner”
と言われて失敗し、
このダイアログの「Detail」を見てみると、めちゃくちゃ長い「issue」ダイアログが表示され、
This application’s application-identifier entitlement does not match that of the installed application. These values must match for an upgrade to be allowed.
というエラーが出ている。この事象の対処法です。
一番手っ取り早いのは端末にインストールされているアプリを削除して再ビルド
このエラーメッセージは
このアプリケーションのバンドルidが、インストールされたアプリケーションのものと一致しない。アップグレードが許可されるには、これらの値が一致する必要があります。
と訳することができ、このアプリがすでに端末にインストールされていて、そのidがビルドしたものと一致しないので、アプリのアップデートができなかったということのようです。
ですので、一番手っ取り早いのは、
1)端末にインストールされているアプリを一旦アンインストールして
2)再ビルド
するとエラーは解消します。
アプリ内のデータを残したい場合はContainerを入れ替え
ただし、上記の方法だと、アプリの中に入っているデータ(Drift等を使ったデータベースのデータやアプリ内にあるファイル等)も一緒に削除されてしまいます。
ですので、アプリ内のデータを残したい場合は、
1)該当アプリのアンインストール前に、以下の要領でそのアプリの内部データ(Container)をダウンロード
2)端末からアプリをアンインストール
3)再ビルドして、アプリを再インストール
4)以下の要領で、そのアプリの内部データ(Container)を1でダウンロードしたものに入れ替え(Replace Container)
してやるとうまくいきます。
(詳しくは、以下の動画で解説していますので、よろしければご覧ください)