💻

Flutter:iOSビルド周りのエラー集

2022/10/27に公開約2,900字

※随時追加予定

【エラー内容】
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]

project/iosパスにて
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]

Podfile
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

【エラー内容】

【解決方法】

番外編

【問題】
Firebaseを使用する場合のiOSビルドがものすごく時間がかかるので、ビルド高速化設定はマストでしておきたい。 [5]

【解決方法】
Podfileに一行追加するだけ。

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

 

脚注
  1. 「【解決】Flutterで「CocoaPods’s specs repository is too out-of-date to satisfy dependencies.」というエラーが出る」 ↩︎

  2. 「M1 Mac & Xcodeで「building for iOS Simulator, but linking in object file ... for architecture arm64」エラーの対処法」 ↩︎

  3. 「[iOS] Xcode12.0で「building for iOS Simulator, but linking in object file ... for architecture arm64」エラーの対処法」 ↩︎

  4. 「iOS」 CocoaPodsによって自動生成されるターゲットのBuild Settingsを変更する ↩︎

  5. invertase/firestore-ios-sdk-frameworks ↩︎

GitHubで編集を提案

Discussion

ログインするとコメントできます