【Flutter】iOSビルド周りのエラー集
①
【エラー内容】
CocoaPodsのVerが古いからupdateしてね。
Error: CocoaPods's specs repository is too out-of-date to satisfy dependencies.
To update the CocoaPods specs, run:
pod repo update
【解決方法】
以下のコマンド手順で解決 [1]
1. rm Podfile.lock
2. brew upgrade cocoapods
3. pod install --repo-update
4. flutter clean
②
【エラー内容】
xcodeのビルド設定が上手くいってないからビルドできないよ。(arm64アーキテクチャは対応してないから除外してね)
Error (Xcode): Building for iOS Simulator, but linking in dylib built for iOS, file '/Users/<プロジェクトパス>/ios/Pods/<TARGET名>' for architecture arm64
Could not build the application for the simulator.
【解決方法】
Xcodeの以下のパスにて「Any iOS Simulator SKD : arm64」と手動で設定したら解決 [2] [3]
Xcode > Pods > [TAEGET配下のエラー対象のもの] > Build Settings > Architectures > Excluded Architectures
【補足】
上記だと手動設定なので、チーム開発とかだと皆が同じ設定しないといけないのでめんどくさい。
→Podfileを修正して、ビルド時に自動で上記の除外設定をしてくれるように設定するのが良いかと。 [4]
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
# 'arm64'除外設定対象のターゲット
arm64_excluded_target_names = ['TARGET名①','TARGET名②']
# 対象のターゲット を探す
arm64_excluded_target_names.each do |target_name|
pods_target = installer.pods_project.targets.find{ |target| target.name == target_name }
unless pods_target
raise ::Pod::Informative, "Failed to find '" << target_name << "' target"
end
# "Excluded Architectures"に"arm64"を追加
pods_target.build_configurations.each do |config|
config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
end
end
end
③
【エラー内容】
プロジェクト内でターゲット:"RunnerTest"が見つけれないよ。
[!] Unable to find a target named `RunnerTests` in project `Runner.xcodeproj`, did find `Runner`.
【解決方法】
原因がよく分からないが、以下の部分をコメントアウトしたらbuildできるようになった。
これが本質的にOKな対応なのかは不明。とりあえず問題なく動いてエラーも無くなったので良しとする。
(今後影響が出た場合は追記修正予定)
target 'Runner' do
use_frameworks!
use_modular_headers!
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
- target 'RunnerTests' do
- inherit! :search_paths
- end
+ # 以下の部分をコメントアウト
+ # target 'RunnerTests' do
+ # inherit! :search_paths
+ # end
end
④
【エラー内容】
CocoaPods設定を見つけることができないよ。
プロジェクトでCocoaPodsを使用している場合は、プロジェクトの設定にCocoaPods設定を含める必要があるよ。
[!] CocoaPods did not set the base configuration of your project because your project already has a custom config set.
In order for CocoaPods integration to work at all, please either set the base configurations of the target `Runner` to `Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig` or include the `Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig` in your build configuration (`Flutter/Release.xcconfig`).
【解決方法】
ios/Flutter/Release.xcconfigに一文追加。[5]
#include "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"
⑤
【エラー内容】
【解決方法】
番外編
【問題】
Firebaseを使用する場合のiOSビルドがものすごく時間がかかるので、ビルド高速化設定はマストでしておきたい。[6]
【解決方法】
Podfileに一行追加するだけ。
target 'Runner' do
use_frameworks!
use_modular_headers!
# iOS build の高速化 ※使用しているFirestoreバージョンによってtagの値はイジる必要あり。
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '9.6.0'
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end
-
「【解決】Flutterで「CocoaPods’s specs repository is too out-of-date to satisfy dependencies.」というエラーが出る」 ↩︎
-
「M1 Mac & Xcodeで「building for iOS Simulator, but linking in object file ... for architecture arm64」エラーの対処法」 ↩︎
-
「[iOS] Xcode12.0で「building for iOS Simulator, but linking in object file ... for architecture arm64」エラーの対処法」 ↩︎
Discussion