😎
M1Macで特定のパッケージをビルドしようとするとpodに怒られる問題
概要
おそらくCPUアーキテクチャの問題だと思われますが、M1MacでiOSやMacOS向けにFlutterをビルドしようとすると
Unable to find a target named `RunnerTests` in project `Runner.xcodeproj`
というエラーが発生することがあります。
自分の場合は、このパッケージを追加すると発生したので、デバイス機能を使う系のライブラリでよく起こるのかなと邪推してます。
XCodeの仕様が変わってどうたらみたいなissueもありました
試行錯誤で一応エラーは消せたのでメモします。
env
- MacBook Pro Apple M1 16GB ( MacOS 13.1 )
- Visual Studio Code v: 1.74.3 (Universal)
- ChatGPT Extension v: 3.3.3
手法 1
macos/
や、ios
の下にあるPodfileを編集します。
根本的な解決ではないですが、RunnerTestsを除外してあげることでエラーを外すことができます。
Podfile
target 'Runner' do
use_frameworks!
use_modular_headers!
flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__))
- target 'RunnerTests' do
- inherit! :search_paths
- end
+ # target 'RunnerTests' do
+ # inherit! :search_paths
+ # end
end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_macos_build_settings(target)
end
end
手法 2
XCodeを使って見つからないと言われているRunnerTests自体を新しく作成してしまう方法です。
確かにこの方法でもエラーを排除することができました。
そもそもRunnerTests自体が統合テスト用のBundleらしいですが、どうして特定のパッケージのときだけ見つからなくなるのかはいまいち不明なので、このやり方が正しいのかは要審議だと感じます。
もしかしたらAppStoreの審査で何か言われたりするかも
手法 3
自分はこの方法ではエラーを消せませんでしたが、一応書いときます
podの設定が悪いとM1でうまくビルドできないことがあるらしく、Podfileのあるディレクトリ下で次の命令を実行すると正常に動作する場合があるようです。
ただし、自分も含めこの方法で治せなかったという記事も多く、今回のエラーと直接の関係は薄いのではないでしょうか
sudo arch -x86_64 gem install ffi
arch -x86_64 pod update
arch -x86_64 pod install
Discussion