🛠️
[Flutter] iPhone Simulatorでアプリが起動できない
現象
例えば以下のようなメッセージが表示されて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
参考
Discussion