🛠️

[Flutter] iPhone Simulatorでアプリが起動できない

2023/08/21に公開

現象

例えば以下のようなメッセージが表示されてiPhoneのシミュレータでアプリが起動できないことがある。
Library not found の対象になるのはFirebase関連のライブラリだったり、以下のようなAdMobMediationに含まれるものだったり環境によってまちまちです。

Xcode build done.                                           218.5s
Failed to build iOS app
Error (Xcode): Library not found for -lBURelyFoundationGlobalAFN

Could not build the application for the simulator.
Error launching application on iPhone SE (3rd generation).

対策1

Xcode14.3以降への更新からシミュレータでの起動ができなくなった場合。
Deployment Targetのバージョンが低いことが考えられます。
Project自体のDeploymentTargetとして11以降を指定するのと併せて、CocoaPods関連のTargetにも全てiOS11以降を指定する必要がありますが、手動でやるのは大変なのでPodfileの記述を変更します。

Podfile
post_install do |installer|
  installer.pods_project.targets.each do |target|
  flutter_additional_ios_build_settings(target)
+    target.build_configurations.each do |config|
+      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
+    end
  end
end

対策2

Apple M1 Macでシミュレータビルドしようとした場合に起動できなかった場合。
指定されているライブラリのいずれかのバージョンが、arm64アーキテクチャ向けのビルドに対応しておらずに失敗していることが考えられます。
そのため、arm64向けのビルドをしないように設定することで回避できます。
(もしかしたらRosettaでシミュレータ起動すればこんな対策不要で起動できるかも?)

Podfile
post_install do |installer|
  installer.pods_project.targets.each do |target|
  flutter_additional_ios_build_settings(target)
+    target.build_configurations.each do |config|
+      config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
+    end
  end
end

まとめ

取りあえず両方入れとけば良いと思います。

Podfile
post_install do |installer|
  installer.pods_project.targets.each do |target|
  flutter_additional_ios_build_settings(target)
+    target.build_configurations.each do |config|
+      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
+      config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
+    end
  end
end

参考

https://stackoverflow.com/questions/75574268/missing-file-libarclite-iphoneos-a-xcode-14-3
https://qiita.com/littleossa/items/ff75b19e0ac6713941f8

Discussion