Building for iOS Simulator, but linking in dylib built for iOS, for architecture arm64
Showing All Messages Command PhaseScriptExecution failed with a nonzero exit code
本件は、Xcode12ではiOSシミュレータにarm64を除外する必要があることが原因のようである。
1. podfileを下記の通り修正し、pod installを実行する。
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64'
end
end
end
target 'YOUR_PROJECT_NAME' do
use_frameworks!
pod 'Hoge'
end
2. Xcodeを起動し、該当するプロジェクトを開き、Build Settingsを更新する。
(1) プロジェクトのTARGETS -> Build Settings -> Architectures -> Excluded architectures で、Debug、Releaseの項にAny iOS Sumurator SDKを追加し、下記を入力する。
arm64
(2) プロジェクトのTARGETS -> Build Settings -> User-Defined -> VALID_ARCHS の項を下記の通りに変更する。
$(ARCHS_STANDARD)
(3) PodsのTARGETS -> Build Settings -> Architectures -> Excluded architectures で、全ての項(Debug、Release等)に arm64 が設定され、podfileの内容が反映されていることを確認する。
上記の設定でも、ビルドがエラーとなる場合は、下記の修正を行う。
・プロジェクトのTARGETS -> Build Settings -> Architectures -> Build Active Architecture Only で、下記を入力する。
NO
プロジェクトの環境設定内容によっては、修正箇所が若干異なる可能性があるが大体これでうまくいくようである。
参考記事:
https://stackoverflow.com/questions/63607158/xcode-12-building-for-ios-simulator-but-linking-in-object-file-built-for-ios
https://developer.apple.com/forums/thread/658424
https://developer.apple.com/forums/thread/657913